Next Day Online
Praat mee
Data & Compliance · Laatst bijgewerkt op 12 augustus 2026 · 8 min

Google Consent Mode v2 instellen: complete gids voor GTM, gtag.js en AdSense

Zo stel je Google Consent Mode v2 in: de keuze tussen basic en advanced, de zeven consent-signalen, implementatie via gtag.js of Google Tag Manager, de instellingen van de gratis AdSense-banner en de controle in Tag Assistant.

Google Consent Mode v2 configuratie met AdSense - alle consent parameters correct ingesteld

Google Consent Mode v2 geeft de toestemmingsstatus van je bezoekers door aan Google-tags, zodat die hun gedrag daarop aanpassen. In deze gids komen de keuze tussen de basic- en de advanced-variant aan bod, de implementatie via gtag.js of via Google Tag Manager, de instellingen van de gratis AdSense-banner en de controle achteraf. Het kopieerbare consent script staat in stap 2.

Voor wie: websites die Google Analytics, Google Ads of AdSense gebruiken en bezoekers uit de EER, het Verenigd Koninkrijk of Zwitserland hebben. De AdSense-stappen zijn geschreven voor sites die de gratis 'Privacy en berichten'-banner als toestemmingsoplossing gebruiken.

TL;DR: kies basic of advanced, plaats het default consent script BOVEN je GTM-code (stap 2), zet de consent-instelling van elke tag goed (stap 3) en controleer het resultaat in Tag Assistant (stap 4).


Kort samengevat

  • Consent Mode is de API waarmee je toestemmingsbanner aan Google-tags doorgeeft wat ze mogen doen. Een banner die de vraag stelt heb je er dus nog steeds bij nodig.
  • Er zijn zeven consent-signalen. Vier daarvan zijn relevant voor advertenties en analytics: ad_storage, ad_user_data, ad_personalization en analytics_storage.
  • Bij de basic-variant laden Google-tags pas na een keuze van de bezoeker. Bij de advanced-variant laden ze meteen en sturen ze metingen zonder cookies zolang toestemming ontbreekt.
  • Plaats het default consent script in je <head> BOVEN de GTM-container, zodat de standaardstatus bekend is voordat er tags kunnen vuren.
  • Google-tags zoals GA4, Google Ads en Floodlight hebben een ingebouwde consent check. Voor tags zonder die check, bijvoorbeeld Facebook Pixel of Hotjar, stel je de vereiste toestemming zelf in GTM in.
  • Test met Tag Assistant: op het Consent-tabblad zie je de kolommen 'On-page Default' en 'On-page Update'. Blijft dat tabblad leeg, dan staat Consent Mode niet op de pagina of is je Google-tag geblokkeerd.
  • Bij geweigerde toestemming kan Google gedrag en conversies modelleren, maar alleen als je account genoeg data verzamelt. De drempels voor GA4 staan verderop in deze gids.

Wat is Google Consent Mode v2?

Consent Mode laat je de toestemmingsstatus van bezoekers doorgeven aan Google, waarna de tags hun gedrag daarop aanpassen. De vraag aan de bezoeker stelt je banner, en Consent Mode vertaalt het antwoord naar signalen waar Google Analytics, Google Ads en Floodlight mee kunnen werken.

De zeven consent-signalen en wat ze regelen:

Signaal Wat het regelt
ad_storage Opslag zoals cookies of apparaat-ID's voor advertentiedoeleinden
ad_user_data Het sturen van gebruikersgegevens naar Google voor online advertenties
ad_personalization Gepersonaliseerde advertenties
analytics_storage Opslag voor analytics, bijvoorbeeld de duur van een bezoek
functionality_storage Opslag die de werking van de site of app ondersteunt
personalization_storage Opslag voor personalisatie, bijvoorbeeld video-aanbevelingen
security_storage Opslag voor beveiliging, zoals authenticatie en fraudepreventie

Elk signaal heeft twee mogelijke waarden: granted of denied.

Wat er gebeurt als toestemming ontbreekt

