Google Consent Mode v2: a plain-language setup guide

Short answer
Google Consent Mode v2 passes the visitor's choice to Google tags through four signals: ad_storage, analytics_storage, ad_user_data and ad_personalization. Set all four to denied by default before any Google tag loads, then update them when the visitor chooses. Google requires it for advertising features used with visitors in the European Economic Area.
Key takeaways
- Consent Mode v2 has four signals; the two new ones are ad_user_data and ad_personalization.
- Defaults must be set before Google tags load, or the first hit goes out without them.
- Basic mode blocks tags until consent; advanced mode sends cookieless pings.
- Use Tag Assistant to confirm defaults and updates.
Consent Mode is how Google Analytics, Google Ads and Floodlight tags learn whether a visitor agreed to cookies. Version 2 added two signals in late 2023, and Google began requiring it for advertisers using EEA traffic in March 2024.
The four signals
| Signal | What it controls |
|---|---|
ad_storage |
Cookies used for advertising |
analytics_storage |
Cookies used for analytics, such as visit duration |
ad_user_data |
Whether user data can be sent to Google for advertising |
ad_personalization |
Whether data can be used for personalized ads and remarketing |
Each signal is either granted or denied. Your banner maps its categories to them: analytics to analytics_storage, and marketing to the three ad signals.
Basic and advanced mode
In basic mode, Google tags do not load at all until the visitor agrees. Nothing is sent before consent. In advanced mode, tags load with consent denied and send cookieless pings that Google uses for conversion and behaviour modelling. Advanced mode keeps more measurement, but it does send some data before a choice. Decide with your legal advisor which fits your regions. For Quebec visitors, many businesses choose basic mode to stay closest to off by default.
Step by step
- Load your consent script first. It must run before gtag.js or the Google Tag Manager container.
- Set all four signals to denied by default. Use region settings if you want different defaults outside the EU and Quebec.
- Map banner categories to signals. Analytics goes to analytics_storage; marketing goes to ad_storage, ad_user_data and ad_personalization.
- Send an update on every choice. When the visitor accepts, rejects or customizes, push a consent update with the new values.
- Verify with Tag Assistant. Confirm the default appears before the first tag and the update after a click.
The code, if you set it up by hand
A consent platform like North Consent sets this for you. If you are doing it manually, the default must come first in the head:
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('consent', 'default', {
ad_storage: 'denied', analytics_storage: 'denied',
ad_user_data: 'denied', ad_personalization: 'denied',
wait_for_update: 500
});
</script>
After the visitor chooses, send an update with the new values: gtag('consent', 'update', {...}).
How to check it works
Open Google Tag Assistant, connect to your site and look at the Consent tab for the first event. You should see the default state set to denied before any tag fires, and an update after you click a button. In Google Ads and GA4 admin screens, Google also shows whether consent signals are being received.
Common mistakes
- Setting defaults after the Google tag, so the first page view goes out without them.
- Only sending the two original signals and forgetting
ad_user_dataandad_personalization. - Granting everything by default for all regions to keep numbers up.
- Firing a second copy of gtag from a plugin that ignores consent.
Using Google Tag Manager? Read the GTM setup guide.
Frequently asked questions
Is Consent Mode v2 required in Canada?
Google's requirement targets traffic from the European Economic Area. Canadian law does not name Consent Mode, but it is a practical way to respect choices in Google tags, and North Consent sets it everywhere.
Does Consent Mode make a site compliant by itself?
No. It only passes the choice to Google tags. You still need a banner that asks properly and holds other trackers.
Will I lose data with Consent Mode?
You will see fewer observed sessions from people who decline. In advanced mode Google models some of the gap. Exact recovery varies by site.
Keep reading
How to set up a cookie banner with Google Tag Manager
Install a cookie consent banner through Google Tag Manager: the Consent Initialization trigger, consent settings on each tag, and how to test in Preview mode.
How to add a cookie banner to WordPress (the right way)
Add a compliant cookie consent banner to WordPress in about 10 minutes: where the script goes, how to hold trackers until consent, and how to test it.
What affects your cookie consent rate (and what you can honestly change)
What moves cookie consent rates: region rules, wording, layout, language and trust. How to measure your own rate and improve it without tricks.