Volgens Europese privacywetgeving mag u geen tracking-, analytics- of marketingcookies plaatsen in de browser van een bezoeker zonder zijn of haar uitdrukkelijke, geïnformeerde toestemming. Dit is niet optioneel en overtredingen leiden tot forse boetes. Het goede nieuws is dat het opzetten van een goede cookietoestemmingsoplossing in WordPress ongeveer 30 minuten duurt zodra u de vereisten begrijpt. Deze handleiding behandelt de juridische grondslag, de technische implementatie en veelvoorkomende fouten die u in de problemen kunnen brengen.
Wat de GDPR en de ePrivacy-richtlijn werkelijk vereisen
Twee EU-wetten regelen hoe websites met cookies omgaan. De GDPR (Algemene Verordening Gegevensbescherming) stelt de regels vast voor het verwerken van persoonsgegevens, terwijl de ePrivacy-richtlijn (vaak de "Cookierichtlijn" genoemd) specifiek de opslag van informatie op het apparaat van een gebruiker behandelt. Samen vormen ze een duidelijk kader:
- Artikel 6 GDPR (rechtsgrondslag): U hebt een rechtsgrondslag nodig om persoonsgegevens te verwerken. Voor cookies die gebruikers volgen, is de relevante grondslag toestemming op grond van artikel 6, lid 1, onder a). Gerechtvaardigd belang (artikel 6, lid 1, onder f)) is volgens de meeste Europese gegevensbeschermingsautoriteiten niet van toepassing op niet-essentiële cookies.
- Artikel 7 GDPR (voorwaarden voor toestemming): Toestemming moet vrijelijk gegeven, specifiek, geïnformeerd en ondubbelzinnig zijn. Het moet een actieve opt-in zijn (geen voorafgevinkte vakjes). Het intrekken van toestemming moet net zo eenvoudig zijn als het geven ervan.
- ePrivacy-richtlijn (artikel 5, lid 3): Het opslaan of openen van informatie op het apparaat van een gebruiker (inclusief cookies, localStorage en vergelijkbare technologieën) vereist voorafgaande toestemming, tenzij de cookie strikt noodzakelijk is voor de dienst die de gebruiker uitdrukkelijk heeft aangevraagd.
In de praktijk betekent dit: geen analytics, geen marketingpixels, geen embeds van sociale media, geen ingesloten video's van derden en geen advertentiecookies totdat de gebruiker op "Accepteren" klikt. Strikt noodzakelijke cookies (zoals sessiecookies voor een winkelwagentje of authenticatiecookies) vereisen geen toestemming.
Cookiecategorieën begrijpen
Een goede toestemmingsimplementatie verdeelt cookies in groepen, zodat gebruikers gedetailleerde keuzes kunnen maken. Hier zijn de standaardcategorieën:
- Strikt noodzakelijk (essentieel): Cookies die nodig zijn voor basisfunctionaliteit van de site. Voorbeelden zijn sessiecookies (bijv. de WordPress-inlogcookie
wordpress_logged_in_*), WooCommerce-winkelwagencookies, CSRF-tokens en de cookie van de cookietoestemmingsvoorkeur zelf. Deze vereisen geen toestemming en kunnen niet door de gebruiker worden geweigerd. - Functioneel (voorkeuren): Cookies die gebruikersvoorkeuren onthouden, zoals taalkeuze, themavoorkeur of regio. Deze zijn niet strikt noodzakelijk maar verbeteren de gebruikerservaring. Ze vereisen toestemming.
- Analytics (statistieken): Cookies die worden geplaatst door tools zoals Google Analytics, Matomo of Plausible en die meten hoe bezoekers uw site gebruiken. Zelfs "anonieme" analyticscookies vereisen meestal toestemming in de EU, tenzij u een privacyvriendelijke tool gebruikt die helemaal geen cookies plaatst (zoals Plausible of Fathom in cookieless-modus).
- Marketing (advertenties): Cookies van advertentienetwerken, retargetingplatforms en pixels van sociale media (Facebook Pixel, Google Ads, LinkedIn Insight Tag). Deze vereisen altijd toestemming.
Complianz instellen (aanbevolen voor de meeste sites)
- Installeer Complianz - GDPR/CCPA Cookie Consent uit de WordPress-pluginmap.
- Voer de installatiewizard uit. Complianz vraagt naar de locatie van uw bedrijf, de regio's die u bedient en welke diensten van derden u gebruikt. Beantwoord eerlijk, want de wizard genereert uw cookiebeleid en toestemmingsconfiguratie op basis van deze antwoorden.
- De plug-in scant uw site automatisch om cookies te detecteren. Bekijk de scanresultaten en categoriseer alle cookies die niet automatisch konden worden geïdentificeerd.
- Configureer het ontwerp van de toestemmingsbanner onder Complianz > Consent Banner. Kies tussen een banner boven- of onderaan, een gecentreerde popup of een zijpaneel. Zorg ervoor dat de knop "Reject All" net zo opvallend is als de knop "Accept All" (dit is een wettelijke vereiste).
- Schakel scriptblokkering in. Complianz kan bekende scripts (Google Analytics, Facebook Pixel, YouTube-embeds) automatisch blokkeren totdat de gebruiker toestemming geeft. Ga naar Integrations en controleer of uw diensten van derden vermeld staan.
- Voor aangepaste scripts die Complianz niet herkent, omhult u deze met de Complianz-placeholder. Wijzig het scripttype van
text/javascriptintext/plainen voeg eendata-category-attribuut toe. - Test door uw site te openen in een incognitovenster. Controleer voordat u cookies accepteert of er geen analytics- of marketingscripts worden geladen (controleer het tabblad Network in de DevTools van de browser). Controleer na acceptatie of de scripts correct worden geladen.
Real Cookie Banner instellen (Beste voor DACH-regio)
Real Cookie Banner is een in Duitsland ontwikkelde plug-in die een service-gebaseerde aanpak hanteert in plaats van een cookie-gebaseerde aanpak. In plaats van afzonderlijke cookies te categoriseren, configureert u elke service (Google Analytics, YouTube, Google Maps, etc.) en de plug-in handelt de rest af. Deze aanpak sluit goed aan bij de Duitse interpretatie van de GDPR.
- Installeer Real Cookie Banner uit de WordPress-pluginmap.
- Voer de installatiewizard uit. De plug-in bevat een grote database met vooraf geconfigureerde servicesjablonen, zodat u geen cookienamen of bewaartermijnen handmatig hoeft in te voeren voor veelvoorkomende diensten.
- Voor elke gedetecteerde service biedt de plug-in juridisch onderzochte beschrijvingen, gegevensverwerkingsdetails en cookie-informatie. Bekijk deze en pas indien nodig aan.
- Configureer de lay-out van de toestemmingsbanner. Real Cookie Banner biedt uitgebreide aanpassingsopties voor kleuren, knopstijlen en tekst.
- De plug-in genereert een contentblocker voor ingesloten content (YouTube-video's, Google Maps, embeds van sociale media). Bezoekers zien een placeholder met een toestemmingsprompt in plaats van de ingesloten content.
CookieYes instellen
- Installeer CookieYes | GDPR Cookie Consent uit de WordPress-pluginmap of meld u aan op cookieyes.com.
- Voer de automatische cookie-scan uit. CookieYes identificeert cookies op uw site en categoriseert ze.
- Pas de uitstraling van de banner, knopkleuren en tekst aan in het CookieYes-dashboard.
- Configureer scriptblokkering voor elke cookiecategorie. CookieYes ondersteunt zowel automatische als handmatige scriptblokkering.
- CookieYes biedt ook een cookiebeleidgenerator die u op uw privacybeleidpagina kunt insluiten.
Integratie van Google Consent Mode v2
Als u Google-diensten gebruikt (Analytics, Ads, Tag Manager), moet u Google Consent Mode v2 implementeren. Sinds maart 2024 vereist Google Consent Mode voor sites die advertenties tonen aan EER-gebruikers. Zonder dit verzamelt Google Ads geen gegevens van gebruikers in de Europese Economische Ruimte.
Consent Mode v2 introduceert twee nieuwe parameters naast de oorspronkelijke:
- ad_user_data: Bepaalt of gebruikersgegevens naar Google kunnen worden verzonden voor advertentiedoeleinden.
- ad_personalization: Bepaalt of gepersonaliseerde advertenties (remarketing) zijn toegestaan.
- analytics_storage: Bepaalt of analyticscookies kunnen worden geplaatst.
- ad_storage: Bepaalt of advertentiecookies kunnen worden geplaatst.
Alle drie de aanbevolen plug-ins (Complianz, Real Cookie Banner, CookieYes) ondersteunen Google Consent Mode v2 standaard. Zorg ervoor dat u dit inschakelt in de plugin-instellingen. Wanneer een gebruiker geen toestemming heeft gegeven, stuurt Consent Mode "cookieless pings" naar Google die geaggregeerde, gemodelleerde gegevens leveren zonder individuele gebruikers te identificeren.
TCF 2.2 en het IAB-framework
Het Transparency and Consent Framework (TCF) versie 2.2, beheerd door het Interactive Advertising Bureau (IAB), is een gestandaardiseerd protocol voor het communiceren van gebruikerstoestemming naar advertentieleveranciers. Als u programmatic advertising op uw site draait (Google AdSense, header bidding, advertentienetwerken), moet uw toestemmingsoplossing TCF 2.2 ondersteunen. Hierdoor ontvangen advertentienetwerken toestemmingssignalen in een gestandaardiseerd formaat dat ze kunnen verwerken.
Niet alle gratis toestemmingsplug-ins ondersteunen TCF 2.2. Complianz biedt TCF-ondersteuning in de premiumversie. CookieYes biedt TCF 2.2 ook aan in zijn betaalde abonnementen. Als u afhankelijk bent van advertentie-inkomsten, is dit de investering waard.
Google Analytics en Tag Manager met toestemming afhandelen
De meest voorkomende setup houdt in dat Google Tag Manager (GTM) wordt geladen met Consent Mode v2 als de standaardstatus, en vervolgens de toestemming wordt bijgewerkt wanneer de gebruiker met uw banner interageert. Hier is het patroon:
<!-- Laad GTM met standaard toestemmingsstatus (geweigerd) -->
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('consent', 'default', {
'analytics_storage': 'denied',
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'wait_for_update': 500
});
</script>Uw toestemmingsplug-in roept vervolgens gtag('consent', 'update', {...}) aan wanneer de gebruiker accepteert. Als u een van de aanbevolen WordPress-plug-ins gebruikt, gebeurt dit automatisch. U hoeft deze code niet handmatig te schrijven.
De cookies van uw site handmatig auditen
Voordat u een toestemmingsoplossing instelt, is het handig om precies te weten welke cookies uw site plaatst. Zo audit u ze:
- Open uw site in een incognito-browservenster.
- Open DevTools (F12) en ga naar het tabblad Application (Chrome) of Storage (Firefox).
- Klik onder Cookies op uw domein. Noteer elke cookienaam, het domein, de vervaldatum en of deze HttpOnly of Secure is.
- Blader door verschillende pagina's, inclusief pagina's met ingesloten content (YouTube-video's, Google Maps, sociale media-feeds). Elke interactie kan extra cookies plaatsen.
- Controleer ook localStorage en sessionStorage, want deze vallen ook onder de ePrivacy-richtlijn.
- Gebruik het tabblad Network van uw browser om te identificeren welke verzoeken cookies plaatsen (zoek naar Set-Cookie response-koptekst).
InspectWP kan helpen bij deze audit. Voer een scan uit en bekijk de cookiesectie, die alle cookies vermeldt die tijdens de scan zijn gedetecteerd.
Veelvoorkomende fouten met cookietoestemming die tot boetes leiden
Europese gegevensbeschermingsautoriteiten hebben aanzienlijke boetes opgelegd voor cookie-overtredingen. Hier zijn de meest voorkomende fouten die u moet vermijden:
- Voorafgevinkte toestemmingsvakjes: Het Hof van Justitie van de Europese Unie oordeelde in de zaak Planet49 (2019) dat voorafgevinkte vakjes geen geldige toestemming vormen. Elke niet-essentiële categorie moet opt-in zijn.
- Cookiemuren: Het blokkeren van toegang tot uw site tenzij gebruikers alle cookies accepteren, wordt beschouwd als dwang en maakt toestemming ongeldig. Gebruikers moeten toegang kunnen krijgen tot uw inhoud, zelfs als zij alle niet-essentiële cookies weigeren.
- Verwarrende afwijzingsknoppen: Het verbergen van een kleine, grijze "Reject"-knop achter een link "Manage Preferences" terwijl de knop "Accept All" groot en kleurrijk is, is een dark pattern. De Franse CNIL heeft Google deels hiervoor 150 miljoen euro beboet. Beide knoppen moeten even zichtbaar zijn.
- Geen mogelijkheid om toestemming in te trekken: Gebruikers moeten op elk moment hun cookievoorkeuren kunnen wijzigen. Voeg een permanente link of icoon toe (vaak een klein schild- of cookie-icoon in de hoek) dat het toestemmingsdialoogvenster opnieuw opent.
- Cookies plaatsen vóór toestemming: Als uw analyticsscript wordt geactiveerd voordat de toestemmingsbanner überhaupt wordt weergegeven, overtreedt u de wet, ongeacht hoe mooi uw banner eruitziet. Gebruik de DevTools van uw browser om de timing te verifiëren.
- Toestemming negeren voor ingesloten content: YouTube-embeds, Google Maps-iframes en widgets van sociale media plaatsen allemaal cookies. U moet deze blokkeren totdat toestemming is gegeven, meestal door de embed te vervangen door een placeholder.
Uw implementatie van cookietoestemming testen
Test uw toestemmingsoplossing grondig nadat u deze hebt opgezet:
- Open uw site in incognitomodus. De toestemmingsbanner moet onmiddellijk verschijnen.
- Controleer DevTools op cookies voordat u met de banner interageert. U zou alleen strikt noodzakelijke cookies moeten zien.
- Klik op "Reject All." Er mogen geen analytics- of marketingcookies worden geplaatst. Navigeer door verschillende pagina's om dit te bevestigen.
- Wis cookies en herlaad. Klik op "Accept All." Verifieer dat analytics- en marketingscripts nu correct worden geladen.
- Wis cookies opnieuw. Klik op "Manage Preferences" en accepteer alleen analytics. Verifieer dat marketingcookies niet worden geplaatst, maar analyticscookies wel.
- Zoek na het accepteren naar de optie om toestemming in te trekken. Klik erop en verifieer dat niet-essentiële cookies worden verwijderd.
Verifieer uw cookie-installatie met InspectWP
Voer een InspectWP-scan uit om een volledige lijst te zien van cookies die uw site plaatst tijdens een paginalading. De GDPR-sectie markeert third-party cookies en externe bronnen die mogelijk toestemming vereisen. Als u Google Analytics-cookies, Facebook-cookies of andere trackingcookies in het InspectWP-rapport ziet, controleer dan of uw toestemmingsoplossing deze correct blokkeert voordat toestemming wordt gegeven. Onthoud dat InspectWP uw site scant zonder cookietoestemming te geven, dus elke trackingcookie die in het rapport verschijnt, duidt op een potentieel compliance-probleem.