Staat een signaal op denied, dan mogen de bijbehorende cookies niet gelezen of geschreven worden. Google-tags sturen dan metingen zonder cookies. Zet je daarnaast ads_data_redaction aan, dan worden advertentie-identifiers in de netwerkverzoeken van Google Ads- en Floodlight-tags geredigeerd zolang ad_storage op denied staat, en lopen die verzoeken via een domein zonder third-party cookies zoals pagead2.googlesyndication.com. De volledige pagina-URL gaat wel gewoon mee, inclusief eventuele klikparameters; dat is een veelgemaakte aanname die niet klopt.


Basic of advanced: welke variant kies je?

Google onderscheidt twee implementaties. Het verschil zit in het moment waarop de tags laden.

Basic Advanced
Laden van tags Geblokkeerd tot de bezoeker een keuze maakt Direct, met standaardwaarden op denied
Data vóór de keuze Geen enkele, ook de toestemmingsstatus niet Metingen zonder cookies
Na toestemming Volledige meting Volledige meting
Modellering Algemeen model Adverteerder-specifiek model

De advanced-variant levert rijkere modellering op, omdat Google in dat geval iets heeft om op te modelleren. Kies je basic, dan blijft Google volledig buiten beeld tot de bezoeker akkoord gaat. Welke variant bij je site past hangt af van de juridische afweging die je organisatie maakt over meten zonder cookies. De rest van deze gids beschrijft de advanced-variant, want dat is wat het script in stap 2 doet.

Drempels voor gedragsmodellering in GA4

Modellering start niet automatisch. Voor gedragsmodellering in GA4 gelden twee drempelwaarden:

  • minstens 1.000 events per dag met analytics_storage='denied' gedurende minstens 7 dagen
  • minstens 1.000 dagelijkse gebruikers die events sturen met analytics_storage='granted' op minstens 7 van de afgelopen 28 dagen

Ook als je die aantallen haalt, is modellering niet gegarandeerd. Google hanteert daarnaast interne criteria, onder meer rond de verhouding tussen nieuwe en terugkerende gebruikers. Voor kleinere sites betekent dit in de praktijk dat de gaten in de data blijven bestaan.


Wat Google verlangt, en sinds wanneer

Wanneer je toestemming nodig hebt, volgt uit de AVG en de ePrivacy-regels. Consent Mode is het kanaal waarlangs die toestemming bij Google terechtkomt, en Google stelt daar eigen eisen bij.

  • Vanaf maart 2024 moeten bepaalde functies gebruikerstoestemming binnenhalen volgens het EU-gebruikerstoestemmingsbeleid, waaronder Klantenmatch en Ads Data Hub. Google geeft aan dat je zonder toestemmingssignalen de mogelijkheden voor advertentiepersonalisatie kwijtraakt. De signalen die daarvoor gelden zijn ad_user_data en ad_personalization, de twee die in versie 2 zijn toegevoegd.
  • Voor uitgevers geldt een aparte eis. Sinds 16 januari 2024 heb je voor gepersonaliseerde advertenties in de EER en het Verenigd Koninkrijk een door Google gecertificeerde CMP nodig die met het IAB TCF is geïntegreerd. Voor Zwitserland geldt dat sinds 31 juli 2024. Verkeer van een niet-gecertificeerde CMP komt mogelijk alleen nog in aanmerking voor niet-gepersonaliseerde of beperkte advertenties.
  • Het bericht over Europese regelgeving uit 'Privacy en berichten' van AdSense, Ad Manager en AdMob is volgens Google gecertificeerd voor die TCF-eis. Gebruik je een andere CMP, controleer dan of die op de lijst met gecertificeerde CMP's staat.

Implementatie: rechtstreeks in de code of via Tag Manager

Rechtstreeks met gtag.js

Je zet de standaardstatus met een default-commando, dat je afvuurt voordat er meetdata verstuurd wordt:

gtag('consent', 'default', {
  'ad_storage': 'denied',
  'ad_user_data': 'denied',
  'ad_personalization': 'denied',
  'analytics_storage': 'denied'
});

Zodra de bezoeker een keuze maakt, stuur je een update-commando met de nieuwe waarden:

gtag('consent', 'update', {
  'ad_storage': 'granted',
  'ad_user_data': 'granted',
  'ad_personalization': 'granted',
  'analytics_storage': 'granted'
});

