Blog Updated

Google Consent Mode v2: Setup Guide and the June 2026 Change

Google Consent Mode v2 is a framework that tells Google tags what a visitor agreed to. It sends four signals: ad_storage, ad_user_data, ad_personalization, and analytics_storage. Google tags read those signals and adjust what they collect and store. It is not a cookie banner. You still need something to ask the question and pass the answer along.

Key Takeaways

  • 01Consent Mode v2 sends four signals to Google tags: ad_storage, ad_user_data, ad_personalization, and analytics_storage. The last two were added in November 2023.
  • 02On June 15, 2026 Google made Ads Consent Mode the single control over whether Google Ads receives advertising cookies and identifiers. The Google Signals toggle no longer gates it.
  • 03Basic mode holds Google tags back until someone accepts. Advanced mode loads them in a cookieless state so Google can model the gaps.
  • 04Consent Mode is not a cookie banner. It carries a decision but never asks for one, records nothing, and ignores every non-Google tracker.
  • 05ConsentStack sets the defaults and fires the update call automatically, on every plan including free.
  • 06Google Tag Gateway serves the Google tag from your own domain. A consent tool that blocks by domain cannot hold that tag back, so the denied defaults must be in place before it runs. ConsentStack sets them at parse time; keep its snippet above the tag.

Two of those four signals, ad_user_data and ad_personalization, arrived in November 2023. Since March 2024, Google Ads has required them for remarketing and conversion measurement in the European Economic Area, the United Kingdom, and Switzerland. Then, on June 15, 2026, Google changed which setting actually governs the data. Most setup guides still describe the old behavior, so that change is worth taking first.

What changed on June 15, 2026

Before that date, two separate settings jointly decided whether Google Ads received advertising cookies and identifiers from your site: the Google Signals toggle inside Google Analytics, and your Consent Mode settings. Both had to permit it.

As of June 15, 2026, Google's own documentation says Analytics "will transition to using Consent Mode (within Google Ads) as the single control for data", and that privacy choices managed via Ads Consent Mode settings "will exclusively govern how data is collected and used". The Google Signals setting keeps a narrower job: associating your Analytics data with signed-in users for behavioral reporting. Google's notice is published in Updates to Google Analytics Data Controls.

The practical consequence is simple. If you were relying on the Google Signals toggle to hold advertising data back, that lever is gone. Your Consent Mode configuration is now the only thing between a visitor's choice and Google Ads.

Check your defaults before anything else

If your Consent Mode defaults are set to granted, or you never configured Consent Mode at all, Google Ads now collects advertising data on that basis alone. A misconfiguration that the Google Signals toggle used to mask is now doing real work.

Consent Mode v2 defines four signals that matter for advertising and analytics, plus three more that cover the rest of a site's storage. A consent tool maps its categories onto all seven.

The seven Consent Mode types. The first four are the v2 advertising and analytics signals. The ConsentStack column is verified against the SDK's Google adapter, July 2026.
SignalWhat it controlsConsentStack category
ad_storageCookies and identifiers used for advertisingMarketing
ad_user_dataWhether user data may be sent to Google for advertisingMarketing
ad_personalizationWhether data may be used for personalized ads and remarketingMarketing
analytics_storageCookies and identifiers used for analyticsAnalytics
functionality_storageStorage that supports site function, such as a language choiceEssential, always granted
security_storageStorage used for security and fraud preventionEssential, always granted
personalization_storageStorage used for personalized content, such as recommendationsFunctional

Basic mode or advanced mode?

Consent Mode has two implementations, and the choice is a legal one before it is a technical one.

Basic and advanced consent mode compared.
Basic modeAdvanced mode
When Google tags loadOnly after someone acceptsOn page load, in a cookieless state
If someone declinesNo request reaches GoogleCookieless pings are sent, carrying no identifiers
Conversion modelingLimited, and needs more traffic to workMore accurate, because Google has more to model from
Trade-offCleanest to defend, weakest measurementBest measurement, but contacts Google before consent

