GTM Tag Sequencing: The Consent Firing Order Problem

April 10, 2026
by Cherry Rose

Google enforced Consent Mode V2 for EEA and UK traffic on July 21, 2025. Most WooCommerce stores scrambled to install a consent banner — but banner installed is not the same as consent firing correctly. GTM does not guarantee tag firing order by default. On the same page load, your Google Ads conversion tag can fire before your consent initialization tag. Your analytics dashboard shows green. Your store is technically non-compliant.

The mechanism behind this is called tag sequencing. Most GTM guides never explain it. Here’s why it matters and how to fix it.

Why GTM Doesn’t Fire Tags in Order

The assumption most store owners make is logical: you install a consent plugin, GTM sees the consent state, tags wait their turn. That’s not how GTM works.

GTM fires tags based on triggers — and by default, multiple tags sharing the same trigger (like All Pages or DOM Ready) fire in parallel, not sequentially. There is no guaranteed execution order when two tags share the same trigger type. On a fast connection, the race condition is invisible. On a slow mobile connection or a site with heavy plugin overhead, you can see it clearly in GTM Preview: the Google Ads tag fires in the Tags Fired column before your consent initialization tag does.

WordPress makes this worse than most platforms. Multiple plugins compete for execution priority: GTM4WP fires the GTM snippet, your consent plugin tries to initialize consent signals, and Google Site Kit may load its own tag manager instance on top of that. GTM4WP and Google Site Kit running simultaneously create duplicate tags with inconsistent consent handling — the most common WordPress consent conflict identified in current analysis (SR Analytics, 2025).

The result: your consent banner shows up correctly, a visitor rejects cookies, and your Google Ads conversion tag fires anyway — before the rejection signal was ever read.

Two Terms You Need to Understand

Before the fix, two GTM concepts need to be clear.

Consent Initialization Trigger

This is a special trigger type in GTM designed to fire at the very start of the page load — before any other GTM triggers execute (Google Tag Manager documentation, 2025). It exists specifically for consent management. When your CMP (Consent Management Platform) tag is assigned this trigger, it runs first in the GTM execution queue, setting consent defaults before any advertising or analytics tag has a chance to fire.

Most WordPress setups assign the CMP tag to the All Pages trigger instead. That puts it in the same pool as everything else — no priority, no guaranteed sequence.

Tag Sequencing

Tag sequencing is a GTM feature that lets you declare: “Tag A must fire before Tag B.” You configure this inside any tag’s advanced settings as a “Setup Tag” (fires before) or “Cleanup Tag” (fires after). When properly configured, your consent initialization tag becomes a Setup Tag for every advertising and analytics tag in your container — ensuring consent state is established before a single conversion event leaves your site (Google Tag Manager documentation, 2025).

You may be interested in: Google Consent Mode V2 Data Loss: What Broke After July 2025 Enforcement

How to Fix the Firing Order in GTM

This is a four-step process inside your GTM workspace.

Step 1: Check Your CMP Tag’s Trigger

Open your GTM container and find the tag your consent plugin uses to initialize consent signals. If that tag is assigned to All Pages, DOM Ready, or Window Loaded — it has no firing priority. Change the trigger to Consent Initialization trigger type.

Step 2: Verify Consent Initialization Trigger Exists

In GTM’s Trigger section, look for a trigger of type “Consent Initialization — All Pages.” If it doesn’t exist, create one. It requires no conditions — it fires on every page, just earlier than everything else.

Step 3: Set Your CMP Tag as a Setup Tag

Now open each of your advertising and analytics tags — Google Ads conversion, GA4 configuration, Facebook Pixel, Bing UET. Inside Advanced Settings, find “Tag Sequencing.” Under “Fire a tag before [tag name] fires,” select your CMP initialization tag. This creates a hard dependency: GTM cannot fire the advertising tag until the consent tag has completed.

Do this for every tag that touches user data.

Step 4: Confirm Order in GTM Preview

Use GTM Preview mode to load your WooCommerce store. In the Tags panel, click through the page load events. The Tags Fired column should show your CMP tag appearing before any Google Ads or GA4 tag in the sequence. If you see a Google tag firing in the same event cycle as your CMP tag with no clear order, the setup tag link is missing.

60-70% of EU visitors reject cookies when accept and reject options are equally prominent (USENIX Security Research / CNIL, 2024). That rejection signal needs to reach your tags before they fire — not after.

