Consent load order

Victory+ · APMC, 2026

Fixing the order in which consent, Tag Manager and ad tags load, so nothing fires before the user decides.

Context

The site runs a consent banner, Google Tag Manager and several ad and analytics tags. The banner is where the user decides; Tag Manager is where tags actually fire.

Problem

Two silent bugs. The choice made in the banner never reached Google. And Tag Manager could load before the consent defaults were set, and Google treats undefined consent as granted.

The order of events on page load after the fix. Consent defaults are in the server-rendered HTML before Tag Manager loads.

What I did

  1. Mapped the real order of events on page load, step by step, from defaults to the first tag firing.
  2. Wired the consent banner to send its decision through gtag consent updates.
  3. Moved the default "denied" state into the server-rendered HTML, so it exists before any tag can load.
  4. Gated the Meta Pixel behind explicit ad consent and moved conversion events to fire from Stripe’s completion callback.
  5. Made consent per account, so a decision follows the user instead of the device.

Outcome

  • Tags fire only after a decision, and the decision reaches the platforms that need it.
  • Along the way, fixed a missing placement parameter that was misattributing revenue in marketing reports.

Stack

Nuxt SSR, Google Tag Manager, Consent Mode, Sourcepoint, Meta Pixel

Want to talk about work like this?

I’m happy to go deeper on any of it, including what I’d do differently.