ConsentStack defaults to basic mode for Google tags. The tag stays blocked until someone accepts, so no request reaches Google before that, and the four signals are still set up front so a tag that does load already knows what the visitor chose. The trade-off is honest: you give up the extra modeling that pre-consent pings would have fed Google. We default that way because a request before consent is still a request, and not every regulator or privacy counsel treats that as equivalent to silence. Choose on the legal position you are willing to defend, not on which one reports better numbers. One exception is a Google tag served from your own domain through Google Tag Gateway, covered below.

The legal side of that choice is covered in our guide to whether Google Analytics is GDPR compliant, which also reports how often 2,208 scanned sites sent data to Google before consent.

There are two routes, and which one applies depends on whether you already have a consent banner.

If you use a consent management platform, the platform does this for you. Cookiebot, CookieYes, Complianz and ConsentStack all set the defaults and fire the update call when someone chooses. Your job is to confirm the defaults are denied and that the platform's script loads before your Google tag, not after.

If you are wiring it by hand, Consent Mode is two gtag calls. The first sets defaults and has to run before any Google tag loads, which in practice means above your Google Tag Manager or gtag.js snippet in the head:

index.html
<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',
    functionality_storage: 'granted',
    security_storage: 'granted',
    wait_for_update: 500
  });

  gtag('set', 'ads_data_redaction', true);
  gtag('set', 'url_passthrough', true);
</script>

The three settings in that first call are the ones people search for by name. Here is what each one does, and what ConsentStack sets.

The Consent Mode settings, by name. The ConsentStack column is read from the SDK's Google adapter, September 2026.
SettingWhat it doesConsentStack sets
wait_for_updateGives your banner a budget, in milliseconds, to send the visitor's choice before Google tags act on the defaults500
ads_data_redactionStrips ad click identifiers from requests while ad_storage is deniedtrue
url_passthroughKeeps click identifiers such as gclid moving between pages in the URL instead of a cookie, so attribution survives a refusaltrue

The second call runs when someone makes a choice, and sends only what they agreed to:

javascript
gtag('consent', 'update', {
  ad_storage: 'granted',
  ad_user_data: 'granted',
  ad_personalization: 'granted',
  analytics_storage: 'granted'
});

Send the same call with 'denied' values for anything the visitor declined. Sending the update call at all is what distinguishes a working setup from a site that silently runs on defaults forever.

How ConsentStack handles it

ConsentStack sets the defaults, fires the update call, and maps its four consent categories onto all seven Consent Mode types automatically. There is no Consent Mode add-on to buy and nothing to configure: it behaves the same on the free plan as on paid ones. The details are in the platform integrations documentation.

Concretely, the SDK denies all four v2 signals by default, keeps functionality_storage and security_storage granted, sets wait_for_update to 500 milliseconds, and turns on both ads_data_redaction and url_passthrough. When a visitor chooses, marketing consent maps to ad_storage, ad_user_data and ad_personalization together, and analytics consent maps to analytics_storage.

What Google Tag Gateway changes

Google Tag Gateway for advertisers serves the Google tag from your own domain instead of googletagmanager.com. Your CDN or load balancer reserves a path on your site, loads the tag script from there, and forwards measurement requests to Google through the same path. Google's stated reasons are conversion uplift and fewer third-party interactions. In practice, a tag that loads from your own domain is much harder for ad blockers and browser tracking protection to catch. Cloudflare offers it as a one-click setting for any domain it proxies, and Google Cloud Load Balancer and other CDNs can do the same.

That is also what it changes for consent. Most consent tools, ConsentStack included, hold Google tags back by recognizing the domain they load from. A tag loaded from your own domain is not on that list. Google's own setup notes say it plainly: enabling the gateway "affects Google tag firing behavior", and "if you use consent mode, you must turn off automated script set up".

The one-click setup can put the tag above your banner

