How do I test Consent Mode V2?
Open Chrome DevTools → Network tab → filter for collect → reject all on the cookie banner → confirm GA4 hits still fire with gcs=G100 (denied) and ad_user_data=denied. Then accept all → confirm gcs=G111 (granted). If hits don't fire at all in either state, Consent Mode is misconfigured. If gcs is missing entirely, Consent Mode isn't installed.
If gcd is missing, you're on Consent Mode V1 — the V2 signals (ad_user_data, ad_personalization) aren't being communicated, and your EU/UK Google Ads measurement is broken.
The full test takes 5 minutes per page and is the single highest-ROI consent diagnostic you can run.
Before you start: what should already be in place
The test assumes you've implemented Consent Mode V2 in some form — gtag.js with default + update commands, GTM with a Consent Initialization tag, or a CMP that handles it for you (Cookiebot, OneTrust, Iubenda, Usercentrics, Termly). If none of that is set up, the test will fail in predictable ways — see the diagnostic table at the end.
You'll also need:
- Chrome (or any Chromium browser — Edge, Brave, Arc all work)
- An incognito window (clean cookie state)
- The page you're testing — ideally a high-traffic landing page, not the homepage
The 5-minute test
Step 1 — Open DevTools and isolate Google traffic (1 minute)
- Open the page in a fresh incognito window
- Open DevTools (F12 or Cmd+Option+I on Mac)
- Go to the Network tab
- Type
collectin the filter box - Don't interact with the cookie banner yet — leave it in its default state
- Refresh the page (Cmd+R / Ctrl+R)
You should see network requests to region1.google-analytics.com/g/collect (GA4) and possibly googleads.g.doubleclick.net or similar (Google Ads). These are the hits Consent Mode is governing.
Step 2 — Inspect the denied-state request (1 minute)
Click the first collect request that appears. Scroll down to the request payload (URL parameters). You're looking for two things:
The `gcs` parameter. Should equal G100 if Consent Mode V2 in Advanced mode is working with consent denied. The encoding:
| `gcs` value | Meaning |
|---|---|
G100 | Consent set, both ad_storage and analytics_storage denied (Advanced mode only) |
G110 | ad_storage granted, analytics_storage denied |
G101 | ad_storage denied, analytics_storage granted |
G111 | Both granted |
| (missing) | Consent Mode is not installed at all |
The format is G1xy where x = ad_storage (1=granted, 0=denied), y = analytics_storage (1=granted, 0=denied). The G1 prefix is constant.
The `gcd` parameter. This is the V2-specific signal that covers all four consent types. It's present in every hit even when Consent Mode isn't fully active. Format:
The string starts with 11, separates each signal with a digit, and ends with 5. If gcd is missing entirely, your implementation is V1-only — the new V2 parameters aren't being communicated, and Google Ads measurement in the EU/UK is broken since March 2024.
Step 3 — Accept consent and re-test (1 minute)
- Click Accept All on your cookie banner
- Watch the Network tab for new
collectrequests - Click into the new request
Now gcs should be G111 (or G110 if you only accept ad cookies, G101 if only analytics). The gcd parameter should encode granted for whichever signals were accepted.
If gcs doesn't change after consent — Consent Mode is installed but the consent_update command isn't firing. Check your CMP's update wiring.
If hits stop firing entirely after consent — extremely rare, usually a tag-trigger conflict where consent is gating the tag itself instead of just the cookie behaviour.
Step 4 — Reject consent and re-test (1 minute)
Need to validate whether consent timing is distorting your GA4 data?
- Open a fresh incognito window with the same URL
- Click Reject All on the cookie banner
- Inspect the next
collectrequest
In Advanced Consent Mode: hits should still fire with gcs=G100 and gcd showing all denied. The hits are cookieless pings — they contain the event name, page URL, referrer, timestamp, but no client_id, no user_id, no _ga cookie value. Used for conversion modelling only.
In Basic Consent Mode: hits should NOT fire at all when consent is denied. If hits are firing without consent in Basic mode, your CMP isn't properly blocking the tags.
Step 5 — Verify the GA4 admin signals (1 minute)
GA4 surfaces consent-signal health in the property admin. Go to GA4 Admin → Data Streams → your stream → Configure tag settings → Consent settings. You should see two indicators:
- "Ads measurement consent signals active" — confirms
ad_user_datais being received - "Ads personalization consent signals active" — confirms
ad_personalizationis being received
Both green means V2 is working end-to-end. Either red or "not detected" means the signal isn't reaching Google despite what DevTools shows — usually a server-side or sGTM transformation issue stripping the signals.
What "passing" looks like
The healthy fingerprint of a working Consent Mode V2 implementation:
| State | `gcs` | `gcd` present? | Hits firing? | GA4 cookies set? |
|---|---|---|---|---|
| Page load (pre-consent), Advanced mode | G100 | Yes, all denied | Yes (cookieless) | No |
| Page load (pre-consent), Basic mode | (none) | (none) | No | No |
| Accept All | G111 | Yes, all granted | Yes | Yes |
| Reject All, Advanced mode | G100 | Yes, all denied | Yes (cookieless) | No |
| Reject All, Basic mode | (none) | (none) | No | No |
If your behaviour matches one of these rows in each state, you're working. If not, jump to the diagnostic table below.
Faster alternatives to manual DevTools
For repeat testing, two free Chrome extensions cut the time roughly in half:
Consent Mode Inspector by InfoTrust. Free Chrome extension. Visually displays the current Consent Mode state for each of the four signals on any page. Instantly shows you what gcs and gcd resolve to without opening DevTools. Best for QA across many client sites.
Tag Assistant (Google's official). Free, also a Chrome extension. Shows the gcs and gcd URL parameters appended to outgoing requests, plus the dataLayer state and tag-firing sequence. Better for diagnosing the *why* when something fails — Consent Mode Inspector tells you the result, Tag Assistant tells you how it got there.
For weekly client QA: install both. Use Consent Mode Inspector for the first-pass green/red check, then Tag Assistant when you need to debug.
Diagnostic table — what each failure means
| Symptom | Diagnosis | Fix |
|---|---|---|
gcs missing entirely from all hits | Consent Mode not installed | Add the consent default + update commands; install a CMP that supports Consent Mode V2 |
gcs present but gcd missing | Consent Mode V1 only | Upgrade CMP to V2 or add ad_user_data and ad_personalization to your consent_default command |
gcs=G100 but no hits firing | Wrong mode (Basic instead of Advanced) | Switch to Advanced Consent Mode for cookieless pings — required for conversion modelling |
gcs doesn't update after Accept | consent_update not firing | Check CMP's update wiring; ensure update command runs *before* page transition |
Hits fire pre-banner with gcs granted | Default state set to granted | Change consent_default to denied for all signals — this is a serious GDPR violation if EU/UK |
| GA4 admin shows "ads measurement signals not detected" | Server-side transformation stripping signals | Check sGTM client transformations; verify gcd reaches region1.google-analytics.com unchanged |
gcs=G100 shows even after Accept | Tags reading consent before default was set | Move consent_default to first script in <head> or set Consent Initialization priority to 100 in GTM |
The "tags reading consent before default" warning in GTM Preview mode is the most common error we see across audited properties — about 40% of new V2 implementations show it within the first month.
Volume threshold for conversion modelling
Even when Consent Mode V2 passes every test, the modelled-data benefit only activates above Google's volume thresholds:
- 1,000 daily ad clicks per domain over 7 consecutive days (Google Ads requirement for conversion modelling)
- Consent Mode V2 in Advanced mode (Basic mode disables modelling entirely)
- Blended reporting identity in GA4 (Device-based or Observed disables modelling)
- 7-day window of consent-denied data for the model to train on
Below threshold, GA4 silently shows only observed conversions — no UI warning. The test passes, the implementation is correct, but the practical lift is zero. For low-volume properties (under 10,000 monthly sessions), focus on getting the implementation correct now so when traffic grows, modelling activates automatically.
FAQ: How to Test Consent Mode V2 in 5 Minutes: A DevTools Walkthrough
Can how to test consent mode v2 in 5 minutes: a devtools walkthrough be caused by consent timing instead of a tag bug?
Should I test this only in GA4 reports?
What is the fastest way to prevent this from happening again?
Related guides for How to Test Consent Mode V2 in 5 Minutes: A DevTools Walkthrough
GCS Parameter Decoded: What G100, G110, G111 Mean in GA4 Hits
The gcs parameter in GA4 network requests encodes the user's consent state for two of the four Consent Mode signals. Format: G1xy where G1 is constant, x is ad_storage (0=denied, 1=granted), y is analytics_storage (0=denied, 1=granted)…
'consent_default' vs 'consent_update': Which Comes First in GTM (2026)
The consent_default command must fire before any tag — typically as the first script in <head> or as a Consent Initialization tag in GTM with priority 100. The consent_update command fires after the user interacts with the cookie banner…
Validate How to Test Consent Mode V2 in 5 Minutes: A DevTools Walkthrough before it becomes a compliance and reporting problem
Run a free audit to check consent timing, browser behavior, and downstream GA4 impact in one workflow.