The Mike Teasdale 90% Drop: When a Cookie Banner Lies to Google

April 30, 2026
by Cherry Rose

On April 9, 2026, Mike Teasdale of Harvest Digital posted a warning that’s now circulating across UK and EEA PPC desks: a single Consent Mode V2 misconfiguration cost his client 90% of Google Ads measured conversions overnight in August 2025. Two days to diagnose. Only around 40% of the data was recovered through behavioral modeling — the remaining 60% is gone forever. The banner had been working the whole time. Visually compliant. Accepted by users. No console errors. It just wasn’t transmitting ad_user_data and ad_personalization to gtag. For a WooCommerce store, this exact failure is one plugin update away.

Why Compliant-Looking Banners Silently Break WooCommerce Conversion Tracking

Consent Mode V2 became enforced on July 21, 2025 with no warning email and no grace period for non-compliant accounts (Respectlytics, 2026). Stores running advertising in the European Economic Area or the UK had to start passing two new consent signals — ad_user_data (whether the user agreed to share data with Google) and ad_personalization (whether they agreed to personalised advertising) — to every Google tag firing on the page. The signals exist precisely so Google can decide whether to bid for that user and whether to attribute the conversion when one happens.

The problem isn’t the rule. The problem is the handoff between three things that all have to agree: your CMP plugin, the browser’s dataLayer, and gtag.

A banner that visually works can fail silently at the API layer. Users see a tidy “Accept all / Reject all” interface. They click accept. The CMP plugin records the choice. But if the plugin doesn’t push the V2 parameters into dataLayer the right way, gtag never sees them. From Google Ads’ perspective, every visitor on your site declined consent — even the ones who clicked accept.

That’s the failure mode that hit Teasdale’s client. And it’s why PPC Land’s coverage kept emphasising the word silently: there’s no error in your browser console, no flag in your Google Ads UI, no warning email. The first signal that something has gone wrong is the conversion graph collapsing.

The Numbers Behind the Silent Failure

Three statistics explain why this collapse is so destructive:

  • Consented users are 2–5× more likely to convert than users who declined (Google Ads Help, 2026). Smart Bidding learns from the consented half. If your banner accidentally tells Google nobody consented, you’ve handed Smart Bidding a dataset of mostly low-intent traffic — and it bids accordingly.
  • Globally, only 31% of users accept tracking cookies on average (Cookie Script, 2026). When the system works, you keep that 31% as observed conversions and Google models the rest. When it breaks, you lose both the observed and the modelled portions.
  • Behavioral modeling needs at least 1,000 daily denied events for 7 days, plus 1,000 daily granted users for 7 of the previous 28 days (Google Ads Help, 2026). Most SMB WooCommerce stores never meet this threshold even when everything is configured correctly. Teasdale’s client did, which is how they recovered any of it.

Translation: if your store doesn’t hit Google’s modelling thresholds, a Consent Mode V2 misconfiguration isn’t a 60% data loss — it’s a 100% data loss.

You may be interested in: Google Ad_Storage Becomes the Single Source of Truth on June 15

Why WooCommerce Stores Are Particularly Exposed

WooCommerce has structural reasons this hits harder than other stacks.

The CMP-to-gtag handoff usually involves multiple plugins. A typical WooCommerce setup has a consent banner plugin, a tracking plugin, sometimes Google Site Kit, sometimes a separate GTM plugin, and WooCommerce itself. Each one writes to dataLayer. Each one assumes a slightly different schema. Any plugin update can quietly change which keys it pushes, which versions of Consent Mode it speaks, or whether it respects an existing gtag('consent', 'default', ...) call.

Page caching can swallow consent updates. If your CMP writes consent state into a cached page that other visitors then receive, the next user inherits stale defaults. WP Rocket, LiteSpeed Cache, and Cloudflare Page Rules have all caused versions of this in the wild.

Most WooCommerce store owners can’t read the network tab. Diagnosis requires opening DevTools, watching the requests gtag fires to google-analytics.com/g/collect, and confirming the consent payload contains uad=1 and upa=1 after a user accepts. That’s a developer skill, not a store-owner skill — which is why Teasdale’s case took two days even with a senior agency on it.

For attribution problems WooCommerce stores already face, see Your WooCommerce Store Is Missing Cross-Device Conversions.