Cloudflare's dashboard setup injects the Google tag into your pages for the whole zone, and its documentation notes that an existing Google Tag Manager script on the site is overridden by the injected one. When the CDN places the tag, it decides the load order, not your page. If the tag runs before your consent tool has set the denied defaults, the first hit leaves with no consent state at all. Google's instruction is to turn that automated setup off when you use Consent Mode and keep your own tag in the page.

How the Google tag behaves under each setup, with a consent tool that blocks by domain.
SetupWhere the tag loads fromCan the tool hold the tag back?What protects the visitor
Standard Google taggoogletagmanager.comYes, basic mode works as designedBlocking until consent, plus the denied defaults
Tag Gateway, tag placed by youYour own domain, on the reserved pathNo, it is a first-party requestThe denied defaults, which must run before the tag. The tag then behaves as advanced mode
Tag Gateway, tag injected by the CDNYour own domain, on the reserved pathNo, and the CDN decides the load orderOnly the defaults, and only if they land first. Turn the automated setup off

Tag Gateway with ConsentStack, exactly as it behaves

ConsentStack's request fence treats a request to your own hostname as first-party and lets it through before any tracker rule is checked. That is deliberate, since your own site has to work. It also means a Google tag served through Tag Gateway is not held back the way one from googletagmanager.com is. With the gateway on, the Google tag runs in what Google calls advanced mode, whether or not that was the plan.

What still holds is the consent state. The ConsentStack snippet pushes the denied defaults for all four v2 signals, with wait_for_update set to 500 milliseconds, at the moment the browser parses it, before any script placed below it runs. A gateway-served tag that loads after the snippet reads those defaults, sends cookieless pings while consent is denied, and receives the update call when the visitor chooses. If the visitor declines, the update repeats the denials. The gateway changes where the tag comes from. It does not change what Consent Mode tells it.

So the rule with ConsentStack is the rule Google gives: keep the ConsentStack snippet above the Google tag in the head, place the tag yourself, and switch off the CDN's automated tag setup. The free compliance scan reads the consent state the Google tag itself records on the page, both the dataLayer and the tag's internal consent state, rather than only watching for googletagmanager.com, so it can tell you whether the denied defaults were in place when the tag ran.

How to tell whether Tag Gateway is on

Open your site's HTML source and look at the Google tag's script address. A standard tag loads from googletagmanager.com. A gateway tag loads from a path on your own domain, usually with the same ?id=G-, ?id=GTM- or ?id=AW- identifier at the end. In the browser's network panel the measurement hits show the same pattern: requests carrying /g/collect that go to your own domain on the reserved path rather than to google-analytics.com. Google's tag settings screen also lists the domains where the gateway is active. If you find it on and never turned it on, check the CDN dashboard first. Cloudflare enables it at the zone level, for every hostname and subdomain at once.

Not universally. Google Ads requires valid consent signals for remarketing and for measuring conversions from users in the European Economic Area, the United Kingdom, and Switzerland, and those features degrade without them. Outside those regions nothing forces it. It is still the only supported way to tell Google tags what a visitor consented to, so most sites end up implementing it anyway.

v1 sent two signals, ad_storage and analytics_storage. v2 keeps both and adds ad_user_data and ad_personalization. The addition matters because it separates two questions that v1 bundled together: whether your data may be sent to Google at all, and whether it may be used to personalize advertising. A visitor can now permit the first and refuse the second.

The common failure is not a wrong value, it is an update call that never fires, or a default block that loads after the Google tag and therefore does nothing. Both look fine in the banner and wrong in the data.

In Google Tag Manager, use Preview mode and watch the consent state on each tag as you accept and decline. In the browser console, inspect window.dataLayer for the consent entries and confirm both the default and the update appear, in that order. Google Tag Assistant shows the same state per tag.

For an outside view, our free Google Analytics consent checker loads your site the way a visitor would, and our testing and verification guide walks through checking each signal by hand.

Google Consent Mode v2 FAQ

See what your site sends to Google before consent

Run a free compliance scan against EU and US rules. It declines everything, then reports which Google requests fired anyway. No signup.