All posts
Web design & development

Google Consent Mode v2: Setup and the Mistakes That Break Your Data

How to set up Google Consent Mode v2 correctly: the four parameters, default timing in GTM, cross-domain rules and the mistakes that silently kill conversion data.

By Mehdi Hassan8 min read

The short answer

Google Consent Mode v2 is set up correctly when a default consent state for all four parameters (ad_storage, analytics_storage, ad_user_data, ad_personalization) loads before any Google tag, your banner sends an update the moment a visitor chooses, and every domain in the journey uses the same defaults. Most broken setups fail on timing, not on the banner.

Key takeaways

  • Consent Mode v2 has four parameters; v2 added ad_user_data and ad_personalization, and both must be set.
  • The default consent command has to run before any Google tag fires, or early hits ignore consent.
  • Advanced mode sends cookieless pings while consent is denied; basic mode blocks tags entirely.
  • Every domain in the funnel, including checkout and booking tools, needs the same regional defaults.
  • Verify in Tag Assistant: check the consent state on the very first event, not after the banner closes.

Part of GA4 Setup for Marketing Websites: The Complete Guide

Consent Mode v2 is the layer between your cookie banner and your Google tags. When it works, GA4 and Google Ads respect each visitor's choice and still give you usable data. When it breaks, nothing errors out. Conversions just quietly drop, remarketing lists shrink and nobody notices for weeks. This guide is part of our GA4 setup guide for marketing websites, and it focuses on the setup details that most tutorials skip.

Google Consent Mode v2 is a set of signals that tells Google tags whether a visitor has agreed to analytics and advertising storage, so the tags can change their behavior. It doesn't show a banner or collect consent itself. Your consent management platform (CMP) does that, and Consent Mode passes the result to GA4, Google Ads and Floodlight.

Version 2 added two parameters to the original two. Google requires them for advertisers who use audience and measurement features for visitors in the European Economic Area, which is why so many accounts showed warnings when v2 rolled out.

Parameter

What it controls

Added in

analytics_storage

Cookies used for analytics, such as GA4's client ID

v1

ad_storage

Cookies used for advertising, such as Google Ads click IDs

v1

ad_user_data

Whether user data can be sent to Google for advertising

v2

ad_personalization

Whether data can be used for remarketing and personalized ads

v2

Basic consent mode blocks Google tags completely until a visitor accepts, while advanced consent mode loads the tags with consent denied and sends cookieless pings that Google uses to model the missing conversions. Advanced mode gives you more data to work with. Basic mode is simpler to defend if your legal advice is cautious.

Pros

  • Advanced mode feeds Google's conversion modeling, so reports and bidding see more of the picture
  • Tags are already loaded when consent is granted, so the first hit after acceptance isn't lost
  • Basic mode is easy to explain: nothing Google loads before a yes

Cons

  • Advanced mode still sends cookieless requests to Google before consent, which some legal teams won't accept
  • Basic mode sends nothing for visitors who ignore or reject the banner, so modeling has less to work with
  • Either mode fails silently if the default command is late

Our view: decide the mode with whoever owns privacy for the business, write the decision down, and then implement it properly. Switching modes later is easy. Running a half-configured version of either is what costs you data.

You set up Consent Mode v2 in Google Tag Manager by firing a consent default before every other tag, connecting your CMP so it sends a consent update, and letting Google tags read those signals. The order matters more than any single setting. If you're starting from a messy container, clean it first with our Google Tag Manager setup guide.

  1. Pick a CMP that supports Consent Mode v2

    Use a CMP with a native Consent Mode v2 integration or a GTM community template. For EEA traffic on Google's ad products, check that it appears on Google's list of certified CMPs.

  2. Fire the default on Consent Initialization

    In GTM, put the CMP's tag on the Consent Initialization - All Pages trigger. It must set all four parameters to denied for regions where you need opt-in, before the Google tag runs.

  3. Set regional defaults

    Use the region option to deny by default in the EEA, the UK and Switzerland, and to grant by default where your legal advice allows an opt-out model.

  4. Add wait_for_update

    Give the CMP a short window to load a returning visitor's saved choice before tags fire, so repeat visitors aren't counted as denied.

  5. Send the update on every choice

    When a visitor accepts, rejects or changes a category, the CMP must call a consent update with the new values for all four parameters, not only the two from v1.

  6. Turn on consent checks for non-Google tags

    Use GTM's additional consent settings so LinkedIn, Meta and other tags only fire when the matching category is granted.

  7. Verify in Tag Assistant

    Open GTM preview, load a page in a fresh browser and check the Consent tab on the first event. Then accept and confirm the update appears before the next GA4 hit.

The most common Consent Mode v2 mistakes are race conditions where tags fire before the default, missing v2 parameters, inconsistent defaults across domains and duplicate Google tags. Each one makes data disappear without an error message, which is why they survive for months.

