Help us fix this page
If you found a broken link, missing page, or incorrect redirect, please let us know. Your report helps us improve the website for everyone.

Privacy regulations like the GDPR and CCPA have fundamentally shifted how businesses handle user data. Google Consent Mode V2 is a framework that adjusts Google tags’ behavior based on user consent choices, enabling businesses to gather essential insights without infringing on privacy.
This article covers what Consent Mode V2 is, how it works, the difference between Basic and Advanced implementation, and practical steps for implementation.
ad_user_data and ad_personalization-alongside the existing ad_storage and analytics_storage.Google Consent Mode is a framework that adjusts how Google tags behave based on user consent choices. It enables businesses to configure Google tags to respect users’ choices while still gathering valuable analytics and ad performance data.
When a user denies consent for tracking, Consent Mode ensures that tags operate in a restricted mode. Personal data is not collected, but Google can still aggregate anonymized information to provide some level of insight.
Consent states:
Note: Consent Mode communicates user consent to Google but does not save consent choices itself. You must persist consent choices using your own mechanism (first-party cookie, localStorage, or your CMP).
Consent Mode V2 was announced in November 2023 with enforcement beginning March 2024. The key changes are:
| Feature | Consent Mode V1 | Consent Mode V2 |
|---|---|---|
| Parameters | ad_storage, analytics_storage | Adds ad_user_data, ad_personalization |
| Data modeling | Limited | Enhanced AI-powered modeling |
| Mandatory | Optional | Required for EEA/UK advertisers |
| Implementation types | Single mode | Basic and Advanced |
Consent Mode V2 uses four key parameters that control how Google tags behave:
| Parameter | Purpose | Values |
|---|---|---|
ad_storage | Controls advertising cookie storage | granted / denied |
analytics_storage | Controls analytics cookie storage | granted / denied |
ad_user_data | Controls sending user data to Google for advertising purposes | granted / denied |
ad_personalization | Controls personalized advertising (e.g., remarketing) | granted / denied |
When Consent Mode is implemented:
For Google Ads, conversion tracking and retargeting work normally for consenting users. For non-consenting users, data modeling provides estimates on conversion actions.
Google reports that Consent Mode V2 can recover up to 70% of lost ad-click-to-conversion processes through AI modeling.
Consent Mode V2 offers two implementation types:
In Basic mode, Google tags do not load until a user interacts with the consent banner. No data is sent to Google before consent is given.
Best for: GDPR compliance as the priority, with a simple setup.
Trade-off: No data is collected from users who never interact with the banner.
In Advanced mode, Google tags load immediately and send anonymized pings without cookies if the user refuses consent. This allows Google to estimate missing conversions through conversion modeling.
Best for: Advertisers who want to strengthen conversion tracking and obtain more accurate analytics.
Trade-off: Requires legal validation; data is transmitted before consent is obtained.
| Mode | Tags Load | Data Before Consent | Modeling | Legal Risk |
|---|---|---|---|---|
| Basic | After consent | None | None | Low |
| Advanced | Immediately | Anonymized pings | Enhanced | Requires validation |
A CMP collects and manages user consent. Choose a CMP that integrates with Google Consent Mode V2. Many CMPs provide templates in the Community Template Gallery.
Before any tags fire, set a default consent state for each consent type. It is best practice to scope defaults to regions where consent banners are required.
With gtag.js:
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied'
});With wait_for_update for asynchronous CMPs:
gtag('consent', 'default', {
'ad_storage': 'denied',
'wait_for_update': 500 // milliseconds to wait for CMP
});When a user interacts with your consent banner, update the consent state.
Grant all consent:
function allConsentGranted() {
gtag('consent', 'update', {
'ad_user_data': 'granted',
'ad_personalization': 'granted',
'ad_storage': 'granted',
'analytics_storage': 'granted'
});
}Revoke consent:
gtag('consent', 'update', {
'analytics_storage': 'denied',
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied'
});The order of execution is critical:
Complete example:
<script>
// Define dataLayer and gtag function
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
// Set default consent to 'denied'
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied'
});
</script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'TAG_ID');
</script>
<!-- Consent update function -->
<script>
function allConsentGranted() {
gtag('consent', 'update', {
'ad_user_data': 'granted',
'ad_personalization': 'granted',
'ad_storage': 'granted',
'analytics_storage': 'granted'
});
}
</script>
<!-- Call this when user accepts -->
<button onclick="allConsentGranted()">Accept all</button>Use Google Tag Assistant or the Tag Manager preview mode to validate:
For non-consenting users, focus on broader trends and patterns rather than granular details. Use the aggregated, modeled data to optimize campaigns.
Use consent status as a segmentation dimension. Develop different strategies for consented vs. non-consented users.
Avoid over-reliance on granular insights from non-consenting users. Consider broader patterns and adapt strategies based on overall trends.
| Mistake | Fix |
|---|---|
| Setting defaults after tags fire | Set default consent before any config or event commands |
| Not persisting consent choices | Store choices in first-party cookie or localStorage |
Only setting ad_storage and analytics_storage | Also set ad_user_data and ad_personalization |
| Not testing consent updates | Use Tag Assistant to verify update triggers |
| Choosing Basic mode when Advanced is needed | Evaluate your modeling needs and legal requirements |
ad_storage, analytics_storage, ad_user_data, and ad_personalization.wait_for_update when your CMP loads asynchronously to prevent tags from firing before consent is processed.Google Consent Mode V2 is no longer optional for businesses serving European users while running Google Ads or GA4. Since March 2024, implementation has been mandatory to retain remarketing and advertising measurement capabilities.
The framework balances compliance with performance. Basic mode offers strict GDPR compliance with a simple setup. Advanced mode provides enhanced conversion modeling through anonymized signals, recovering up to 70% of lost conversions.
Implementation requires a CMP, default consent states set before tags fire, and consent updates triggered by user interactions. Test thoroughly with Tag Assistant and monitor for changes in consent behavior as privacy regulations evolve.
Need help implementing Google Consent Mode V2? Playful Sparkle has been engineering digital products since 2004, offering Web Development, SEO & Digital Marketing, and App Development services. Our team can help you implement Consent Mode V2 correctly, ensuring compliance while preserving your advertising and analytics capabilities. Contact us to discuss how we can help.