Marketing tools

How to check Google Consent Mode v2 is working: 6 tests

Article contents

Consent Mode v2 fails quietly. The banner shows up, the visitor clicks, the site looks fine, and yet Google may be receiving the wrong signal, or no signal at all. You usually find out weeks later, when conversions drop in Google Ads or GA4 stops modeling. This guide shows how to check if consent mode is enabled and working, step by step. If you have not implemented it yet, start with our Google Consent Mode v2 implementation guide, then come back here to test it.

Before testing, know what you are looking for. A correct implementation meets five conditions:

  1. A default is set first. A gtag('consent', 'default', {...}) command runs before any Google tag loads (GA4, Google Ads, Floodlight). If a tag fires before the default, it runs as if consent were granted.
  2. All four v2 signals are declared. Consent Mode v1 only had ad_storage and analytics_storage. Version 2 adds ad_user_data and ad_personalization, which Google requires to keep audiences and conversion measurement for EEA traffic.
  3. The default is denied for visitors who must consent. For EU and UK visitors, all four signals start as denied.
  4. An update follows the choice. When the visitor accepts or rejects, the CMP sends gtag('consent', 'update', {...}) with the matching values.
  5. The stored choice is sent again on every page. A returning visitor who accepted yesterday must not be treated as denied today.

The tests below check each condition in turn.

This is the fastest check, and it works on any site.

  1. Open the site in a private window so that no previous choice is stored.
  2. Open the developer tools (F12, or right-click then Inspect) and go to the Console tab.
  3. Type dataLayer and press Enter.

Expand the entries. One of the first ones should be an arguments object containing consent, default and the four signals set to denied. It must appear before the entries that load your tags (js, config). Then click "Accept all" in the banner, type dataLayer again and look for a new consent, update entry with the signals set to granted.

If you see no consent entry at all, Consent Mode is not enabled. If the config entry for your GA4 or Google Ads ID comes before the default, the tag ran without consent restrictions. FlowConsent's banner checks for exactly this race at startup and logs a console error naming the tag IDs involved.

Tag Assistant (tagassistant.google.com) is Google's own debugger and the most reliable way to test Google Consent Mode. If you use Google Tag Manager, clicking Preview in your container opens it for you.

  1. Enter your site URL and connect.
  2. In the left column, select the first event (often "Consent" or "Consent Initialization").
  3. Open the Consent tab. It shows each signal with three columns: the on-page default, the on-page update and the current state.

Before you click the banner, the default column must show denied for the four signals and the update column must be empty. Click "Accept all" on the site, then select the new event in Tag Assistant: the update column should now show granted. Repeat with "Reject all" in a fresh session: the update stays denied.

Tag Assistant also flags common problems with a warning, for example a tag that read consent before a default was set. In GTM, you can additionally turn on Consent Overview in the container settings to see which tags have built-in consent checks and which ones need an additional consent requirement. Our Google Tag Manager and Consent Mode v2 guide covers that configuration.

Test 3: read the gcs and gcd parameters in network requests

Every request a Google tag sends carries the consent state in two URL parameters. Reading them shows what Google actually received, which is what matters.

  1. Open the Network tab of the developer tools and reload the page.
  2. Filter on collect (GA4 requests) or on gcs= (any Google tag).
  3. Click a request and look at its query parameters.

The gcs parameter

gcs encodes the two storage signals. It starts with G1, followed by one digit for ad_storage then one for analytics_storage (1 for granted, 0 for denied):

  • G100: both denied. Expected before any choice and after a refusal.
  • G111: both granted. Expected only after the visitor accepts.
  • G110: advertising storage granted, analytics denied.
  • G101: analytics storage granted, advertising denied.

If you see G111 on the very first request, before anyone touched the banner, your default is missing or set to granted. That is the most serious failure, because Google records consent that was never given.

The gcd parameter

gcd is longer (for example 13p3p3p3p5) and covers the four v2 signals, in this order: ad_storage, analytics_storage, ad_user_data, ad_personalization. Google does not document it officially, but the letters have been analyzed by the measurement community. The ones you will meet most often:

  • l: signal not set. Seeing it for ad_user_data or ad_personalization means you are still on a v1 setup.
  • p: denied by default, no update yet.
  • q: denied by default and denied by the update.
  • r: denied by default, then granted by the update. This is the ideal pattern after an acceptance.
  • t: granted by default, no update.
  • v: granted by default and by the update.

A t or v for EU visitors means the default was granted, which defeats the point of asking.

Basic or advanced mode?

What you see in the network tab also depends on the mode you chose. In basic mode, Google tags do not load at all before consent: no collect request should appear until the visitor accepts. In advanced mode, tags load and send cookieless pings with gcs=G100 while consent is denied. Both are valid, but the result of the test is different. Our article on basic vs advanced Consent Mode explains how to choose.

Test 4: check the cookies before and after the choice

Consent Mode signals are only half of the story. The other half is that nothing is stored on the device while consent is denied.

  1. In a private window, open the developer tools and go to Application (Chrome) or Storage (Firefox), then Cookies.
  2. Load the site without touching the banner. You should see no _ga, _ga_<ID> (GA4) or _gcl_au (Google Ads conversion linker) cookie.
  3. Click "Reject all" and reload: still no Google cookies.
  4. In a new private window, click "Accept all": the cookies appear.

