Google Consent Mode v2
The CMP drives Consent Mode automatically (googleConsentMode: true by default).
You provide the default (denied) in the head snippet; the CMP issues the
update when the visitor decides.
Signal mapping
Section titled “Signal mapping”| CMP category | Google Consent Mode signal(s) |
|---|---|
necessary |
security_storage (always granted) |
preferences |
functionality_storage, personalization_storage |
statistics |
analytics_storage |
marketing |
ad_storage, ad_user_data, ad_personalization |
Don’t hard-block Google tags
Section titled “Don’t hard-block Google tags”In the denied state a Google tag still sends cookieless pings, and Google’s
conversion/behavioural modelling recovers a large share of conversions you’d
otherwise lose. Hard-blocking throws that away. Prefer the
Google bridge;
LightningCMP.debug() warns when a Google tag is
hard-blocked.
The ordering hazard
Section titled “The ordering hazard”wait_for_update: 500 gives the CMP a 500 ms window to read the stored
decision before Google tags act on the default — keep it. If a site-hosted
gtm.js/gtag.js loads before the CMP’s default, debug() surfaces a
consentmode-order hint: add the inline gtag('consent','default',{…denied…})
block in <head> before your tag, or let the CMP load the tag for you via
bridges.google.tagId.
To turn the integration off entirely (rare — only if another system owns Consent
Mode): googleConsentMode: false.