Free scan
Consent Mode · troubleshooting

Consent Mode is configured but tags still fire

This is usually not a bug. Consent Mode does not block requests — it changes what Google's tags are allowed to send, and it has no authority at all over tags that are not Google's. Requests you still see may be perfectly correct denied-state pings, or they may be a real gap. The parameter that tells you which is in the request URL.

The short answer

With advanced consent mode, Google's tags still load and still send a cookieless ping while consent is denied. The ping carries no identifiers and sets no cookies, and it exists so conversion modelling has something to work with. That is behaving as designed, and it is not the pattern a pre-consent claim is built on.

What is a real problem: a Meta, TikTok, LinkedIn, Klaviyo, or session-replay tag firing at the same moment. Consent Mode is a Google framework — those vendors never see it. If you configured Consent Mode and assumed the whole page was covered, the non-Google half of your stack is still ungated.

Last reviewed: September 1, 2026Diagnostic + fix checklistGeneral information, not legal advice

What it looks like

You set the defaults, wired the CMP, republished — and the network tab still shows traffic before the banner is answered. Look closely and it usually splits into two groups. Group one: requests to google-analytics.com/g/collect or googleads.g.doubleclick.net carrying a gcs= parameter. Group two: everything else — facebook.com/tr, analytics.tiktok.com, px.ads.linkedin.com, clarity.ms — with no consent parameter anywhere, because those vendors do not implement one.

Group one may be correct. Group two is the consent gap you still have.

DevTools → Network — fresh incognito, banner untouched:
POST google-analytics.com/g/collect?…&gcs=G100 ← denied-state ping — Consent Mode working
POST google-analytics.com/g/collect?…&gcs=G111 ← consent granted before any click — real gap
GET www.facebook.com/tr/?id=…&ev=PageView ← no consent signal at all — Consent Mode does not apply

Verify it yourself in five minutes

The gcs parameter is the whole diagnostic. It is four characters that tell you what consent state Google's tag believed it was in when it sent the hit.

  1. Load the site clean. Fresh incognito window, DevTools → Network, Preserve log on. Do not answer the banner.
  2. Filter for collect. Click any request and read the query string. Find the gcs parameter.
  3. Decode it. The format is G followed by three digits: a status digit, then ad_storage, then analytics_storage — 1 means granted, 0 denied. So gcs=G100 is both denied (correct before consent) and gcs=G111 is both granted (wrong, if you have not clicked anything).
  4. Now click Accept and reload the check. After consent, the same beacons should switch to gcs=G111. If they never change, the CMP is not calling the consent update — the defaults are working but the accept path is broken.
  5. Clear the filter and look at everything that is not Google. Any request to a non-Google vendor domain that appears before your click is outside Consent Mode's reach entirely and needs its own gate: a CMP script block, or a GTM tag with a consent requirement.
  6. Cross-check in Tag Assistant. Google's own troubleshooting flow shows the on-page consent state per tag, which is faster than reading URLs once you know what you are looking for.

What a healthy result looks like: A correctly configured advanced setup shows gcs=G100 before consent and gcs=G111 after, and shows no non-Google vendor traffic at all until the visitor accepts.

Why it happens

1. Advanced consent mode is doing exactly what it says

In advanced mode the tags load and send cookieless pings while consent is denied. If you expected zero requests, use basic consent mode instead — the tags do not load until consent is granted — and accept the loss of modelled conversions.

2. The defaults snippet runs too late

Anything that runs after the tag library has already initialized cannot retroactively deny storage. If the default call is inside GTM rather than in the page source before gtm.js, the first hits can escape with granted state.

3. Non-Google vendors were never gated

Meta, TikTok, LinkedIn, Klaviyo, Intercom, Hotjar and the rest have their own consent APIs or none at all. Consent Mode does not reach them. This is the single most common reason a "we did Consent Mode" site still shows pre-consent trackers.

4. The CMP updates its own cookie but not Google's consent state

Some CMP integrations record the choice internally and never call gtag('consent','update',…). The symptom is a gcs value that never changes after the visitor clicks Accept.

