Bestellen
Hosting
Domeinnaam
Ondersteuning
Ontdek

Op deze pagina

Blog / Beveiliging · · ~17 min lezen

Cookie melding op je website: de complete handleiding

In deze handleiding leer je alles over de cookie verklaring. We behandelen wat het precies is, welke soorten cookies er zijn en hoe je zelf eentje maakt.

Geschreven door: Maarten Keizer Maarten Keizer
Deel dit artikel

Samenvatting: Cookie melding verplicht

Een cookie melding (cookie banner) is verplicht onder de AVG en Nederlandse Telecommunicatiewet. Je moet bezoekers informeren over cookies en toestemming vragen vóórdat je niet-noodzakelijke cookies plaatst. Boetes kunnen oplopen tot 20 miljoen euro. Gebruik WordPressKeurigOnline zegtWordPressWordPress is een veelgebruikt CMS om eenvoudig websites en blogs mee te maken en beheren. plugins (Complianz, CookieYes) of maak een custom banner met de HTMLKeurigOnline zegtHTMLHTML is de programmeertaal voor het maken van webpagina’s./CSSKeurigOnline zegtCSSCSS (Cascading Style Sheets) is een opmaaktaal voor het vormgeven en stylen van webpagina's en documenten. code in dit artikel.

Je hebt net je website gelanceerd. Alles werkt perfect. Maar dan krijg je een bericht: "Waar is je cookie melding?" De AVG verplicht dit namelijk. En de boetes zijn niet mals: tot 20 miljoen euro of 4% van je jaarlijkse omzet.[1] Net als een SSL-certificaat, is een cookie melding een onmisbaar onderdeel van je website beveiliging.

In deze handleiding leer je alles over de cookie verklaring. We behandelen wat het precies is, welke soorten cookies er zijn, en hoe je zelf een cookie banner maakt. Je krijgt kant-en-klare code voor een custom banner. En we vergelijken de beste WordPress plugins. Binnen 15 minuten heb je je cookie melding werkend.

Dit leer je in dit artikel

  1. Cookieverklaring basics — wat het is en waarom verplicht
  2. 3 soorten cookies — functioneel, analytisch, marketing
  3. WordPress plugins — Complianz vs CookieYes vergelijking
  4. Custom banner maken — HTML, CSS en JavaScriptKeurigOnline zegtJavaScriptJavaScript is de browser- en server-scriptingtaal voor interactieve, asynchrone webapplicaties. code
  5. Voorbeeldteksten — copy-paste bannerteksten

Wat is een cookieverklaring?

Definitie: Een cookieverklaring is een pagina op je website die uitlegt welke cookies je plaatst, waarom je ze gebruikt, hoe lang ze bewaard blijven, en met wie je gegevens deelt. Het is verplicht onder de AVG en Telecommunicatiewet.

Een cookieverklaring is niet hetzelfde als een cookie banner. De banner is de popup die bezoekers zien. De verklaring is de volledige uitleg erachter.[2]

Het verschil met een privacyverklaring

Een privacyverklaring beschrijft alle persoonsgegevens die je verwerkt. Denk aan namen, e-mailadressen en betalingsgegevens. Een cookieverklaring gaat specifiek over cookies. Veel websites combineren beide. Maar technisch gezien zijn het aparte documenten.[3]

Waarom is het verplicht?

De verplichting komt uit drie wetten:

Zodra je cookies plaatst die niet strikt noodzakelijk zijn, moet je toestemming vragen. En uitleggen waarvoor je ze gebruikt.

Wat moet erin staan?

Volgens de Autoriteit Persoonsgegevens moet je cookieverklaring minimaal bevatten:[4]

  1. Welke cookies je plaatst
  2. Het doel van elke cookie
  3. Hoe lang cookies bewaard blijven
  4. Met wie je gegevens deelt (bijv. Google, Facebook)
  5. Hoe bezoekers toestemming kunnen intrekken

De 3 soorten cookies

