← Alle resources Tutorial

Consent Mode v2 instellen in Google Tag Manager: web en server-side

Met Consent Mode vertelt je website de tags van Google waar een bezoeker mee instemde. Je banner legt de keuze vast; Consent Mode geeft die door aan Google Analytics en Google Ads, die vervolgens bepalen wat ze mogen opslaan en versturen. Versie 2 voegde twee signalen voor advertenties toe, en sinds maart 2024 verwacht Google die voor bezoekers in de Europese Economische Ruimte.

Deze gids begint in je webcontainer: default en update, de trigger Consent Initialization, basic of advanced mode, regio-defaults en een controle in Tag Assistant. Daarna volgt hij de consentstatus naar je servercontainer, waar tags van andere platforms een eigen toestemmingscheck nodig hebben. Wil je de status op elke hit zelf lezen, kijk dan in Zo lees je de parameters gcs en gcd.

De vier signalen

Consent Mode v2 werkt met vier toestemmingstypes. Elk type staat op granted of denied.

Google noemt daarnaast functionality_storage, personalization_storage en security_storage als privacyparameters. Je banner mag ze zetten, en andere tags in je container kunnen ze controleren.

Wat Google vereist, en sinds wanneer

Het EU-toestemmingsbeleid van Google geldt voor bezoekers in de EER, het Verenigd Koninkrijk en Zwitserland: je hebt geldige toestemming nodig voor cookies waar de wet dat vereist, en voor het gebruik van persoonsgegevens om advertenties te personaliseren. In januari 2024 maakte Google bekend dat adverteerders die mensen in de EER bereiken toestemmingssignalen moeten sturen om conversiemeting en doelgroepfuncties te houden. Sinds begin maart 2024 nemen properties zonder die signalen alleen bezoekers van buiten de EER op in gekoppelde advertentiedoelgroepen. Google geeft ook aan dat ad_user_data nodig is voor meting, en dat ad_user_data en ad_personalization allebei op granted moeten staan voor gepersonaliseerde advertenties.

Kort gezegd: adverteer je bij Google en heb je bezoekers uit de EER, dan moeten alle vier signalen met elke hit bij Google aankomen.

Basic of advanced mode

Er zijn twee manieren om het te implementeren. Die keuze maak je samen met wie binnen je organisatie over privacy gaat.

De stappen hieronder gelden voor allebei, met één verschil in stap 5.

1Voeg het Tag Manager-template van je CMP toe

De netste setup is het eigen template van je consenttool uit de Community Template Gallery, waar Google templates van zijn uitgelichte consentplatforms toont. Die gebruiken de consent-API's van Tag Manager, die vóór elke andere tag draaien. Ga in je webcontainer naar Tags › New › Tag configuration › Discover more tag types in the Community Template Gallery, zoek je consenttool en voeg het template toe. Gebruik je Cookiebot? In Cookiebot in Google Tag Manager lees je stap voor stap hoe het template werkt.

Zet de trigger op Consent Initialization - All Pages. Elke webcontainer heeft hem, en hij gaat altijd af vóór elke andere trigger, ook vóór Initialization. Gebruik nooit All Pages: dan kunnen andere tags al zijn afgegaan zonder toestemmingsstatus.

Met een zelfgebouwde banner zet je de default in een template dat de consent-API's gebruikt, of zet je het commando gtag('consent', 'default', ...) in de paginabron boven het Tag Manager-fragment. Google noemt de volgorde essentieel: een default die na het eerste meetcommando draait, werkt niet.

2Stel de standaardstatus in

De default is wat geldt voordat de bezoeker heeft gekozen. Voor verkeer uit de EER staan normaal alle vier signalen op denied. In een template vul je de tabel met standaardinstellingen in; in code ziet het er zo uit:

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

wait_for_update is het aantal milliseconden dat Google-tags op een update wachten voordat ze iets versturen. Google raadt minstens 500 aan als de consenttool asynchroon laadt.

3Voeg defaults per regio toe (optioneel)

Voor een andere default buiten Europa voeg je een region toe met ISO 3166-2-codes: een land zoals NL, of een deelgebied zoals US-CA. Een default zonder regio geldt voor iedereen die niet onder een regionale valt, en waar regio's overlappen, wint de meest specifieke. In een CMP-template is dit de regiokolom. Laat die leeg op je strengste rij, zodat bezoekers uit landen die je niet hebt genoemd de strenge default krijgen.

4Zorg dat de update wordt verstuurd