How to Audit Your Consent Mode V2 Signal Flow Today

Three checks, in order:

  1. Open your live site in a private window. Open DevTools → Network tab. Accept the cookie banner. Filter the requests by collect. You should see calls to google-analytics.com/g/collect or googleads.g.doubleclick.net. In the query string, look for gcs=G111 (granted) plus uad=1 and upa=1. If you see gcs=G100 or no uad/upa at all after accepting, your banner is misconfigured.
  2. Check Google Tag Assistant. Run a debug session and look for the consent state on each tag fire. Tag Assistant will explicitly say “ad_user_data: denied” when it shouldn’t. This is the screenshot Teasdale’s team eventually used to confirm the bug.
  3. Cross-check Google Ads’ Diagnostics tab. The conversion action’s diagnostics view will warn about a sudden shift in the granted/denied ratio. A healthy account sits around 30–40% granted in EEA traffic. If yours flipped to under 5% granted, that’s the same fingerprint.

Account-level case studies show recovery is possible if caught quickly. Air France saw a 9% conversion uplift and Volkswagen Belgium recovered 15–40% of their data after correctly implementing Advanced Consent Mode with Enhanced Conversions (YeezyPay, 2026). The variable is how long the misconfiguration ran before someone noticed.

The Architectural Fix: Stop Depending on the Browser Handoff

The deeper lesson from the Teasdale case is that browser-side conversion tracking is now a chain with too many links. The CMP plugin has to talk to gtag. Gtag has to make it past ad blockers (31.5% of users globally run them, per Statista, 2024). The browser has to honour the cookie before Safari’s ITP truncates it. Every single one of those handoffs is a place your conversion can disappear without a console error.

The structural answer is to send conversions from your server, not the browser. When the order completes inside WooCommerce, your server already knows the customer’s email, the consent state, the order value, and the source. None of that depends on a CMP plugin, a tag manager, or a cookie surviving 7 days of ITP.

This is the gap Transmute Engine™ closes. It’s a first-party Node.js server that runs on your own subdomain — for example, data.yourstore.com — not a WordPress plugin. The lightweight inPIPE plugin captures the woocommerce_payment_complete hook, batches the order with its consent state, and sends it to your Transmute Engine server, which then transmits Enhanced Conversions to Google Ads, the Conversions API event to Meta, and a streaming insert to BigQuery — all from your own domain, with consent signals attached at the server layer where no plugin update can break them.

For the wider rebuild, see The Clean Start: How to Set Up WooCommerce Tracking in 2026 Without GTM.

Key Takeaways

  • A consent banner can look fully functional and still cost you 90% of conversions — the failure is in the API handoff to gtag, not the visible UI.
  • Consent Mode V2 has been enforced since July 21, 2025 with no grace period and no warning emails. If you haven’t audited since, audit now.
  • Behavioral modeling won’t save SMB WooCommerce stores — Google requires 1,000 daily granted and 1,000 daily denied events for it to fire. Most stores don’t qualify.
  • WooCommerce is structurally exposed because the CMP-plugin-to-gtag handoff sits across 3–5 different plugins, any of which can break the contract on update.
  • Server-side first-party tracking removes the browser handoff entirely — your server already knows the conversion happened and what consent state was active at the time.

Frequently Asked Questions