You may be interested in: Does Your WooCommerce Tracking Plugin Fire Pixels Before Consent Is Given?

Why This Keeps Breaking on WordPress

Even after correct GTM configuration, WordPress stores face a problem that doesn’t exist on leaner platforms: plugin execution order at the PHP level.

Your consent plugin may load after GTM fires. If GTM loads in the <head> via GTM4WP and your consent plugin initializes via a footer hook, the entire GTM container — including the consent initialization trigger — has already run before your plugin had a chance to establish a consent default. The tag sequencing inside GTM is correct; the page architecture undermines it.

Simo Ahava, co-founder of Simmer and one of the most cited GTM implementation experts, puts it directly: the consent signal must fire before any Google tag initialises — not before the page loads, but before the tag container executes its first tag. Most WordPress setups do not guarantee this order.

The GDPR enforcement environment makes this a live risk, not a theoretical one. September 2025 alone generated EUR 479.6 million in GDPR fines — nearly 10% of all fines since 2018 concentrated in a single month (GDPR Enforcement Tracker, 2025). Regulators are actively auditing consent implementations, including the gap between banner display and tag behaviour.

Tag sequencing solves the GTM race condition — but it doesn’t solve the WordPress plugin execution gap above it. As long as consent checking depends on a JavaScript tag firing in a browser, you’re managing a fragile chain of timing dependencies across plugins, themes, and page load sequences.

The cleaner approach is to check consent state before events leave WordPress entirely. Transmute Engine™ is a first-party Node.js server that runs on your subdomain (e.g., data.yourstore.com). The inPIPE WordPress plugin captures WooCommerce events and checks consent state at the PHP hook level — before the data batch is sent via API to the Transmute Engine server. No GTM initialization order. No race condition. No silent compliance failure while your dashboard shows green.

Key Takeaways

  • GTM fires tags in parallel by default — your consent initialization tag has no priority over your Google Ads tag unless you configure it explicitly.
  • Use the Consent Initialization trigger type for your CMP tag — not All Pages, not DOM Ready.
  • Set your CMP tag as a Setup Tag for every advertising and analytics tag in your GTM container.
  • Verify in GTM Preview — the Tags Fired panel shows execution sequence; your CMP tag must appear before any data-collecting tag.
  • WordPress plugin load order can undermine correct GTM configuration — if your consent plugin initializes after GTM fires, tag sequencing alone won’t fix it.
What is the correct tag firing order in GTM for Consent Mode V2?

Your consent management platform (CMP) initialization tag must fire before any advertising or analytics tag. In GTM, this requires two steps: (1) assign your CMP tag to the Consent Initialization trigger type rather than All Pages, and (2) set your CMP tag as a Setup Tag inside the Advanced Settings of every Google Ads, GA4, and Facebook tag in your container. This creates a hard firing dependency that GTM enforces before any data-collecting tag can execute.

Does GTM fire tags in order or all at once?

By default, GTM fires tags that share the same trigger type in parallel — there is no guaranteed sequence. Multiple tags on an All Pages trigger can fire in any order. To enforce sequence, you must use tag sequencing (Setup Tags and Cleanup Tags) in GTM’s advanced tag settings, or use the Consent Initialization trigger type for tags that must execute first.

Why is my consent banner not blocking Google tags on WordPress?

There are two common causes on WordPress. First, your CMP initialization tag may be on an All Pages trigger instead of the Consent Initialization trigger — giving it no priority over Google tags. Second, your consent plugin may load via a WordPress footer hook while GTM fires in the page head, meaning GTM has already initialized and fired tags before your plugin established any consent default. Both problems need separate fixes: GTM-level tag sequencing for the first, and plugin load order or server-side consent checking for the second.

What is GTM tag sequencing and how does it work with consent mode?

Tag sequencing is a GTM feature that forces one tag to complete before another can fire. You configure it in a tag’s Advanced Settings section as either a Setup Tag (fires before the current tag) or Cleanup Tag (fires after). For consent mode compliance, you set your CMP initialization tag as a Setup Tag for all advertising tags. GTM then treats the CMP tag’s successful execution as a prerequisite before allowing the advertising tag to fire on any page load.

If your GTM consent configuration is correct but your conversion tracking still shows gaps, the problem may have already moved upstream. Seresa.io covers the architecture that closes those gaps at the server level.

Share this post
Related posts