Als de bezoeker antwoordt, moet de banner een update met de nieuwe status sturen, voor elk van de vier signalen:

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

Controleer drie gevallen. Een weigering moet een update met denied sturen, niet alleen de banner sluiten. Een gedeeltelijke keuze moet een mix sturen. En een terugkerende bezoeker moet op elke pagina vroeg de update krijgen; een CMP-template doet dat door bij het laden zijn eigen consentcookie te lezen.

De tags van Google (de Google-tag, GA4-events, Google Ads en Floodlight) hebben ingebouwde consentchecks: ze lezen Consent Mode uit zichzelf. Andere tags, zoals de Meta-pixel, doen dat niet. Open elke tag die niet van Google is, ga naar Advanced Settings › Consent Settings en kies Require additional consent for tag to fire, met de toestemmingstypes die de tag nodig heeft (voor een advertentiepixel meestal ad_storage).

Voor basic mode geef je je Google-tags dezelfde extra toestemmingseis, zodat ze vóór toestemming helemaal niet laden.

Voor de hele container tegelijk zet je Admin › Container Settings › Enable consent overview aan. Het schildicoon op de pagina Tags laat dan zien bij welke tags toestemming is ingesteld en bij welke niet.

6Beslis over url_passthrough en ads_data_redaction

Twee optionele instellingen bepalen preciezer wat er gebeurt zolang toestemming op denied staat. Biedt het template van je CMP ze aan, zet ze dan daar aan (het voorbeeldtemplate van Google zelf heeft voor elk een vinkje); in code zet je ze met gtag('set', ...) aan.

7Controleer het in Tag Assistant

Open Tag Assistant, maak verbinding met je site en laat de banner met rust. Selecteer het eerste Consent-event in de samenvatting en open de Consent-tab, waar On-page Default alle vier signalen met je default hoort te tonen. Beantwoord daarna de banner, selecteer het laatste Consent-event en controleer of On-page Update overeenkomt met je keuze. De tab Tags laat zien welke tags zijn afgegaan en welke door toestemming werden tegengehouden. Een lege Consent-tab betekent dat Consent Mode niet draait.

Dezelfde status staat op elke hit die je site verstuurt. In het tabblad Network van je browser horen de parameters gcs en gcd van een GA4-verzoek van denied naar granted te gaan zodra je accepteert; Zo lees je de parameters gcs en gcd legt de waarden uit.

GA4 bevestigt het onder Admin › Data collection and modification › Consent settings, per datastream; volgens Google kan het na een herstel 48 tot 72 uur duren voordat de meldingen zijn bijgewerkt.

Measurebase controleert dit elke nacht: de tracking-audit meldt Google-hits zonder toestemmingsstatus en tags die afgaan voordat de banner is beantwoord, en de pagina Domain statistics laat zien hoeveel hits binnenkwamen met granted, denied of zonder status. Om tags die op toestemming wachten te testen zonder je eigen banner te beantwoorden, gebruik je Auto Grant Consent en zet je het daarna weer uit.

Server-side tagging verandert niets aan de stappen hierboven: Consent Mode wordt in de browser gezet, en elke Google-hit brengt de status in twee parameters naar je servercontainer. gcs bevat ad_storage en analytics_storage: G111 als beide granted zijn, G100 als beide denied zijn. gcd bevat alle vier de signalen en zegt per signaal of het uit de default kwam of van de bezoeker. Zo lees je de parameters gcs en gcd legt ze allebei uit.

De eigen servertags van Google, zoals de GA4-tag, lezen die status en gedragen zich ernaar. Tags van andere platforms doen dat niet: een Conversions API-tag van Meta, TikTok of LinkedIn in je servercontainer gaat af bij elk event dat aan zijn trigger voldoet, wat de bezoeker ook koos. Dat is het gat in de meeste server-side setups, en de volgende twee stappen dichten het.

Ga in je servercontainer naar Variables › User-Defined Variables › New en maak een Event Data variabele aan met als key path x-ga-gcs. De GA4-client zet daar de gcs waarde van de hit in, bijvoorbeeld G111.

Voeg daarna een voorwaarde toe aan de trigger van elke advertentietag die alleen met toestemming mag afgaan, zoals je Meta Conversions API-tag: x-ga-gcs matches RegEx ^G11. Alleen deze waarden komen erdoor: G110 en G111, de twee waarden waarbij ad_storage granted is. Een tag die van toestemming voor analytics afhangt, kijkt in plaats daarvan naar het laatste cijfer, met ^G1.1.

