GA4 Consent Mode v2 Without a Real CMP Is Smart Bidding on Guesses

May 8, 2026
by Cherry Rose

If your WooCommerce store has Consent Mode v2 enabled but no real consent management platform actually sending consent signals, GA4 isn’t reporting nothing — it’s reporting modelled estimates. Google’s documentation is explicit: when ad_storage or analytics_storage are denied, Google sends “cookieless pings” for measurement modelling, and the default state of Consent Mode is “denied” if no signal is sent (Google Developers, 2026). The reports look populated. The Smart Bidding numbers move. Conversions appear in your dashboard. But you cannot tell which ones are real customers and which ones are Google’s best guess — and Smart Bidding has been optimising against the model, not your buyers.

What “Cookieless Pings” Actually Are

Consent Mode v2 was Google’s answer to two problems: 60-70% of EU users reject cookies on a genuinely compliant banner (USENIX / CNIL studies, 2024), and 75% of websites fail basic consent requirements anyway (GDPR Enforcement Tracker, 2025). When the user denies analytics_storage, GA4 cannot drop or read its _ga cookie. Without that cookie, GA4 has no client_id to stitch sessions together. Without sessions, it has no conversions.

Google’s solution was to fire a stripped-down request anyway — the cookieless ping. Modelled conversions are estimates filling gaps where consent was denied — not real user data (Google Developers, 2026). The ping carries no identifiers and no cookie data. GA4 receives it, runs it through behavioural and conversion modelling, and produces a synthetic estimate of what the conversion volume probably would have been if consent had been granted.

Used correctly — with a real CMP setting consent state per visitor — modelling fills genuine gaps. Used incorrectly — with no CMP at all and Consent Mode v2 left in default-denied state — modelling fills everything.

The Three Consent Mode Scenarios (and Which One Most WooCommerce Stores Are In)

There are three ways Consent Mode v2 can be configured on a WooCommerce store, and they produce three very different reports.

Scenario A — No Consent Mode at all. The CMP just blocks GA4 from firing when consent is denied. Reports show only the conversions where the user accepted analytics. Numbers are lower but real. About a third of EU traffic is missing from the reports, but what’s there is accurate.

Scenario B — Consent Mode v2 with a properly wired CMP. The CMP writes granted or denied into dataLayer per visitor. GA4 fires fully when granted, fires cookieless pings when denied. Modelled conversions fill the denied gaps. Reports look complete. The model has real data points to triangulate against, so the estimates are reasonable.

Scenario C — Consent Mode v2 enabled but no real CMP wiring. Either the CMP plugin is installed but not configured, or the CMP doesn’t write to dataLayer in the format Consent Mode v2 expects, or the developer added the gtag consent default block to the page without ever building the consent UI on top. The default consent state is denied. Every page view fires a cookieless ping. The model has no real data points to anchor against and is essentially guessing in the dark.

On a typical WooCommerce store running 4-6 marketing pixels with 31.5% of users on ad blockers globally (Statista, 2024), Scenario C is the one most stores end up in by accident — and the reports look fine, which is why it persists.

You may be interested in: The Mike Teasdale 90% Drop: When a Cookie Banner Lies to Google

Why Smart Bidding Optimising on Modelled Data Goes Wrong

Smart Bidding (Target CPA, Target ROAS, Maximize Conversions) doesn’t ask whether a conversion is real or modelled. It optimises against the conversion column. If the column is full of estimates, Smart Bidding adjusts your bids based on patterns the model invented — not patterns your customers exhibited.

The compounding problem: Google’s models are trained on aggregate user behaviour across the entire ads ecosystem, not your specific WooCommerce store. Modelled conversions reflect what the average ecommerce site’s customers tend to do, with a small adjustment for your historical signal. If your customer base is unusual — a niche product, a particular geography, a seasonal pattern — the model will smooth that out toward the average, and Smart Bidding will chase the smoothed version.

The dashboard never tells you this is happening. The Conversion source dimension in GA4 separates “observed” from “modelled” only at aggregate report level, and most stores never split-check the column. CPAs look stable. ROAS looks reasonable. Bids continue to climb on phantom conversions.

You may be interested in: GA4 Predictive Audiences Need 1,000 Buyers in 28 Days

How To Tell If You’re In Scenario C

Three quick checks:

  • Open your site in an incognito browser. Don’t accept any banner. Open DevTools → Network → filter for collect?v=2. If GA4 is firing requests with gcs=G100 in the query string, you’re sending cookieless pings under default-denied state.
  • Check the GA4 Conversion Source dimension. In Reports → Acquisition → Traffic acquisition, add the Session source / medium dimension and check if Modelled conversions appears. If a high percentage of conversions are modelled, your real signal is thin.
  • Review the dataLayer. Open the homepage, type dataLayer in the console. Look for consent events with analytics_storage: granted or denied values. If you see no consent events at all, your Consent Mode v2 is firing on default state for every visitor.

If all three checks return the worst-case answer, your conversion column is largely synthetic and your Smart Bidding has been training on Google’s best guess of what your customers do.

The Fix Isn’t Another Consent Plugin

Bolting on another CMP plugin solves the wiring problem but inherits the same architectural fragility — every browser-side script and pixel still depends on the CMP loading first, the user making a choice, and that choice being read into dataLayer before any tag fires. Race conditions persist. Hardcoded scripts outside the CMP’s control still leak data without consent.

The architectural answer is to move conversion attribution off the browser 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 conversions from woocommerce_payment_complete server-side — these are real, completed orders, not browser pings — and routes them deduplicated to GA4, Google Ads, and Meta CAPI. Real orders enter the conversion column. Smart Bidding optimises on actual revenue events. Modelling becomes a small fill-in for browse behaviour, not the substrate everything sits on.

Key Takeaways

  • Consent Mode v2 default-denied is the worst-of-both-worlds state: reports look populated, but the data is largely modelled estimates.
  • Cookieless pings are not real conversions: they’re Google’s best-guess fill-ins built on aggregate ecosystem data, not your customers.
  • Smart Bidding can’t tell the difference: bids adjust against modelled CPAs as if they were observed, sending budget toward phantom patterns.
  • The default state is denied: if no consent signal arrives, Consent Mode v2 assumes the most restrictive state and models everything.
  • Server-side conversion capture is the fix: orders from woocommerce_payment_complete are real, identified events that Smart Bidding can actually optimise against.

Frequently Asked Questions

Are my WooCommerce GA4 conversions real or modelled?

Open Reports → Acquisition → Traffic acquisition in GA4 and add the Session source / medium dimension, then look for the Modelled conversions column. If a meaningful percentage shows there — or if the column is missing entirely because no real conversions exist to compare against — the conversions feeding Smart Bidding are estimates, not observed customer events.

How do I tell if Consent Mode is sending modelled pings?

Open your site in an incognito browser, decline any consent banner, then open DevTools → Network and filter for collect?v=2. If you see GA4 requests firing with gcs=G100 in the query parameters, those are cookieless pings under default-denied state — and every one becomes a modelled estimate in your reports.

Why are my conversion numbers inflated even without traffic?

Modelled conversions don’t require real users completing real purchases — they’re statistical fill-ins generated by Google when consent is denied. If your CMP is misconfigured and most visitors fall under default-denied, GA4 reports will show modelled volumes that look proportionate to traffic but don’t correspond to actual orders in your WooCommerce database. Reconcile GA4’s purchase event count against your WooCommerce orders table to see the gap.

If you can’t tell which conversions are real and which are modelled, your Smart Bidding has been training on Google’s best guess. Visit seresa.io to see what server-side conversion capture looks like on a WooCommerce stack.

Share this post
Related posts