Method guide
Consent Mode pings vs trackers
By CookieTelemetry. Published 3 Nov 2026. Drafted with AI assistance from our own measurement protocol and code, and reviewed by a person before publication.
When you test a page before any consent choice (see how to test what fires before consent), you may still see requests to Google's measurement endpoints. Some of them are what Google calls Consent Mode pings: requests sent while the page tells Google that storage is denied. Others are ordinary measurement hits sent as if consent had been granted, or with no consent signal at all. They look alike in the Network tab. The difference is in two parameters, gcs and gcd.
Where to find the parameters
- In DevTools, open the Network tab and filter for
collect(Google Analytics 4 hits usually go to a/g/collectaddress). - Click a request. Look for
gcs=andgcd=in the request address; for some requests they are in the payload instead. - Note both values for each hit you see before the banner choice.
gcs: two purposes, documented by Google
gcs has the form G1xy. Google's Consent Mode documentation says gcs carries ad_storage andanalytics_storage; independent technical write-ups and our own captures read x asad_storage and y as analytics_storage, where 1 means granted and 0 means denied. So G100 means both denied, G111 both granted, and G101 ads denied but analytics granted.
gcd: four purposes, and how each state was reached
gcd is sent whether or not gcs is present. It covers four purposes in this order:ad_storage, analytics_storage, ad_user_data and ad_personalization. In the ten-character value, the letters at the 3rd, 5th, 7th and 9th positions carry the four states (for example 11p1p1p1p5: the four letters are all p).
Google's pages describe what gcd covers but, when we checked on 23 Sep 2026, did not publish the letter table itself. The table below comes from independent technical write-ups that agree with each other and with a worked character-by-character example. Treat it as well-supported, not as Google's own specification. We do not interpret the first two characters or the last one.
| Letter | Effective state | Meaning |
|---|---|---|
l | not set | not configured with Consent Mode |
p | denied | denied by default, no update |
q | denied | denied by default, confirmed denied by an update |
r | granted | denied by default, granted by an update |
t | granted | granted by default, no update |
u | denied | granted by default, denied by an update |
v | granted | granted by default, confirmed granted by an update |
m | denied | no default recorded, denied by an update |
n | granted | no default recorded, granted by an update |
Sources: Google, Consent Mode overview (gcs); for the gcd letters, Perspection,Stape anda worked example on blog.giancampo.com. Checked 23 Sep 2026.
How we classify a hit
Our classifier looks at the two purposes that decide whether a Google measurement hit may use storage, ad_storage and analytics_storage, and gives one of five answers:
- Cookieless ping: both purposes read as denied. We record it separately and never count it as a tracker request.
- Granted before a choice: both purposes read as granted although no choice was made. It stays a tracker request.
- Mixed or partial: the two purposes disagree, one is not set, or
gcsandgcdcontradict each other. It stays a tracker request; we do not resolve a contradiction in the site's favour or against it. - No signal: neither parameter is present. It stays a tracker request.
- Unknown: a parameter is present but does not decode (an unexpected letter or shape). It stays a tracker request and is marked unknown; we never guess.
Where both parameters are present, gcs is used and gcd is checked against it. The two advertising purposes in gcd (ad_user_data, ad_personalization) are decoded and kept, but do not change the answer on their own.
Only requests that already match our tracker lists are classified at all. Plain downloads of a tag library are recorded as script loads, not as tracker requests (see the first guide).
Two worked readings
gcs=G100withgcd=11p1p1p1p5: both storage purposes denied by default, with no update. A cookieless ping, counted separately.- No
gcs, andgcdwithlin the storage positions: Consent Mode is not configured for those purposes. The hit is not a cookieless ping; it stays a tracker request.
What a cookieless ping is not
- Not "no request". A ping still leaves the browser and reaches Google. We keep it apart because it signals denied storage, not because nothing was sent.
- Not a verdict. Whether a site may send such pings before consent is a legal question we do not answer. We report what was sent and what it signalled.
- Not proof of "basic mode". Seeing no Google hits at all in a window tells you only that none were observed in that window. We never report that as blocking or as a particular Consent Mode setup.
Want us to run it for you?
The private scan is free. CookieTelemetry also sells a paid website monitoring service.
Our scanner is invite-only for now: request a private scan for a site you control. You prove you control the domain first; the result is shown only to you.
It reports technical observations from two automated visits. It does not assess legal compliance and is not legal advice.
These guides describe how to observe browser behaviour. They are not legal advice, and a request seen in your browser does not by itself show what it is used for or whether it is lawful. Our full counting rules are on the methodology page.