Twee dingen om te weten. x-ga-gcs bestaat alleen bij events van de GA4-client; events van een andere client dragen toestemming in hun eigen velden, dus kijk wat die client meegeeft. En een hit zonder Consent Mode heeft helemaal geen gcs waardoor de voorwaarde de tag tegenhoudt: los eerst de webcontainer op.

9Controleer de serverkant

Open de preview van je servercontainer naast Tag Assistant en klik door je banner. Bij elk binnenkomend verzoek toont het tabblad Verzoek de URL met de gcs waarde, en het tabblad Tags laat zien welke tags afgingen. Na een weigering vind je je Conversions API-tags onder Tags Not Fired.

Wil je tags met een toestemmingsvoorwaarde testen zonder steeds je eigen banner te beantwoorden, gebruik dan Auto Grant Consent: het zet elke hit op volledig granted voordat die je servercontainer bereikt. Zet het daarna uit, en ook voordat je een weigering test.

De fouten die we het vaakst zien

  1. Helemaal geen Consent Mode. De site toont een banner, maar de Google-hits hebben geen parameter gcs. De tags doen dan alsof alles is toegestaan. Onze tracking-audit meldt dit als "de Google-hits dragen geen toestemmingsstatus".
  2. Een default die te laat komt. De default staat in een tag op All Pages, nadat andere tags al zijn afgegaan. Gebruik Consent Initialization, of het template van je consenttool (stap 1).
  3. Een weigering zonder update. De banner sluit maar stuurt niets, dus Google kent alleen de default (stap 4).
  4. Conversions API-tags zonder toestemmingscheck. De webcontainer klopt, maar de servercontainer stuurt elk event door naar Meta of TikTok (stap 8).

Tags die toch afgaan, behandelen we uitgebreider in Tags die afgaan vóór toestemming.

Veelgestelde vragen

Is Consent Mode v2 verplicht?

Gebruik je de advertentiefuncties van Google met bezoekers uit de EER, dan vereist Google toestemmingssignalen voor conversiemeting en doelgroepen, en met Consent Mode stuur je die. Zonder Consent Mode laat Google Analytics bezoekers uit de EER weg uit gekoppelde advertentiedoelgroepen. Het vervangt geen consentbanner: je hebt nog steeds geldige toestemming nodig onder de AVG en de ePrivacy-regels.

Wat is het verschil tussen Consent Mode v1 en v2?

Versie 2 voegde ad_user_data en ad_personalization toe aan de oorspronkelijke ad_storage en analytics_storage. Een setup die alleen de oorspronkelijke twee stuurt, voldoet niet aan de EER-eis van Google.

Hoe stel ik Consent Mode v2 in GTM in?

Zet het template van je consenttool op Consent Initialization - All Pages, zet voor bezoekers uit de EER alle vier signalen standaard op denied, zorg dat elke keuze een update stuurt, geef tags die niet van Google zijn een toestemmingseis en controleer het in de Consent-tab van Tag Assistant. Met een servercontainer geef je Conversions API-tags een toestemmingscheck op x-ga-gcs.

Werkt Consent Mode v2 met server-side tagging?

Ja. Het wordt zoals altijd in de browser gezet en reist met elke Google-hit mee naar je servercontainer, in de parameters gcs en gcd van de hit. De servertags van Google lezen het; tags van andere platforms hebben de toestemmingscheck uit stap 8 nodig.

Houden Conversions API-tags rekening met Consent Mode?

Niet uit zichzelf. Een Conversions API-tag van Meta, TikTok of LinkedIn in een servercontainer gaat af op zijn trigger, wat de bezoeker ook koos, tenzij de trigger de consentstatus controleert, bijvoorbeeld met x-ga-gcs uit de event data.

Kan ik Consent Mode gebruiken zonder consentbanner?

Nee. Consent Mode geeft alleen door wat de bezoeker koos; iets moet het vragen. Alles standaard op granted zetten zonder te vragen is geen toestemming.

Basic of advanced: wat moet ik kiezen?

Advanced mode stuurt cookieloze pings zolang toestemming op denied staat, waardoor Google meer heeft om conversies mee te modelleren. Basic mode stuurt niets tot de bezoeker instemt; dat is de strengere optie. Het is een juridische keuze voor je organisatie; allebei zijn het geldige manieren om Consent Mode te implementeren.

Verder lezen

Klaar om je tracking-setup te verbeteren?

Gratis starten, geen creditcard nodig. Binnen een kwartier live.

Gratis starten