Tag managers
Tag managers change how tags load, not the consent model. Choose the loading path before installing: the configurator can help, and Choose your setup gives the short decision guide.
Google Tag Manager
Section titled “Google Tag Manager”Use the Google bridge as the default
path: set bridges.google.tagId: "GTM-…" and let the CMP load the container so
the consent default is guaranteed before GTM boots. Gate individual tags
inside GTM via each tag’s Consent Settings — never gate the container itself.
Confirm tags fire in GTM Preview after wiring it up.
lightning("init", { bridges: { google: { tagId: "GTM-XXXXXXX" } },});Do not also paste a second GTM loader. If your platform must own the GTM
snippet, keep the inline Consent Mode default before it and omit tagId; see
Google Consent Mode v2.
gtag.js / GA4 (no GTM)
Section titled “gtag.js / GA4 (no GTM)”Use bridges.google.tagId: "G-…" and the CMP loads gtag.js with correct
ordering. If you already hand-place gtag.js, omit tagId; Consent Mode signals
still flow via googleConsentMode.
Cloudflare Zaraz
Section titled “Cloudflare Zaraz”Relay CMP decisions into zaraz.consent so Zaraz-managed tools honour the same
choices.