Consent Management
Consent management isn't technically part of your server-side tagging setup, but it affects it a lot. But your tracking setup and your consent management are tied together whether you like it or not. Since the GDPR rulings, every website and webshop needs a Consent Management Platform that correctly handles visitors' choice in your cookiebanner. Your tracking setup then has to respect those choices. Besides GDPR, Google has its own requirements. If you want to keep using their advertising and measurement products in Europe, you need to send the right consent signals for Consent Mode v2.
What is Consent Mode v2?
Consent Mode v2 is Google's framework for adjusting tag behavior based on a visitor's cookie choices, without you having to fully block every Google tag by hand. Instead of an all-or-nothing switch, your CMP passes four consent signals into the Google tag:
analytics_storage
Whether measurement data (e.g. GA4) can be stored
ad_storage
Whether advertising cookies/identifiers can be stored
ad_user_data
Whether user data can be sent to Google for advertising purposes
ad_personalization
Whether the visitor can be used for personalized/remarketing ads
Basic vs. Advanced mode
Basic mode If a visitor denies consent, the relevant Google tags simply don't fire at all. No data reaches Google for that category. This requires you to add blocking triggers on the server so the tag can't fire without consent.
Advanced mode Google's tags fire either way, no matter the visitor's choice in your cookiebanner. The difference is what data actually goes out the door. If consent is denied, the request gets stripped of anything that could identify the person and goes out as a plain, cookieless ping instead. Google then fills in the missing pieces with modeling, basically making an educated guess about the traffic it couldn't measure properly.
With Advanced mode, an extra parameter is added to outgoing requests indicating what was and wasn't consented to:
G100
No
No
G101
No
Yes
G110
Yes
No
G111
Yes
Yes
Most setups should default to Advanced mode unless there's a specific compliance reason to hard-block Google tags, it preserves far more usable data while still respecting the visitor's choice.
Step 1: Configure Consent Mode v2 in web GTM
Load your CMP on the Consent Initialization trigger
Your CMP (Cookiebot, Consent Studio, etc) needs to load before anything else on the page. GTM has a dedicated Consent Initialization trigger reserved exactly for this, it fires before any other tag, so nothing else can activate until a consent state exists.

Assign consent requirements to each Google tag
For tags without built-in consent checks, specify which consent signal is required. The Google Tag, GA4 event tags, Conversion Linker, and Google Ads conversion tags already have built-in consent checks, so they don't need manual configuration, they read the consent state automatically.

In the Consent Overview you are able to bulk select tags to select the Additional Consent required to fire these tags.

Step 2: Send consent to your server container
Google tags carry their consent signals to GTM Server automatically as part of the request. There's nothing extra to build for those requests. Every other platform (Meta, Pinterest, LinkedIn, TikTok, etc.) needs its consent status forwarded manually, since those tags don't understand Consent Mode v2 at all.
Step 3: Configure server-side triggers based on consent
Once consent_status (or whatever you named it) arrives at your GTM Server container, each non-Google tag needs a trigger condition that checks it before firing.
Add a consent condition to each platform tag
For each platform tag (Meta CAPI, Pinterest CAPI, LinkedIn CAPI, etc.), add an extra trigger condition checking that the Event Data variable contains that platform's identifier, e.g. the Meta tag only fires if the value contains "facebook", the Pinterest tag only if it contains "pinterest".
Step 4: Validate that it's actually working
If any of these checks fail, head back to the matching step. Usually the problem is one of two things. Either the Google tag is missing a consent parameter, or one of your platform tags on the server never got its trigger condition set up.
Last updated
Was this helpful?