Drie optionele instellingen die hierbij horen:

  • wait_for_update geeft in milliseconden aan hoe lang tags moeten wachten op een update-commando. Met de waarde 500 krijgt je toestemmingsoplossing een halve seconde de tijd voordat de tags op de standaardstatus afgaan.
  • region beperkt een default-commando tot bepaalde gebieden, met codes volgens ISO 3166-2. Als meerdere commando's elkaar overlappen, wint de meest specifieke regio.
  • gtag('set', 'url_passthrough', true) geeft klik- en sessiegegevens door via URL-parameters wanneer opslag geweigerd is. Het gaat om de parameters gclid, dclid, gclsrc, _gl en wbraid.

Via Google Tag Manager

Laad je je banner via de GTM-container, dan gebruik je de API's van Tag Manager in plaats van de gtag-commando's: setDefaultConsentState, updateConsentState en gtagSet. Google waarschuwt in die documentatie voor het alternatief, omdat gtag-commando's achter alle andere wachtende berichten in de rij komen en mogelijk niet verwerkt zijn voordat het volgende event begint. Vervang updateConsentState dus niet door gtag('consent', 'update', ...).

Elke webcontainer heeft standaard de trigger Consent Initialization - All Pages. Die is bedoeld voor tags die de toestemmingsstatus zetten, en vuurt vóór alle andere triggers. Hang je toestemmingsplatform daaraan, dan staan de consent-instellingen vast voordat de rest van je container in beweging komt. In de Community Template Gallery staan kant-en-klare sjablonen voor de bekende CMP's.


Stap 1: AdSense consent banner configureren

Open je Google AdSense-dashboard en ga naar Privacy en berichten.

Controleer deze punten:

  • Het bericht over Europese regelgeving staat actief en is gepubliceerd op je site.
  • De knopindeling met "Toestemming geven, Geen toestemming geven, Opties beheren" is geselecteerd.
  • Op de instellingenpagina van het bericht staat Zet de toestemmingsmodus aan voor advertentiedoeleinden aan. Daarmee mogen andere Google-producten de bestaande toestemmingskeuzes uit de EER, het VK en Zwitserland lezen voor advertentieopslag, advertentiepersonalisatie en gebruikersgegevens voor advertenties.
  • Meet je ook met Analytics, zet dan Toestemmingsmodus aanzetten voor analysedoeleinden aan. Dat vinkje verschijnt pas als het vorige aanstaat.

Berichten die je in Privacy en berichten maakt, ondersteunen de TCF v2.3-specificatie van het IAB. De toestemmingsinstellingen die je hier kiest, gelden voor alle sites en apps waarvoor je een bericht over Europese regelgeving hebt ingesteld.


Stap 2: Default consent script plaatsen

Dit script definieert de standaardstatus voordat je banner laadt. Alle signalen starten op denied, behalve security_storage, zodat er geen data verzameld wordt zonder toestemming.

<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}

  // Standaard: alles op denied, behalve security
  gtag('consent', 'default', {
    'ad_storage': 'denied',
    'ad_user_data': 'denied',
    'ad_personalization': 'denied',
    'analytics_storage': 'denied',
    'functionality_storage': 'denied',
    'personalization_storage': 'denied',
    'security_storage': 'granted',
    'wait_for_update': 500
  });
</script>

Plaatsing in je <head>

De volgorde luistert nauw:

  1. Eerst: dit consent script
  2. Daarna: de GTM container code

Het consent script moet geladen zijn voordat GTM start. Anders kunnen je tags al vuren voordat de default consent status bekend is.

<head>
  <!-- 1. Consent defaults -->
  <script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('consent', 'default', { ... });
  </script>

  <!-- 2. GTM container -->
  <script>(function(w,d,s,l,i){...})(window,document,'script','dataLayer','GTM-XXXX');</script>
</head>

Stap 3: GTM tags configureren

Google-tags hebben een ingebouwde consent check en passen hun gedrag aan op de toestemming die is verleend. Voor tags zonder die check stel je de controle zelf in.

Tag type Consent instelling Waarom
GA4, Google Ads, Floodlight No additional consent required Ingebouwde consent check
Facebook Pixel Require additional consent: ad_storage Geen ingebouwde check
Hotjar en andere analytics-scripts Require additional consent: analytics_storage Geen ingebouwde check
Overige custom scripts Require additional consent: het type dat bij de tag past Geen ingebouwde check