If _ga is present before any choice, a tag is running outside Consent Mode, often a second copy of GA4 added by a plugin or by the site builder's native integration. Want to see every cookie your site sets before consent, not only Google's? Check it in 30 seconds with the free cookie scanner.

The browser tests prove what a single visit sends. The platform screens show what Google receives across all your traffic.

  • Google Ads: open your conversion actions, then the Diagnostics tab. Google shows whether consent mode is detected on your tags and flags a lack of consent signals for EEA traffic. Changes can take several days to appear there, so do not expect an instant update after a fix.
  • GA4: go to Admin, then Data streams, and open your web stream. The Consent settings section tells you whether consent signals for measurement and for ads personalization are active.

If the browser tests pass but these screens report missing signals, the problem is usually limited to some pages or some templates (a landing page without the snippet, a checkout on another domain). The impact of missing signals on bidding and audiences is detailed in our article on Consent Mode v2 and Google Ads.

One acceptance on the home page is not a test plan. Run each scenario in a fresh private window and repeat Tests 2 to 4:

  • First visit, no choice: default denied, no Google cookies, gcs=G100 or no request (basic mode).
  • Accept all: update to granted, cookies written, gcs=G111.
  • Reject all: update stays denied, no cookies.
  • Partial choice: accept statistics only, then check that analytics_storage is granted and the three advertising signals stay denied.
  • Returning visitor: accept, close the tab, come back to another page. The stored choice must be applied immediately, without a burst of denied requests first.
  • Withdrawal: reopen the cookie settings, withdraw consent and check that the next requests go back to G100.
  • Region: if your default uses the region parameter to apply denied only in the EEA, test from an EEA connection (or a VPN). A test from outside the region will show granted and tell you nothing.

Also test at least one product page, the checkout or thank-you page (where conversions fire) and the mobile version.

The most common failures and what they mean

  • No consent default in the dataLayer: Consent Mode is not enabled. Check that your CMP has the option turned on, or that the default is set in GTM with the Consent Initialization trigger.
  • The config comes before the default: a tag is hard-coded above the CMP snippet. Move the CMP snippet up or remove the duplicate tag.
  • l for two signals in gcd: v1 setup. Update your CMP or template so it sends ad_user_data and ad_personalization.
  • The state stays denied after acceptance: the CMP does not send the update, or sends it with the wrong signal names.
  • granted before any choice for EU visitors: wrong default. This is a compliance problem, not just a measurement one.
  • Meta, LinkedIn or Hotjar still fire before consent: these tags do not read Google's signals. They must be blocked by the CMP or given an additional consent requirement in GTM.

FlowConsent is built to pass these tests by default. The integration snippet starts with an inline stub that sets the four signals to denied before any Google tag, with wait_for_update so a returning visitor's stored choice is applied before the first hits. The banner sends the update on every choice and on every page. If a Google tag is queued before the defaults, the banner logs a console error naming it, and the installation assistant checks the whole chain on your live page. The compliance scan also recognizes cookieless gcs=G100 pings as compliant and flags any hit that claims consent was granted after a refusal. It is free up to 25,000 sessions per month. Details are in the Google Consent Mode documentation.

Questions

Common questions on this topic.

Can't find your question? Write to us, we answer fast.

How do I check if consent mode is enabled on my site?

Open the site in a private window, open the browser console and type dataLayer. If Consent Mode is enabled, one of the first entries contains consent, default and the four signals set to denied, before any config entry for GA4 or Google Ads. After you accept the banner, a consent update entry with granted values should appear. No consent entry at all means it is not enabled.

What does gcs=G100 mean?

The gcs parameter carries the state of the two storage signals in every Google request. G100 means ad_storage and analytics_storage are both denied. It is the expected value before the visitor makes a choice and after a refusal. In advanced mode, Google uses these cookieless pings for conversion modeling. G111 means both are granted, and should only appear after the visitor accepts.

Why does Tag Assistant show granted before I click the banner?

Either no default is set, so Google treats consent as granted, or the default is explicitly set to granted. It can also happen when a Google tag is hard-coded above your CMP snippet and fires before the default. A third cause is a region setting: if denied applies only in the EEA and you test from elsewhere, granted is expected. Test from an EEA connection.

Can I test Consent Mode without Google Tag Manager?

Yes. Tag Assistant works on any site at tagassistant.google.com, whether your tags are installed with gtag.js, a CMS plugin or GTM. The browser console, the network tab with the gcs and gcd parameters, and the cookie storage are also independent of GTM. Only the Consent Overview, which lists the consent settings of each tag, is specific to Google Tag Manager.

Does Consent Mode v2 replace a cookie banner?

No. Consent Mode only passes the visitor's choice to Google tags and adapts their behavior. The choice itself must still be collected by a cookie banner or consent management platform, with accept and reject options of equal weight. Consent Mode also does nothing for non-Google tags such as Meta Pixel, LinkedIn or Hotjar, which the banner must block until consent is given.

Make your site compliant today.

Free up to 25,000 sessions a month. No credit card, no commitment.