Consent
Consent Mode and measurement behaviour
02 July 20267 min readKriov
Consent platforms changed measurement permanently. Before consent tooling, a tag either loaded or did not. With Consent Mode, tags load and adjust their behaviour continuously based on consent state — which makes 'is my tracking working?' a question with conditional answers.
The states that matter
- analytics_storage — whether analytics identifiers persist.
- ad_storage — whether advertising cookies may be set.
- ad_user_data — whether data may be sent to advertising platforms.
- ad_personalization — whether data may be used for remarketing.
Basic vs advanced implementation
Advanced implementation sends cookieless pings before consent, letting Google model conversions in the gap. Basic implementation collects nothing until consent is granted. The trade-off is direct: advanced recovers more modelled signal but transmits limited data pre-consent, which requires a defensible legal position. This is a business decision as much as a technical one.
Where implementations go wrong
- Default consent state set incorrectly, silently collecting before any choice is made.
- Tags firing on triggers that ignore the consent state entirely.
- Server-side containers receiving events regardless of browser-side consent decisions.
- No verification that granting consent mid-session actually causes previously withheld signals to flow.
gtag('consent', 'default', {
analytics_storage: 'denied',
ad_storage: 'denied',
ad_user_data: 'denied',
ad_personalization: 'denied',
wait_for_update: 500
});
// On explicit user choice:
gtag('consent', 'update', {
analytics_storage: 'granted',
ad_storage: 'granted',
ad_user_data: 'granted'
});