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.
What I did
- Mapped the real order of events on page load, step by step, from defaults to the first tag firing.
- Wired the consent banner to send its decision through gtag consent updates.
- Moved the default "denied" state into the server-rendered HTML, so it exists before any tag can load.
- Gated the Meta Pixel behind explicit ad consent and moved conversion events to fire from Stripe’s completion callback.
- 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.