<!– wp:yoast/faq-block {"questions":[{"id":"faq-question-38de64cf-bac2-4e8d-b5d3-5ae34299ca4e","jsonQuestion":"Why did our Google Ads conversions drop 90% overnight when our consent banner is working?","jsonAnswer":"A "working" consent banner only proves the UI is rendering. Consent Mode V2 requires the banner to push ad_user_data and ad_personalization values into dataLayer in a format gtag understands. If those values never reach gtag — usually because of a plugin conflict, a recent update, or a caching layer — Google sees every visitor as denied. Smart Bidding then bids on the assumption almost no one converts, and the measured conversion count collapses overnight.”},{“id”:”faq-question-80a2c645-d11e-4904-ae4c-39ca07c00b1e”,”jsonQuestion”:”Can I recover lost data after fixing a Consent Mode V2 misconfiguration?”,”jsonAnswer”:”Partially. Google’s behavioral modeling can reconstruct around 40% of attribution from aggregated data, as Mike Teasdale’s client experienced. The remaining 60% is permanently lost — there’s no backfill, no historical replay, no API to re-attribute past clicks. The data either reached gtag at the time or it didn’t.”},{“id”:”faq-question-9b26c560-0ae5-40ac-be98-2a7f92740842″,”jsonQuestion”:”What are ad_user_data and ad_personalization, and why does my consent banner not send them?”,”jsonAnswer”:”ad_user_data records whether a user consented to sharing their data with Google for advertising purposes. ad_personalization records whether they consented to personalised ads. Both were added to Google Consent Mode in late 2023 and became required in the EEA and UK from March 2024, with enforcement following on July 21, 2025. Many WordPress consent plugins shipped V2 support late or implemented it incorrectly, which is why so many stores transmit a banner-acceptance signal but not the underlying parameters.”},{“id”:”faq-question-64121414-99a5-4617-89fb-e1670ee67432″,”jsonQuestion”:”How do I check whether my WooCommerce consent banner is actually transmitting Consent Mode V2 signals?”,”jsonAnswer”:”Open your live site in a private window with DevTools open. In the Network tab, filter for collect. Accept the banner, then trigger an event (add to cart works). On each request, look for gcs=G111 and the presence of uad=1 and upa=1 in the query string. If they’re missing or set to 0 after acceptance, your banner is misconfigured. Google Tag Assistant gives you the same answer with friendlier labels.”},{“id”:”faq-question-f575f712-859f-401e-95c9-fa81e94002a3″,”jsonQuestion”:”Does server-side tracking remove the Consent Mode V2 risk entirely?”,”jsonAnswer”:”It removes the brittle browser handoff. With a first-party server architecture, your WooCommerce site sends the order to your own server when checkout completes — including the consent state recorded at that moment. The server then transmits to Google Ads, Meta, and other destinations with consent attached. A plugin update can no longer silently break the signal, because the signal isn’t dependent on a plugin-to-gtag handshake in the user’s browser.”}]} –>
Why did our Google Ads conversions drop 90% overnight when our consent banner is working?

A “working” consent banner only proves the UI is rendering. Consent Mode V2 requires the banner to push ad_user_data and ad_personalization values into dataLayer in a format gtag understands. If those values never reach gtag — usually because of a plugin conflict, a recent update, or a caching layer — Google sees every visitor as denied. Smart Bidding then bids on the assumption almost no one converts, and the measured conversion count collapses overnight.

Can I recover lost data after fixing a Consent Mode V2 misconfiguration?

Partially. Google’s behavioral modeling can reconstruct around 40% of attribution from aggregated data, as Mike Teasdale’s client experienced. The remaining 60% is permanently lost — there’s no backfill, no historical replay, no API to re-attribute past clicks. The data either reached gtag at the time or it didn’t.

What are ad_user_data and ad_personalization, and why does my consent banner not send them?

ad_user_data records whether a user consented to sharing their data with Google for advertising purposes. ad_personalization records whether they consented to personalised ads. Both were added to Google Consent Mode in late 2023 and became required in the EEA and UK from March 2024, with enforcement following on July 21, 2025. Many WordPress consent plugins shipped V2 support late or implemented it incorrectly, which is why so many stores transmit a banner-acceptance signal but not the underlying parameters.

How do I check whether my WooCommerce consent banner is actually transmitting Consent Mode V2 signals?

Open your live site in a private window with DevTools open. In the Network tab, filter for collect. Accept the banner, then trigger an event (add to cart works). On each request, look for gcs=G111 and the presence of uad=1 and upa=1 in the query string. If they’re missing or set to 0 after acceptance, your banner is misconfigured. Google Tag Assistant gives you the same answer with friendlier labels.

Does server-side tracking remove the Consent Mode V2 risk entirely?

It removes the brittle browser handoff. With a first-party server architecture, your WooCommerce site sends the order to your own server when checkout completes — including the consent state recorded at that moment. The server then transmits to Google Ads, Meta, and other destinations with consent attached. A plugin update can no longer silently break the signal, because the signal isn’t dependent on a plugin-to-gtag handshake in the user’s browser.

Audit your Consent Mode V2 signal flow today, then move conversion attribution off the brittle browser handoff entirely. Learn how Transmute Engine sends WooCommerce orders server-side from your own subdomain →

Share this post
Related posts