GCM + GPC + ad signals
Google Consent Mode v2, Global Privacy Control, USP, UET, Clarity, Amazon, and Google Additional Consent.
Google Consent Mode v2
On every decision the banner pushes gtag('consent', 'update', {...})with all seven storage signals derived from the visitor's categories:
ad_storage | GRANTED if MARKETING is granted, else DENIED. |
ad_user_data | GRANTED if MARKETING is granted, else DENIED. |
ad_personalization | GRANTED if MARKETING is granted, else DENIED. |
analytics_storage | GRANTED if ANALYTICS is granted, else DENIED. |
functionality_storage | GRANTED if PREFERENCES is granted, else DENIED. |
personalization_storage | GRANTED if PREFERENCES is granted, else DENIED. |
security_storage | Always GRANTED. Required by Google Consent Mode for fraud prevention. |
The banner also pushes a cookielint_consent_update event to dataLayer with the consent map attached, so GTM users can build a Custom Event trigger and route any tag off it.
Global Privacy Control
On bootstrap the runtime reads navigator.globalPrivacyControl. When set to true and the visitor has no persisted decision yet, ANALYTICS, MARKETING, and PREFERENCES default to denied. The banner still renders so an explicit accept can override. Under CCPA / CPRA this is the legally-binding interpretation; under GDPR it is a strict-mode default.
The backend records the GPC state on every persisted consent record so the audit trail can reconstruct why a transfer was or was not allowed.
Other ad-tech consent signals
On every decision the banner also fires consent signals for the major non-Google ad-tech frameworks. No extra config; if the corresponding SDK is on the page, it picks up the update automatically.
IAB CCPA (USP API) | Installs window.__uspapi so US ad partners can read the US Privacy string. "1YYN" when MARKETING is denied, "1YNN" when granted. Required by Google Ads US and most DSPs for opt-out attribution. |
Microsoft UET | Pushes window.uetq.push("consent", "update", { ad_storage }) so Bing Ads / Microsoft Advertising tags receive the decision. Picked up by the standard uetq stub-queue pattern even if UET loads after consent resolves. |
Microsoft Clarity | Calls window.clarity("consentv2", { ad_storage, analytics_storage }) so Clarity heatmaps and session replays only fire when their categories are granted. |
Amazon Consent Signal | Writes the amzn_consent first-party cookie (base64 JSON) and dispatches an amznConsentChange window event for Amazon DSP / Amazon Ads SDKs. |
Google Additional Consent (GACM) | Emits an addtl_consent envelope ("2~" when MARKETING is granted, empty when denied) into dataLayer as cookielint_additional_consent_update. GTM users can build a Custom Event trigger on the dataLayer event and route any ad tag off it. |

