Versionv1

How it works

Read this once you have the snippet from Quickstart. It explains what happens in the browser so GTM and vendor tags make sense.

1. What runs on page load (order)

Every visit follows roughly this sequence:

  1. HTML starts parsing. Your early <head> content runs in order.
  2. window.INTA executes — configuration only (policy URL, domain, company, optional gtagId, UI options). Nothing here loads third-party trackers by itself.
  3. uc.js loads — the CMP bootstrap from consents.cdn.intastellarsolutions.com. It should run before analytics, ads, or pixels that assume consent.
  4. Rest of <head> and body — GTM, gtag, Meta, embeds, etc.

If step 3 runs after GA4 or a pixel, you can get cookies or hits before the visitor chose—hard to defend under GDPR-style law and confusing in reports. That is why Quickstart insists on top of <head>.

2. How “blocking” actually works

“Blocking” here means: non-essential tracking must not behave as if the visitor already granted full consent before they interact with the banner.

That is achieved together by:

PieceRole
CMPShows the UI, stores the choice, applies documented signals to supported stacks.
Load orderLate or mis-ordered tags defeat the CMP—see Script lifecycle.
GTM triggers & tag consentTags must not fire on naked “All Pages” before consent unless your legal model explicitly allows it.
Vendor APIsGoogle Consent Mode v2, Meta consent parameters, etc.—each vendor defines how tags react.

Hard-coded <script src="https://…"> tags in HTML are not automatically rewritten. You must move them below the CMP or gate them (GTM, dynamic inject after consent).

3. Before the visitor chooses

Until a choice is stored (or defaults apply per your setup):

  • Marketing/analytics tags should stay restricted or not fire in a way that assumes full ad/analytics cookies—depending on your GTM and vendor configuration.
  • Google tags, when using Consent Mode with gtagId and correct defaults, can use consent-aware behaviour (including limited pings in Advanced Mode—see Google Consent Mode).

4. After the visitor chooses

When the visitor accepts, rejects, or picks granular categories:

  1. The CMP persists the decision (subject to cookie/storage rules).
  2. Integrated vendors receive updated consent signals where configured (e.g. Google Consent Mode updates when gtagId is set and tags are wired correctly).
  3. GTM should fire dependent tags only when your triggers match the new state (custom events, consent checks, etc.).

GTM / dataLayer: When consent changes, the banner pushes cookie_consent_update to dataLayer. In GTM, use a Custom Event trigger with that name so tags can fire on accept/reject/granular updates—see Events and API. There is still no documented global such as window.IntastellarConsents.*; inspect the Data Layer in GTM Preview for the current payload shape.

5. How GTM and GA receive signals

  • GTM: The recommended pattern is a Custom HTML (or equivalent) tag containing the same window.INTA + uc.js snippet, fired on Consent Initialization – All pages, before tags that need consent. See Google Tag Manager.
  • GA4 / Google Ads: With settings.gtagId and Consent Mode–aware tag settings, Google tags adjust behaviour to match consent instead of acting “fully on” silently.
  • Meta Pixel: Consent is handled via Meta’s options and your trigger timing—see Meta Pixel.

6. Why measurement does not have to “break”

After reject or limited consent, platforms like Google may still show aggregated or modelled metrics (per their policies). That is not the same as unrestricted personal tracking.

After accept, full measurement can resume if your container fires tags after consent is known.

We avoid promises like “zero impact on analytics”—we document order + Consent Mode + triggers so results are explainable and auditable.

7. What the CMP does not do

  • Replace your privacy policy, vendor list, or legal sign-off.
  • Fix tags you placed above the CMP or that ignore consent APIs.
  • Guarantee compliance without your correct configuration.

← Documentation home

Last updated