Skip to content

Google Consent Mode v2

The CMP drives Consent Mode automatically (googleConsentMode: true by default). When you configure a Google bridge, it pushes the default (denied) immediately before it loads the tag, then issues the update when the visitor decides. Only add the inline default to your head when Google tags are loaded elsewhere.

For a new Google setup, start with the Google bridge or the configurator. The bridge is the recommended way to load a GTM container, GA4 tag, or Ads tag because it keeps the default-before-loader ordering together with the tag configuration.

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

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.

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.