Voor Google tags (GA4, Ads):

  1. Open de tag in GTM
  2. Ga naar Advanced SettingsConsent Settings
  3. Selecteer No additional consent required

Voor third-party tags:

  1. Open de tag in GTM
  2. Ga naar Advanced SettingsConsent Settings
  3. Selecteer Require additional consent for tag to fire
  4. Voeg ad_storage toe (of het consent type dat bij de tag past)

De derde optie in dat menu is Not set, de standaardwaarde. Wil je weten welke tags nog op die stand staan, open dan het Consent Overview-scherm in je container. Dat verdeelt je tags in 'Consent Not Configured' en 'Consent Configured' en laat je de instelling voor meerdere tags tegelijk aanpassen.


Stap 4: Configuratie testen

Google raadt Tag Assistant aan om je implementatie te controleren. Start een sessie op tagassistant.google.com met de URL van je site, of gebruik GTM Preview Mode.

Test 1: default consent

Selecteer het eerste Consent-event en open het Consent-tabblad. In de kolom 'On-page Default' horen ad_storage, ad_user_data, ad_personalization en analytics_storage op Denied te staan. Alleen security_storage staat op Granted.

Test 2: na toestemming

Klik op 'Akkoord' in je banner en selecteer het meest recente Consent-event. In de kolom 'On-page Update' springen de signalen waar je toestemming voor vraagt naar Granted.

Test 3: tags vuren correct

Klik in het Summary-gedeelte op het Tags-tabblad en open een tag om te zien of die zich aan de consent-instellingen hield. Google-tags vuren pas na de consent update. Third-party tags vuren alleen als hun vereiste toestemming op Granted staat.

Test 4: controle in de Google-producten zelf

In GA4 ga je naar BeheerderVerzameling en wijziging van gegevensInstellingen voor toestemming. Daar zie je welk percentage van je verkeer en je conversies uit de EER komt, plus waarschuwingen per gegevensstream over ontbrekende signalen voor advertenties en gedragsanalyse. In Google Ads verschijnt de status 'De toestemmingsmodus is geïmplementeerd' zodra alles staat, en 'De toestemmingsmodus is geïmplementeerd en de modellering is geactiveerd' zodra de drempels gehaald zijn.


Over functionality en personalization_storage

De AdSense banner stuurt updates voor:

  • ad_storage
  • ad_user_data
  • ad_personalization
  • analytics_storage

functionality_storage en personalization_storage worden niet door AdSense aangestuurd. Dat is normaal gedrag, want deze categorieën zijn bedoeld voor andere functionaliteit dan advertenties, zoals het onthouden van een taalvoorkeur.

Belangrijk: de AVG vraagt toestemming per doel. Je mag deze categorieën dus niet automatisch meeliften op de toestemming die iemand voor advertenties of analytics geeft.


Veelgemaakte fouten

  1. Het default-commando komt te laat. Zet je de standaardstatus pas nadat de eerste tags geladen zijn, dan heeft die geen effect meer. Het commando hoort vóór elke andere code die de toestemmingsstatus gebruikt of aanpast.
  2. Alleen de oude twee signalen zetten. Een configuratie met alleen ad_storage en analytics_storage is niet compleet. Zonder ad_user_data en ad_personalization ontbreken precies de signalen die versie 2 toevoegde.
  3. gtag('consent', 'update', ...) gebruiken in een custom HTML-tag in GTM. Gebruik daar updateConsentState, anders loop je het risico dat de update te laat verwerkt wordt.
  4. Geen update-mechanisme. Blijft de status na een klik op de banner hangen op Denied, dan stuurt je banner geen update-commando. Bij een CMP van een derde partij controleer je in de instellingen van die CMP of de Consent Mode-koppeling aanstaat.
  5. TCF en Consent Mode allebei handmatig naast elkaar zetten. Google adviseert om het een of het ander te implementeren, om onbedoelde interacties te voorkomen. Bij tegenstrijdige signalen past Google de meest terughoudende combinatie toe.
  6. Testen met een oude cache. Een consent-keuze wordt onthouden. Test in een incognitovenster of leeg je cache, anders zie je de default-status nooit terug.