The risk context

California's Invasion of Privacy Act (CIPA), Penal Code § 631, prohibits intercepting a communication without the consent of all parties. Since 2022, plaintiff firms have applied that decades-old wiretapping statute to websites — arguing that tags transmitting visitor data with consent state granted, or with no consent signal at all, before the visitor has answered before the visitor consents is an intercepted communication. Statutory damages under § 637.2 run up to $5,000 per violation, and plaintiffs argue each affected visitor session is a separate count, which is why even small sites receive demand letters. Similar all-party-consent statutes in Pennsylvania (WESCA), Florida (FSCA), and Massachusetts have produced parallel filings.

To be precise about what a network log can tell you: a tracker firing before consent is a technical finding — it establishes when a script transmitted data, not whether any law was broken. But timing is exactly what these claims are built on, which is why fixing the timing is the practical response.

How to fix it

Reading the consent signal

// Read the consent state a Google tag believed it had:
//   gcs=G100  -> ad_storage denied,  analytics_storage denied
//   gcs=G101  -> ad_storage denied,  analytics_storage granted
//   gcs=G110  -> ad_storage granted, analytics_storage denied
//   gcs=G111  -> both granted
// Before the visitor answers the banner you want G100.
// After Accept you want G111. A value that never changes = the
// CMP is not calling gtag('consent','update', ...).

Read gcs from the query string of any /g/collect or doubleclick request in the network tab.

What this is called

Terminology bridge

Google calls this consent mode, and the two flavours are basic (tags do not load until consent) and advanced (tags load, send cookieless pings, and upgrade on consent). The URL parameter is the gcs — Google consent state — signal, and the modelled-data feature it enables is conversion modelling. When a vendor is outside this system entirely, the industry phrase is that it is not consent-mode aware; your CMP's docs will call gating those scripts prior blocking or script blocking.

What a scan can and can't tell you

A scan — ours or anyone's — records what your site loaded and when. It cannot tell you whether a denied-state ping is acceptable under any particular statute, and it is not legal advice. What it can do is separate the two groups above for you: Google traffic carrying a consent signal, and everything else carrying none. The second group is where the work is.

Sources

  1. Google: Consent mode overviewdevelopers.google.com
  2. Google: Set up consent mode on websitesdevelopers.google.com
  3. Google: Troubleshoot consent mode with Tag Assistantdevelopers.google.com
  4. Google: Tag Manager consent mode supportsupport.google.com

Check your own site

RegSentry loads your site in a real browser, records when each third-party tracker first contacts its server, and flags everything that fires before consent — with the fix for each one. Continuous monitoring re-runs it and emails you when something new appears.

Free real-browser scan

See every pre-consent tracker on your site — free, 30 seconds, no signup.

Real browser scan, no signup to run it. You see a summary of the findings; the full report with every tracker unlocks with your email.

Common questions

If Consent Mode is set up, why do I still see requests before consent?
In advanced consent mode Google's tags still load and send cookieless pings while consent is denied — those carry gcs=G100 and set no cookies. Requests from non-Google vendors are a different matter: Consent Mode is a Google framework and Meta, TikTok, LinkedIn, chat and replay tools do not participate in it, so they need their own gating.
What does gcs=G100 mean?
It is Google's consent state parameter: G, then a status digit, then ad_storage and analytics_storage, where 1 is granted and 0 is denied. G100 means both denied — the expected value before a visitor consents. G111 means both granted, which before any banner interaction indicates the defaults are not being applied.
Does Consent Mode cover the Meta Pixel?
No. Consent Mode governs Google's own tags. The Meta Pixel has its own consent call, TikTok and LinkedIn have their own settings, and tools like Hotjar or Intercom need to be initialized from your consent platform's callback. A site that only configured Consent Mode typically still has ungated non-Google trackers.

Keep reading

Guide: Google Consent Mode v2 setupGTM fires tags before consentSample scan reportConsent banner not blocking trackersMonitoring plans