To set up consent mode v2 in Google Tag Manager, add your consent management platform's template tag on the Consent Initialization trigger, give all four consent types a default, scope denied defaults to the regions where you show a banner, and leave Google tags on their built-in consent checks. Then confirm in Tag Assistant that the defaults load before any tag and update after a banner click, from every region you set.
Decide before you tag
Check 1: How much of your traffic comes from the EEA?
Check 2: Basic or advanced consent mode?
Set it up in Tag Manager
Check 3: Add your CMP's template on Consent Initialization
setDefaultConsentState and updateConsentState.gtag('consent', ...) from a Custom HTML tag. gtag commands are queued and may not be processed before the next event, so Google says to set consent from a template tag.Check 4: Set a default for all four consent types
ad_storage, ad_user_data, ad_personalization and analytics_storage a value.ad_storage and analytics_storage cover advertising and analytics cookies, ad_personalization covers personalized ads, and ad_user_data covers sending user data to Google for advertising, which Google calls required for measurement such as enhanced conversions and tag-based conversion tracking. The last two are the v2 additions from November 2023.ad_storage and analytics_storage lacks the v2 types, and Google says the tag must load defaults for at least these four: update it. If you cannot use a template, Google's fallback is this default command above the container snippet, and the order is vital:<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied'
});
</script>Check 5: Scope the defaults by region
US granted and US-CA denied, a California visitor gets denied.Check 6: Leave Google tags on their built-in checks
Verify it
Check 7: Does the page set the defaults first?
Check 8: Does a banner click update consent?
Check 9: Does each region get its own default?
Check 10: Does Google Ads report consent mode?
After consent mode is live
Consent mode controls what Google tags store and send: when visitors decline, tags send cookieless pings and Google fills the gaps with modeling. How I measure conversions when most visitors reject tracking is in measuring conversions under consent. If you want the banner, the defaults and these checks set up and verified on your site, that is my consent-safe measurement work.
Tags
Frequently asked questions
Do I need consent mode v2 if all my traffic is from the US?
Google's EU user consent policy covers end users in the European Economic Area, the UK and Switzerland, and Google's consent mode requirements for measurement and ad personalization are written for EEA traffic. Google advises scoping denied defaults to the regions where you show a banner, so measurement is not lost where no banner applies. Whether a US state law requires a banner on your site is a question for your lawyer.
What changed from consent mode v1 to v2?
Google added two parameters in November 2023: ad_user_data, consent for sending user data to Google for advertising, and ad_personalization, consent for personalized ads. They sit next to ad_storage and analytics_storage, and Google's Tag Assistant verification steps check that all four are set.
Does advanced consent mode send data before the visitor clicks accept?
Yes. Google tags load with your defaults and, while consent is denied, send cookieless pings that can include the consent state, a timestamp, the user agent, the referrer, whether the URL carried ad-click information and a random number. Basic mode sends nothing, not even the consent state, until the visitor grants consent.
How long until Google Ads shows consent mode as active?
Google says the status can take 48 hours and in some cases up to 2 weeks. "Consent mode is implemented and modeling is active" also needs 700 ad clicks over 7 days for a domain and country grouping, so a small account can stay at "Consent mode is implemented".