GA4 Says We Lost Money
GA4 reported revenue down 30% and the team braced for a sales collapse. Shopify's own dashboard said nothing was wrong. Only one of those numbers was telling the truth.
The scenario
Larchfield Goods is a fictional online retailer that sells small-batch kitchen tools direct to consumers. It is a healthy little business: steady repeat customers, a tidy catalogue, and a checkout that runs on Shopify. The founder, Carla, isn't an analyst, but she checks GA4 every Monday because someone once told her that's what serious operators do.
One Monday in spring, the e-commerce report stopped her cold. GA4 showed revenue for the trailing month down 30% against the prior period. No promotion had ended. No product had gone out of stock. Nothing in the day-to-day felt different. But the chart was unambiguous: a third of the money, apparently gone.
The confident wrong conclusion
Carla drew the conclusion almost anyone would. Sales are collapsing. A 30% drop in reported revenue, with no obvious cause, read like the early signs of something serious — a demand problem, a market shift, customers quietly drifting to a competitor. She started sketching an emergency plan: a discount push, an email blast, maybe a paid-ads budget she couldn't really afford.
What she didn't do, at first, was the one thing that would have stopped the panic in its tracks: open the Shopify admin and compare. Shopify's dashboard, drawn from the actual orders that actually settled, showed revenue essentially flat. Two systems, the same month, a data discrepancy of nearly a third. Both could not be right.
The overlooked metric
The number Carla had been ignoring wasn't on the revenue chart at all. It was in how the sale got measured in the first place. Two things were quietly eating Larchfield's reported revenue, and neither had anything to do with customers.
The first was consent mode. Larchfield had recently tightened its cookie banner, and a large share of EU and Canadian shoppers were now declining analytics cookies. When a visitor declines, GA4 can't observe their behaviour directly — it models an estimate instead. Modelling fills some of the gap, but on a smaller site with a higher decline rate, a meaningful slice of real purchases simply never lands in the reports as observed revenue.
The second was a cross-domain tracking gap. Larchfield's storefront lived on one domain, but Shopify routed the final payment step through a checkout subdomain. Without the two domains stitched together, GA4 treated the jump to checkout as a brand-new session — and the all-important purchase event often fired in a context disconnected from the original visit, or didn't fire reliably at all. The result was textbook broken e-commerce tracking: orders completed on Shopify that GA4 never properly counted.
Shopify, by contrast, doesn't depend on any of this. It records a sale when money changes hands, server-side, regardless of cookies or domains. That's why its number was flat — it was the truth.
The corrected interpretation
Read correctly, there was no lost revenue at all. There was a measurement discrepancy, and a fixable one. GA4 hadn't detected a sales collapse; it had simply stopped seeing roughly a third of the sales it used to see, because the cookie banner changed and the checkout path was never stitched together.
The corroborating evidence was sitting in plain view. Shopify's server-side revenue — the system of record for money — was steady. Order counts were steady. Repeat-purchase rates were steady. The only thing that had moved was GA4's ability to observe, not the business underneath it. Once Carla treated Shopify as the source of truth for revenue and GA4 as a behavioural lens with known blind spots, the contradiction dissolved.
Her emergency discount plan would have spent real money solving a problem that didn't exist — and worse, the artificial revenue bump from the promotion would have muddied the picture further, making the underlying measurement bug even harder to find.
What to do next
If GA4 and your store's own dashboard disagree on revenue, treat it as a measurement question before a business one.
- Anchor revenue to your system of record. Shopify (or Stripe, or your payment processor) counts money server-side and is the truth for sales. Use GA4 to understand behaviour, not to audit your bank balance.
- Check cross-domain tracking first. If checkout lives on a different domain or subdomain, confirm the domains are stitched together — otherwise the purchase event fires in a broken session and revenue leaks out of the report.
- Account for consent mode. A stricter cookie banner will lower observed conversions even when sales are flat. Know your decline rate and whether modelling is enabled before you read any drop as real.
- Validate the e-commerce tracking end to end. Place a test order and confirm the purchase event arrives with the right value, currency, and transaction ID. Most "lost revenue" turns out to be an event that never fired.
- Watch the gap, not just the level. A widening split between GA4 and Shopify is a tracking-health signal in its own right — it usually points to a config change, not a customer one.
For the full breakdown of why these two numbers drift apart and how to close the gap, see "GA4 Revenue Doesn't Match Shopify: Causes and Fixes". Larchfield's money was never missing. It was only ever hiding from one of the two systems watching it.
Get the number read for you
WebSignalytics connects to your Google Analytics and emails a plain-language report every Monday — what changed, why it matters, and what to do next. So a tracking glitch never gets mistaken for a sales collapse again.
Start your free trialLarchfield Goods and Carla are illustrative — a composite created to demonstrate a real and common pattern.
← Back to all case studies