Niet alle cookies zijn gelijk. De wet maakt onderscheid tussen drie categorieën. Dit bepaalt of je toestemming moet vragen.

Diagram van de drie cookie categorieën: functioneel, analytisch en marketing
De drie cookie categorieën met hun toestemmingsvereisten

1. Functionele cookies

Functionele cookies zijn strikt noodzakelijk voor je website. Zonder deze cookies werkt je site niet goed. Denk aan:

  • PHPSESSID — Houdt je sessie bij
  • cart_token — Onthoudt je winkelwagen
  • language — Slaat je taalvoorkeur op
  • csrf_token — Beveiligt formulieren

Toestemming nodig? Nee. Deze cookies mag je altijd plaatsen.[5]

2. Analytische cookies

Analytische cookies meten hoe bezoekers je website gebruiken. Ze helpen je site te verbeteren. Voorbeelden:

  • _ga — Google Analytics hoofd-cookie
  • _gid — Google Analytics sessie-identifier
  • _pk_id — Matomo/Piwik analytics

Toestemming nodig? Soms. Met de juiste instellingen (IP-anonimisering, geen data delen met Google) kan het zonder. Maar standaard Google Analytics 4 vereist toestemming.[6]

3. Marketing/tracking cookies

Marketing cookies volgen bezoekers over verschillende websites. Ze worden gebruikt voor gepersonaliseerde advertenties. Dit zijn de "zware" cookies:

  • _fbp — Facebook Pixel
  • fr — Facebook advertenties
  • IDE — Google DoubleClick
  • NID — Google personalisatie

Toestemming nodig? Altijd. Zonder expliciete toestemming mag je deze cookies niet plaatsen.

Overzichtstabel

Type Toestemming? Voorbeelden
Functioneel Nee PHPSESSID, cart_token
Analytisch Soms _ga, _gid
Marketing Altijd _fbp, fr, IDE

Cookie melding in WordPress

De makkelijkste manier om een cookie banner toe te voegen? Een WordPress plugin. Er zijn tientallen opties. Maar deze vier zijn het populairst en het meest compleet.

Vergelijking van WordPress cookie plugins: Complianz, CookieYes en Cookie Notice
De populairste WordPress cookie plugins vergeleken

Plugin vergelijking

Plugin Gratis Nederlands GA4 Consent Mode v2
Complianz
CookieYes
Cookie Notice Deels
GDPR Cookie Consent

Complianz installeren (aanbevolen)

Complianz is een Nederlandse plugin met 300.000+ actieve installaties. Het is speciaal gemaakt voor de AVG. Zo installeer je het:

  1. Ga naar Plugins → Nieuwe plugin in WordPressKeurigOnline zegtWordPressWordPress is een veelgebruikt CMS om eenvoudig websites en blogs mee te maken en beheren.
  2. Zoek op "Complianz"
  3. Klik op Nu installeren en daarna Activeren
  4. Je ziet nu een melding om de wizard te starten
  5. Volg de wizard. Kies je land, website type en welke cookies je gebruikt
  6. Pas het banner design aan naar je huisstijl
  7. Publiceer de cookieverklaring pagina

De wizard scant automatisch je website op cookies. Na 5-10 minuten heb je een werkende cookie banner én een complete cookieverklaring pagina.

Google Consent Mode v2 activeren

Sinds maart 2024 vereist Google Consent Mode v2 voor advertenties in de EU.[7] In Complianz zet je dit aan via:

  1. Ga naar Complianz → Instellingen
  2. Klik op Integraties
  3. Zoek "Google Consent Mode"
  4. Zet de schakelaar op Aan
  5. Sla op

Wil je volledige controle? Maak je eigen cookie banner. Hieronder vind je drie werkende voorbeelden — van simpel tot uitgebreid.

Simpele cookie banner (bottom-left)

Modern design met gelijke knoppen (AVG-compliant sinds 2025). Bottom-left positie heeft de hoogste interactie.

<link href="https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600&display=swap" rel="stylesheet">

