How to check Google Consent Mode v2 is working
Three checks that take about five minutes, what each result means, and six common mistakes that break it.
Updated
Consent Mode v2 works when two things happen on every page: Google’s four consent signals are set to a default before any Google tag runs, and an update follows as soon as the visitor makes a choice.
- Working
- Page starts loading
- Consent tool sets the defaultall four signals denied
- Google tag loadswaits for consent
- Visitor accepts
- Consent tool sends the updatesignals granted
- Google tag measuresgcs=G111
- Broken
- Page starts loading
- Google tag loadsno default yet
- Tag reads consentTag Assistant warns
- Consent tool sets the defaulttoo late
The four signals are ad_storage, analytics_storage, ad_user_data and ad_personalization. Since March 2024, Google Ads needs ad_user_data and ad_personalization as well for visitors in the European Economic Area to keep audiences and personalised ads working for them (Google Ads Help).
1. Tag Assistant (two minutes)
- Open Google Tag Assistant, click Add domain, and enter your site’s address. Your site opens in a new tab with the debugger connected.
- Back in Tag Assistant, click the first event in the left column (usually Consent or Consent Default), then the Consent tab.
- Read the On-page Default column. If you’re testing from the EU or UK, all four signals should read
denied. - Now accept the cookie banner on your site. A new event appears; its On-page Update column should read
grantedfor the signals you accepted. - Reload, reject, and check again: the update should read
denied.
If Tag Assistant shows the warning “a tag read consent before a default was set”, a Google tag ran before your consent tool set the defaults. That is the most common failure; see the order check below.
2. The network requests (two minutes)
Tag Assistant is the reliable view. The network requests show the same thing from Google’s side, which helps when Tag Assistant can’t connect.
Open your browser’s developer tools, go to the Network tab, filter on collect, and reload. Each request to Google Analytics or Google Ads carries two parameters:
gcscoversad_storageandanalytics_storage:G1followed by two digits, ads first, then analytics.G100means both denied,G111both granted,G101analytics granted and ads denied.gcdcovers all four signals and says how each was set. A letter stands for each signal, in the order ad_storage, analytics_storage, ad_user_data, ad_personalization.
Letter in gcd |
Meaning |
|---|---|
l |
Not set by Consent Mode |
p |
Denied by default, no update yet |
q |
Denied by default, then denied by the visitor |
r |
Denied by default, then granted by the visitor |
t |
Granted by default, no update |
v |
Granted by default and by the visitor |
m / n |
Denied / granted by an update, with no default set |
So 13p3p3p3p5 is a visitor in Europe who hasn’t chosen yet, and 13r3r3r3r5 is one who accepted everything. Any l, m or n means a default is missing. These are Google’s internal parameters and can change without notice (Simo Ahava’s decoding); Tag Assistant stays the reference.
3. The order of scripts (one minute)
View your page’s source and find two things in the <head>: your consent tool’s script and Google’s tag (gtag.js or the Tag Manager snippet). The consent tool must come first, and must not be loaded with async or defer.
In Google Tag Manager, the tag that sets consent defaults must fire on the Consent Initialization – All Pages trigger, which runs before every other trigger (Google’s consent guide for developers).
Six common mistakes
- The default comes too late. The consent script is below Google’s tag, is loaded
async, or a plugin delays it. Move it to the top of the head, and exclude it from “delay JavaScript” settings in WP Rocket, LiteSpeed or similar plugins. - No update after the choice. The banner records the choice but never tells Google. In Tag Assistant the default stays the same after you click Accept.
- A regional default overrides yours. If your site also runs
gtag('consent', 'default', {..., region: ['US']}), Google uses the most specific region it finds. The consent tool’s update still wins, but the first page view can be off. - Google’s tag arrives through a CDN. With Google tag gateway switched on at the CDN, the CDN can add Google’s tag to the page before your consent script. Check whether the tag loads from your own domain instead of
googletagmanager.com(Google tag gateway). - Two Google tags. A theme or plugin adds
gtag.jsand Tag Manager adds another. One of them often runs before the default. - Testing from the wrong place. Outside places where the law asks first (most of the US, for example), many consent tools grant consent by default, so you’ll see
grantedwithout touching the banner. Test with a VPN set to an EU country, or check what your consent tool does for your location.
Basic and advanced: why requests can be missing entirely
In basic Consent Mode, Google’s tags don’t load until the visitor agrees, so before a choice you’ll see no collect requests at all. That is correct. In advanced mode, the tags load straight away and send cookieless requests with gcs=G100 until the visitor agrees, which Google uses to model conversions (Google Ads Help).
Flat Consent sets the defaults before Google’s tags and sends the update with every choice, and its install check flags a Google tag that loads first. How it works with Google and Microsoft.