Mistake

What you see

Fix

Default fires after the Google tag

First page_view has no consent state; sessions show as unassigned

Move the CMP tag to Consent Initialization

Only analytics_storage and ad_storage set

Ads account warnings; remarketing lists stop growing

Set ad_user_data and ad_personalization in default and update

Banner hard-coded plus a GTM template

Two defaults, one granted and one denied

Keep one source of consent commands

Different defaults on each domain

Conversions drop on the checkout or booking domain

Same CMP config and regions on every domain

gtag.js in the code and a Google tag in GTM

Doubled page views and conversions

Remove one; keep tags in GTM

Update only on accept

Rejections and later changes never reach tags

Fire the update on every banner action

Research from consent and analytics practitioners lists the same culprits again and again: race conditions, missing ad_user_data and ad_personalization, cross-domain defaults and duplicate GA4 and Ads tags. If your conversions dropped after adding a banner, start with those four. Our GA4 conversions troubleshooting guide covers the wider list.

Consent Mode works across multiple domains only when each domain sets its own defaults and the consent choice is carried over or asked again. Consent is stored per domain, so a visitor who accepts on your marketing site arrives on your app or booking domain with no saved choice.

There are three workable patterns. Run the same CMP on every domain with shared configuration and ask once per domain. Use a CMP that supports cross-domain consent sharing. Or keep the conversion on the main domain, for example by embedding the booking widget instead of redirecting. Whatever you pick, GA4's cross-domain measurement settings still need every domain listed, or sessions split at the hand-off.

For example, suppose a demo booking moves to another domain

For example, suppose your marketing site runs on one domain and demo bookings finish on a scheduling tool's domain. The marketing site denies by default in the EEA and updates on accept. The booking page loads its own Google tag with no default at all, so tags there behave as if consent were granted.

The result is inconsistent data and a compliance gap at the same time. The fix is to listen for the booking widget's completion event on your own domain and send the key event from there, under your own consent settings. Our guide to conversion tracking for lead-gen websites walks through that pattern.

You check Consent Mode v2 by testing three states in a clean browser: no choice yet, rejected and accepted. In each state, confirm what Tag Assistant shows for all four parameters and whether GA4 and Ads requests carry the expected consent signals.

  • No choice yet: in an opt-in region, all four parameters read denied on the first event.
  • Rejected: values stay denied, and non-Google marketing tags don't fire.
  • Accepted: an update appears before the next hit, with all four parameters granted.
  • Returning visitor: the saved choice applies on the first event of the new visit.
  • GA4 admin: the consent settings area no longer flags missing signals for ads personalization.

Repeat the check after every banner change, CMP upgrade or site migration. Consent setups break most often during redesigns, which is why we include them in our analytics continuity plan for migrations. For the banner itself, see cookie banners that comply without wrecking UX.

Frequently asked questions

Is Consent Mode v2 required outside Europe?
Google's requirement applies to advertisers using its measurement and audience features for visitors in the European Economic Area. Outside that, it isn't required by Google, but it's still useful: you can set regional defaults so only opt-in regions start denied. Local privacy laws, such as US state laws, may need their own handling, so check with your legal adviser.
Does Consent Mode v2 replace a cookie banner?
No. Consent Mode only passes the visitor's choice to Google tags. You still need a banner or CMP that asks for consent, stores the choice and lets visitors change it. Without a CMP sending updates, Consent Mode just holds its default state, which means either no data or data collected without valid consent.
Will Consent Mode v2 lower my GA4 numbers?
Yes, in opt-in regions you'll see fewer observed users and sessions than before, because people who reject aren't tracked with cookies. Advanced mode and Google's modeling recover part of that in some reports. The drop is expected. A sudden drop to near zero on one domain or event usually means a setup error instead.
Can I use Consent Mode v2 without Google Tag Manager?
Yes. You can add the consent default and update commands directly with gtag.js in your site code, as long as the default runs before the Google tag loads. GTM makes it easier to manage regional defaults and consent checks for non-Google tags, so we use it on most marketing sites.
How do I know if my CMP supports Consent Mode v2?
Check the CMP's documentation for a native Consent Mode v2 integration that sets ad_user_data and ad_personalization, not just the original two parameters. Google also publishes a list of certified CMPs for its ad products. Then test it yourself in Tag Assistant, because a supported CMP can still be configured wrongly.

· CEO & Design Director

Copywriter, designer and developer, and founder of Designify Studio. Over five years, 60+ projects across 14+ industries, for startups that have raised $300M+.

Want this done for you? Monthly retainer, $6,000.

Your ongoing design and development team, for products that keep shipping. $6,000, per month, flat fee. Book a free 30-minute call to see if it fits.

Schedule Call