<div id="cookie-banner" class="cookie-banner">
  <div class="cookie-icon">
    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
      <circle cx="12" cy="12" r="10"/>
      <circle cx="8" cy="9" r="1.5" fill="currentColor"/>
      <circle cx="15" cy="8" r="1" fill="currentColor"/>
      <circle cx="10" cy="14" r="1" fill="currentColor"/>
      <circle cx="16" cy="13" r="1.5" fill="currentColor"/>
    </svg>
  </div>
  <div class="cookie-content">
    <p>Wij gebruiken cookies voor een betere ervaring. <a href="/cookieverklaring">Meer info</a></p>
    <div class="cookie-buttons">
      <button onclick="decline()" class="btn">Weigeren</button>
      <button onclick="accept()" class="btn btn-primary">Accepteren</button>
    </div>
  </div>
</div>
    
@import url('https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600&display=swap');

* { box-sizing: border-box; }
body { margin: 0; font-family: 'Geist', system-ui, sans-serif; min-height: 320px; background: #fafafa; }

.cookie-banner {
  position: fixed;
  bottom: 1.25rem;
  left: 1.25rem;
  max-width: 380px;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 16px;
  padding: 1.25rem;
  box-shadow: 0 4px 24px rgba(0,0,0,0.08), 0 0 0 1px rgba(0,0,0,0.02);
  z-index: 9999;
  animation: slideUp 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

@keyframes slideUp {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: translateY(0); }
}

.cookie-icon {
  width: 40px;
  height: 40px;
  background: #f3f4f6;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 0.875rem;
  color: #6b7280;
}

.cookie-content p {
  margin: 0 0 1rem 0;
  font-size: 0.9375rem;
  line-height: 1.5;
  color: #374151;
}

.cookie-content a {
  color: #2563eb;
  text-decoration: none;
}

.cookie-content a:hover {
  text-decoration: underline;
}

.cookie-buttons {
  display: flex;
  gap: 0.625rem;
}

.btn {
  flex: 1;
  padding: 0.6875rem 1rem;
  border-radius: 10px;
  font-size: 0.875rem;
  font-weight: 500;
  font-family: inherit;
  cursor: pointer;
  transition: all 0.15s ease;
  border: 1px solid #e5e7eb;
  background: #fff;
  color: #374151;
}

.btn:hover {
  background: #f9fafb;
  border-color: #d1d5db;
}

.btn-primary {
  background: #18181b;
  color: #fff;
  border-color: #18181b;
}

.btn-primary:hover {
  background: #27272a;
  border-color: #27272a;
}
    
function accept() {
  localStorage.setItem('cookieConsent', 'accepted');
  hide();
}

function decline() {
  localStorage.setItem('cookieConsent', 'declined');
  hide();
}

function hide() {
  const banner = document.getElementById('cookie-banner');
  banner.style.animation = 'slideDown 0.3s ease forwards';
  setTimeout(() => banner.remove(), 300);
}

// Add exit animation
const style = document.createElement('style');
style.textContent = '@keyframes slideDown { to { opacity: 0; transform: translateY(16px); } }';
document.head.appendChild(style);

// Check existing consent
if (localStorage.getItem('cookieConsent')) {
  document.getElementById('cookie-banner').style.display = 'none';
}
    

Cookie modal met categorieën

Granulaire toestemming per categorie. Moderne toggle switches en gelijke "Alles weigeren" / "Alles accepteren" knoppen (AVG 2025 vereist).

<link href="https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600&display=swap" rel="stylesheet">

<div id="cookie-overlay" class="cookie-overlay">
  <div class="cookie-modal">
    <div class="modal-header">
      <h2>Privacy voorkeuren</h2>
      <p>Kies welke cookies je accepteert. Je kunt dit later aanpassen.</p>
    </div>

    <div class="cookie-categories">
      <div class="cookie-category">
        <div class="category-info">
          <strong>Noodzakelijk</strong>
          <p>Basisfuncties zoals navigatie en beveiliging.</p>
        </div>
        <span class="badge">Vereist</span>
      </div>

      <div class="cookie-category">
        <div class="category-info">
          <strong>Analytisch</strong>
          <p>Helpt ons de website te verbeteren.</p>
        </div>
        <label class="toggle">
          <input type="checkbox" id="analytics">
          <span class="slider"></span>
        </label>
      </div>

      <div class="cookie-category">
        <div class="category-info">
          <strong>Marketing</strong>
          <p>Gepersonaliseerde advertenties.</p>
        </div>
        <label class="toggle">
          <input type="checkbox" id="marketing">
          <span class="slider"></span>
        </label>
      </div>
    </div>

    <div class="modal-buttons">
      <button onclick="rejectAll()" class="btn">Alles weigeren</button>
      <button onclick="saveChoices()" class="btn">Opslaan</button>
      <button onclick="acceptAll()" class="btn btn-primary">Alles accepteren</button>
    </div>
  </div>
</div>
    
@import url('https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600&display=swap');

* { box-sizing: border-box; }
body { margin: 0; font-family: 'Geist', system-ui, sans-serif; background: #f8fafc; }

.cookie-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.4);
  backdrop-filter: blur(4px);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9999;
  padding: 1rem;
  animation: fadeIn 0.3s ease;
}

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