Veelgestelde vragen

Is Consent Mode v2 verplicht?

Consent Mode zelf komt in geen enkele wet voor. De AVG bepaalt wanneer je toestemming nodig hebt en Consent Mode is de manier om die toestemming aan Google door te geven. Sinds maart 2024 verlangt Google wel dat je toestemmingssignalen stuurt voor bepaalde functies, en zonder die signalen raak je volgens Google de mogelijkheden voor advertentiepersonalisatie kwijt. Voor uitgevers die advertenties tonen in de EER en het VK geldt sinds 16 januari 2024 bovendien de eis van een door Google gecertificeerde CMP met TCF-integratie.

Wat is het verschil tussen basic en advanced consent mode?

Bij de basic-variant laden Google-tags pas nadat de bezoeker een keuze heeft gemaakt, en gaat er vóór dat moment niets naar Google. Bij de advanced-variant laden de tags meteen met de standaardwaarden op denied en sturen ze metingen zonder cookies zolang toestemming ontbreekt. De advanced-variant geeft een adverteerder-specifiek model voor de modellering, de basic-variant een algemeen model.

Vervangt Consent Mode mijn cookiebanner?

Nee. Je hebt nog steeds een banner nodig die de vraag stelt en de keuze vastlegt. Consent Mode geeft die keuze alleen door aan de Google-tags.

Werkt dit voor Cookiebot of OneTrust?

De AdSense-stappen in deze gids gelden voor de gratis banner uit Privacy en berichten. Cookiebot en andere CMP's hebben eigen GTM-integraties met vergelijkbare functionaliteit. Voor die oplossingen staan er sjablonen in de Community Template Gallery van Tag Manager.

Mijn Consent-tabblad in Tag Assistant blijft leeg

Dat betekent dat Consent Mode niet op de pagina staat, of dat je Google-tag geblokkeerd is en niet kon laden. Controleer of het default-script daadwerkelijk in de broncode van de pagina staat en of een adblocker of scriptblokkering de tag tegenhoudt.

Mijn tags vuren niet na toestemming

Controleer in dat geval deze punten:

  1. Het consent script staat BOVEN je GTM code
  2. Je hebt je browser cache geleegd (of je test in een incognitovenster)
  3. Je GTM container is opnieuw gepubliceerd
  4. Je AdSense banner is actief en gepubliceerd

Waarom zie ik nog geen gemodelleerde data in GA4?

Modellering begint pas als je property genoeg data verzamelt. Voor gedragsmodellering vraagt Google minstens 1.000 events per dag met analytics_storage='denied' gedurende zeven dagen, plus minstens 1.000 dagelijkse gebruikers met toestemming op zeven van de afgelopen 28 dagen. Kleinere sites halen die aantallen zelden.


Checklist: Consent Mode v2 configuratie

Na deze handleiding heb je het volgende staan:

  • Keuze gemaakt tussen de basic- en de advanced-variant
  • Default consent script geplaatst vóór GTM
  • Alle signalen starten op Denied, behalve security_storage
  • ad_user_data en ad_personalization zitten in het default-commando
  • Consent banner stuurt update-commando's na een keuze
  • Google tags geconfigureerd zonder extra consent
  • Third-party tags geconfigureerd met consent vereisten
  • Geen tags meer op 'Not set' in het Consent Overview-scherm
  • Alles gecontroleerd in Tag Assistant, GA4 en Google Ads

Daarmee is de configuratie afgerond. Voeg je later een nieuwe tag toe aan je container, loop dan opnieuw door stap 3 en 4 om de consent instelling en het vuurgedrag van die tag te controleren.


Contact

Een vraag of een idee?

Over een experiment, een product of iets dat je samen wilt proberen: mail gerust.

Praat mee met de playground

Een bericht is genoeg.

Vertel kort wat je in gedachten hebt. Berichten komen direct bij Peter terecht en je krijgt binnen een werkdag antwoord.

Over Next Day Online

Alles wat hier staat, draait echt.

Next Day Online is een AI playground. We gebruiken AI agents om zelf producten te bouwen en de markt te verkennen, van contentsites tot Chrome-extensies. Wat we daarvan leren, lees je terug op de blog.