What Consent Mode v2 adds
Consent Mode has four signals: ad_storage, analytics_storage, ad_user_data and ad_personalization. The last two are the v2 additions. Google asks advertisers who use its ads products with visitors from the EEA and the UK to pass these signals, so they matter for any site with European traffic.
What to check in the container
- Your consent banner (CMP) sets a default consent state before any tag fires, using the Consent Initialization trigger.
- Google tags such as GA4 and Google Ads have consent settings and read the consent state themselves.
- Non-Google marketing tags (Meta, LinkedIn, TikTok and similar) have an additional consent check such as ad_storage, or a blocking trigger.
- All four signals are updated when the visitor makes a choice.
- Custom HTML pixels are not firing regardless of consent.
Default versus update
The default command sets the consent state before the visitor has chosen, usually to denied for regions that require consent. The update command changes it once they choose. Tags that need consent wait for the update, so the default must run first, ahead of every other tag.
Common mistakes
- The consent banner loads after tags have already fired, so the default state is set too late.
- The default is set to granted for every region, which makes the banner choice irrelevant.
- Google tags are configured, but third-party pixels still fire without any consent check.
- A Custom HTML tag loads a vendor script directly, outside any consent setting.
- The declined path is never tested, so a broken denied state goes unnoticed.
Test it in Preview mode
Open Preview mode and look at the Consent tab on each event. Load the page without accepting anything and confirm that marketing tags do not fire. Then accept and confirm they do. Repeat with consent declined.
Find consent gaps automatically
Dr.GTM flags third-party marketing tags with no consent gate and other Consent Mode v2 gaps. It leaves Google's own tags out of that finding, because they read the consent state themselves and adding a check to them can stop them firing entirely. The scan is read-only.