.cookie-modal {
  background: #fff;
  border-radius: 20px;
  padding: 1.75rem;
  max-width: 420px;
  width: 100%;
  box-shadow: 0 24px 48px rgba(0,0,0,0.12);
  animation: scaleIn 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

@keyframes scaleIn {
  from { opacity: 0; transform: scale(0.95); }
  to { opacity: 1; transform: scale(1); }
}

.modal-header h2 {
  margin: 0 0 0.375rem 0;
  font-size: 1.25rem;
  font-weight: 600;
  color: #18181b;
}

.modal-header p {
  margin: 0 0 1.25rem 0;
  font-size: 0.875rem;
  color: #71717a;
}

.cookie-categories {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.cookie-category {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem;
  background: #fafafa;
  border-radius: 12px;
  border: 1px solid #f4f4f5;
}

.category-info strong {
  display: block;
  font-size: 0.9375rem;
  font-weight: 500;
  color: #18181b;
}

.category-info p {
  margin: 0.125rem 0 0 0;
  font-size: 0.8125rem;
  color: #71717a;
}

.badge {
  font-size: 0.6875rem;
  font-weight: 500;
  color: #71717a;
  background: #f4f4f5;
  padding: 0.25rem 0.625rem;
  border-radius: 6px;
}

.toggle {
  position: relative;
  width: 44px;
  height: 24px;
  flex-shrink: 0;
}

.toggle input {
  opacity: 0;
  width: 0;
  height: 0;
}

.slider {
  position: absolute;
  inset: 0;
  background: #e4e4e7;
  border-radius: 24px;
  cursor: pointer;
  transition: 0.2s;
}

.slider:before {
  content: '';
  position: absolute;
  width: 18px;
  height: 18px;
  left: 3px;
  bottom: 3px;
  background: #fff;
  border-radius: 50%;
  transition: 0.2s;
  box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}

.toggle input:checked + .slider {
  background: #18181b;
}

.toggle input:checked + .slider:before {
  transform: translateX(20px);
}

.modal-buttons {
  display: flex;
  gap: 0.5rem;
  margin-top: 1.5rem;
}

.btn {
  flex: 1;
  padding: 0.75rem 0.875rem;
  border-radius: 10px;
  font-size: 0.875rem;
  font-weight: 500;
  font-family: inherit;
  cursor: pointer;
  transition: all 0.15s ease;
  border: 1px solid #e4e4e7;
  background: #fff;
  color: #3f3f46;
}

.btn:hover {
  background: #fafafa;
  border-color: #d4d4d8;
}

.btn-primary {
  background: #18181b;
  color: #fff;
  border-color: #18181b;
}

.btn-primary:hover {
  background: #27272a;
}
    
function saveChoices() {
  save(
    document.getElementById('analytics').checked,
    document.getElementById('marketing').checked
  );
}

function acceptAll() {
  document.getElementById('analytics').checked = true;
  document.getElementById('marketing').checked = true;
  save(true, true);
}

function rejectAll() {
  document.getElementById('analytics').checked = false;
  document.getElementById('marketing').checked = false;
  save(false, false);
}

function save(analytics, marketing) {
  const consent = { necessary: true, analytics, marketing, ts: Date.now() };
  localStorage.setItem('cookieConsent', JSON.stringify(consent));

  const overlay = document.getElementById('cookie-overlay');
  overlay.style.animation = 'fadeOut 0.2s ease forwards';
  setTimeout(() => overlay.remove(), 200);

  console.log('Consent:', consent);
}

// Add fadeOut animation
const style = document.createElement('style');
style.textContent = '@keyframes fadeOut { to { opacity: 0; } }';
document.head.appendChild(style);

// Check existing
if (localStorage.getItem('cookieConsent')) {
  document.getElementById('cookie-overlay').style.display = 'none';
}
    

Geanimeerde slide-in banner

Een subtielere optie: een banner die elegant van onderaf inschuift. Minder opdringerig, maar nog steeds AVG-compliant.

<link href="https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600&display=swap" rel="stylesheet">

<div id="cookie-banner" class="cookie-banner">
  <div class="cookie-icon">
    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
      <circle cx="12" cy="12" r="10"/>
      <circle cx="8" cy="9" r="1.5" fill="currentColor"/>
      <circle cx="15" cy="8" r="1" fill="currentColor"/>
      <circle cx="10" cy="14" r="1" fill="currentColor"/>
      <circle cx="16" cy="13" r="1.5" fill="currentColor"/>
    </svg>
  </div>
  <div class="cookie-text">
    <p>We gebruiken cookies voor een betere ervaring. <a href="/cookieverklaring">Meer info</a></p>
  </div>
  <div class="cookie-actions">
    <button onclick="decline()" class="btn">Weigeren</button>
    <button onclick="accept()" class="btn btn-primary">Accepteren</button>
  </div>
</div>
    
@import url('https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600&display=swap');

* { box-sizing: border-box; }
body {
  margin: 0;
  font-family: 'Geist', system-ui, sans-serif;
  background: #f8fafc;
  min-height: 100vh;
}

.cookie-banner {
  position: fixed;
  bottom: 1rem;
  left: 1rem;
  right: 1rem;
  transform: translateY(150%);
  background: white;
  border-radius: 16px;
  padding: 1rem 1.25rem;
  display: flex;
  align-items: center;
  gap: 1rem;
  box-shadow:
    0 4px 6px -1px rgba(0, 0, 0, 0.1),
    0 2px 4px -2px rgba(0, 0, 0, 0.1),
    0 0 0 1px rgba(0, 0, 0, 0.05);
  z-index: 9999;
  animation: slideIn 0.4s cubic-bezier(0.16, 1, 0.3, 1) 0.3s forwards;
}

@keyframes slideIn {
  from { transform: translateY(150%); }
  to { transform: translateY(0); }
}

.cookie-icon {
  color: #71717a;
  display: flex;
  flex-shrink: 0;
}

.cookie-text {
  flex: 1;
}

.cookie-text p {
  margin: 0;
  font-size: 0.875rem;
  color: #3f3f46;
  line-height: 1.5;
}

.cookie-text a {
  color: #18181b;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.cookie-text a:hover {
  color: #52525b;
}

.cookie-actions {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-shrink: 0;
}

.btn {
  font-family: 'Geist', system-ui, sans-serif;
  font-size: 0.875rem;
  font-weight: 500;
  padding: 0.5rem 1rem;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.15s ease;
  border: 1px solid #e4e4e7;
  background: #fff;
  color: #3f3f46;
}

.btn:hover {
  background: #fafafa;
  border-color: #d4d4d8;
}

.btn-primary {
  background: #18181b;
  color: #fff;
  border-color: #18181b;
}

.btn-primary:hover {
  background: #27272a;
}

.hidden {
  animation: slideOut 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes slideOut {
  to {
    transform: translateY(150%);
    opacity: 0;
  }
}

@media (max-width: 640px) {
  .cookie-banner {
    flex-wrap: wrap;
    gap: 0.75rem;
    padding: 1rem;
    left: 0.75rem;
    right: 0.75rem;
    bottom: 0.75rem;
  }
  .cookie-actions {
    width: 100%;
    justify-content: stretch;
  }
  .btn {
    flex: 1;
  }
}
    
function accept() {
  localStorage.setItem("cookieConsent", "accepted");
  hide();
}

function decline() {
  localStorage.setItem("cookieConsent", "declined");
  hide();
}

function hide() {
  const banner = document.getElementById("cookie-banner");
  banner.classList.add("hidden");
  setTimeout(() => banner.remove(), 300);
}

// Verberg als al gekozen
if (localStorage.getItem("cookieConsent")) {
  document.getElementById("cookie-banner").style.display = "none";
}
    

JavaScript voor consent opslaan

Het belangrijkste deel: de localStorage API onthoudt de keuze van de bezoeker. Zo werkt het:

// Consent opslaan
function acceptCookies() {
    localStorage.setItem('cookieConsent', 'accepted');
    document.getElementById('cookie-banner').style.display = 'none';

    // Nu kun je analytics laden
    loadGoogleAnalytics();
}

// Bij page load checken of al gekozen is
window.addEventListener('DOMContentLoaded', function() {
    const consent = localStorage.getItem('cookieConsent');

    if (consent === 'accepted') {
        // Verberg banner, laad scripts
        document.getElementById('cookie-banner').style.display = 'none';
        loadGoogleAnalytics();
    } else if (consent === 'declined') {
        // Verberg banner, laad geen tracking
        document.getElementById('cookie-banner').style.display = 'none';
    }
    // Anders: toon banner (eerste bezoek)
});

// Scripts voorwaardelijk laden
function loadGoogleAnalytics() {
    const script = document.createElement('script');
    script.src = 'https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX';
    script.async = true;
    document.head.appendChild(script);
}

Wanneer heb je cookie consent nodig?

  • E-commerce websites: Marketing cookies (Facebook Pixel, Google Ads) voor gepersonaliseerde advertenties
  • Blogs en content websites: Analytics cookies (Google Analytics) om bezoekersgedrag te meten
  • Webshops met externe diensten: Cookies van betaalproviders, reviews en social media
  • Bedrijfswebsites: Marketing automatisering tools die cookies gebruiken
  • WordPress sites: Plugins zoals Complianz of CookieYes voor AVG-compliance
  • Internationale websites: Regionale privacywetten (AVG, CCPA, LGPD)

Cookie melding voor andere platforms

Niet iedereen gebruikt WordPress. Hier zijn de opties voor andere populaire platforms.

Shopify

Shopify heeft geen ingebouwde cookie banner. Je hebt een app nodig:

Je kunt ook custom code toevoegen via Online Store → Themes → Edit code → theme.liquid.

Wix

Wix heeft een ingebouwde cookie banner:

  1. Ga naar Instellingen → Privacy & Cookies
  2. Activeer de Cookie Banner
  3. Pas de tekst en kleuren aan

De Wix banner is basis, maar voldoet aan de belangrijkste eisen.

Squarespace

Squarespace biedt ook een ingebouwde oplossing:

  1. Ga naar Settings → Cookies & Visitor Data
  2. Kies je regio (EU)
  3. Activeer de cookie banner

Wat schrijf je precies in je banner? Hier zijn drie kant-en-klare teksten. Copy-paste en je bent klaar.

Korte bannertekst

"Wij gebruiken cookies om je ervaring te verbeteren. Accepteer je alle cookies of pas je je voorkeuren aan?"

Uitgebreide bannertekst

"Deze website gebruikt cookies. Functionele cookies zijn noodzakelijk voor de werking van de site. Analytische cookies helpen ons de website te verbeteren. Marketing cookies worden gebruikt voor gepersonaliseerde advertenties. Lees onze cookieverklaring voor meer informatie."

Juridisch correcte bannertekst

"[Bedrijfsnaam] gebruikt cookies en vergelijkbare technologieën om je een optimale gebruikservaring te bieden. Door op 'Accepteren' te klikken ga je akkoord met het plaatsen van alle cookies zoals beschreven in onze cookieverklaring. Je kunt je voorkeuren altijd wijzigen via 'Cookie-instellingen'."

Best practices en AVG vereisten

Een cookie banner is niet zomaar een popup. De Autoriteit Persoonsgegevens heeft 9 vuistregels opgesteld.[8] Hier zijn de belangrijkste do's en don'ts.

AVG-vereisten voor je cookie banner

  • Duidelijke accepteer én weiger knop — Beide opties moeten even prominent zijn
  • Vooraf uitgeschakelde opties — Geen pre-ticked boxes
  • Link naar cookieverklaring — Bezoekers moeten de details kunnen lezen
  • Mogelijkheid om toestemming in te trekken — Even makkelijk als accepteren
  • Granulaire keuzes — Per cookie categorie kunnen kiezen

Let op: Dit mag niet volgens de AVG

  • Cookiewall — Je website blokkeren tot iemand accepteert
  • Vooraf aangevinkte vakjes — Toestemming moet actief zijn
  • "Door verder te browsen ga je akkoord" — Dit is geen geldige toestemming
  • Weigeren moeilijker maken dan accepteren — Beide knoppen gelijkwaardig
  • Manipulatieve kleuren — Weiger-knop niet grijs of onzichtbaar maken

De 9 vuistregels van de AP

De Autoriteit Persoonsgegevens heeft specifieke vuistregels voor cookiebanners :

  1. Informeer voordat je cookies plaatst
  2. Wacht op toestemming voordat je cookies plaatst
  3. Maak weigeren net zo makkelijk als accepteren
  4. Geen vooraf aangevinkte vakjes
  5. Bied een echte keuze (geen cookiewall)
  6. Vraag toestemming per categorie
  7. Maak intrekken van toestemming eenvoudig
  8. Herhaal de vraag niet onnodig
  9. Documenteer de toestemming

Veelgestelde vragen over cookie meldingen

Is een cookieverklaring verplicht?

Ja, zodra je cookies plaatst die niet strikt noodzakelijk zijn. Dit is verplicht volgens de AVG en de Nederlandse Telecommunicatiewet. Alleen functionele cookies (sessie, winkelwagen, CSRF-bescherming) mag je zonder toestemming plaatsen.[9]

Welke 3 soorten cookies zijn er?

Er zijn drie hoofdcategorieën: functionele cookies (noodzakelijk voor je website, geen toestemming nodig), analytische cookies (statistiekenKeurigOnline zegtStatistiekenStatistieken laten zien hoe bezoekers je website gebruiken. en bezoekersgedrag, soms toestemming nodig), en marketing/tracking cookies (advertenties en personalisatie, altijd toestemming nodig).

Moet ik toestemming vragen voor Google Analytics?

Dat hangt af van je configuratie. Met IP-anonimisering én zonder data delen met Google kan het soms zonder toestemming. Maar standaard Google Analytics 4 vereist toestemming omdat het gegevens deelt met Google. Sinds maart 2024 is Google Consent Mode v2 ook verplicht voor advertenties in de EU.[10]

Wat is het verschil tussen cookieverklaring en privacyverklaring?

Een cookieverklaring gaat specifiek over cookies: welke je plaatst, waarom, en hoe lang ze bewaard blijven. Een privacyverklaring beschrijft alle verwerkingen van persoonsgegevens: namen, e-mails, betalingen, etc. Veel websites hebben beide als aparte documenten.

Wat is een cookiewall en mag dat?

Een cookiewall blokkeert toegang tot je website totdat iemand cookies accepteert. Dit is niet toegestaan volgens de AVG. Je moet een echte keuze bieden, zonder nadelige gevolgen bij weigeren. De Autoriteit Persoonsgegevens heeft dit expliciet verboden.[11]

Hoe vaak moet ik mijn cookieverklaring updaten?

Regelmatig. Onderzoek toont aan dat ongeveer 30% van cookies maandelijks verandert door updates van plugins en diensten. Scan je website minstens elk kwartaal op nieuwe cookies. Plugins zoals Complianz kunnen dit automatisch doen.[12]

Wat zijn de boetes voor geen cookie melding?

De AVG kent boetes tot 20 miljoen euro of 4% van de wereldwijde jaaromzet, afhankelijk van welke hoger is. In de praktijk zijn boetes voor kleine websites lager, maar het risico is reëel en de Autoriteit Persoonsgegevens controleert actief.

Welke WordPress plugin is het beste voor cookie consent?

Complianz is de meest aanbevolen Nederlandse plugin met 300.000+ installaties. Het biedt automatische cookie scanning, Nederlands taalondersteuning, Google Consent Mode v2 integratie, en volledige AVG-compliance. Alternatieven zijn CookieYes en GDPR Cookie Consent.

Conclusie

Een cookie verklaring is verplicht voor elke website met niet-noodzakelijke cookies. Je hebt drie opties: een WordPress plugin zoals Complianz , een platform-specifieke oplossing, of een custom HTMLKeurigOnline zegtHTMLHTML is de programmeertaal voor het maken van webpagina’s./CSSKeurigOnline zegtCSSCSS (Cascading Style Sheets) is een opmaaktaal voor het vormgeven en stylen van webpagina's en documenten. banner.

De belangrijkste punten:

  • Drie cookie types: functioneel (geen toestemming), analytisch (soms), marketing (altijd)
  • Je banner moet accepteren en weigeren even makkelijk maken
  • Gebruik localStorage om de keuze van bezoekers op te slaan
  • WordPressKeurigOnline zegtWordPressWordPress is een veelgebruikt CMS om eenvoudig websites en blogs mee te maken en beheren. gebruikers: Complianz is de beste gratis Nederlandse plugin

Begin vandaag met je cookie melding. Met de code voorbeelden hierboven heb je binnen 15 minuten een werkende, AVG-compliant banner.


Bronnen

  1. Autoriteit Persoonsgegevens - Boetes AVG
  2. CookieFirst - Wat is een cookieverklaring
  3. ICTRecht - Cookies Factsheet
  4. Autoriteit Persoonsgegevens - Cookies themapagina
  5. Ondernemersplein - Gebruik van cookies
  6. Google - Analytics cookies uitleg
  7. Google Developers - Consent Mode
  8. Autoriteit Persoonsgegevens - 9 vuistregels cookiebanners
  9. Telecommunicatiewet artikel 11.7a
  10. Autoriteit Persoonsgegevens - Google Analytics
  11. Autoriteit Persoonsgegevens - Cookiewall verbod
  12. CookieInfo - Cookieverklaring bijhouden
  13. WordPress.org - Complianz GDPR Plugin
  14. WordPress.org - CookieYes Plugin
  15. WordPress.org - Cookie Notice Plugin
  16. MDN - Web Storage API (localStorage)
  17. MDN - Document.cookie
  18. Complianz.io - Officiële website
  19. Your Europe - GDPR voor bedrijven
  20. Rijksoverheid - Cookie regels Q&A

Bronnen en verificatie

Dit artikel is gebaseerd op 20 officiële bronnen, waaronder de Autoriteit Persoonsgegevens, Telecommunicatiewet, Google Developers documentatie, en MDN Web Docs. Alle code voorbeelden zijn getest in moderne browsers. Laatst bijgewerkt: december 2025.