The growth illusion: GA4 shows 120 purchases. Cash register? — 8.
Here’s the harsh truth: 90% of analytics consultants walk in and say:
“Let’s count purchases based on visits to the ‘Thank You for your order’ page.”
I get it.
It’s convenient. The page loaded — must mean the purchase went through. The report looks great, the funnel is smooth, metrics are up — everyone’s happy.
But here’s the problem: that’s not a purchase.
It’s just a user loading a page. Often completely disconnected from reality.
I’ve seen projects like this: GA4 says it’s all perfect:
• traffic arrived
• product viewed
• added to cart
• checkout started
• purchase tracked!
The funnel shines, marketing celebrates, reports look amazing.
Then you open CRM — and hear crickets. Not a single paid order.
Why?
Because purchase event just means: “the user landed on Thank You page.”
Did they actually pay? Who knows. Maybe the payment failed, maybe they bailed, canceled, closed the browser, blocked cookies, turned on AdBlock or Brave — and nobody ever learned what happened at checkout.
• In analytics you see beautiful, non-existent numbers.
• 100 daily purchases on paper. 8 in reality.
• ROMI calculated, LTV projected, marketing reports filed. Everyone’s a hero.
Bonuses incoming.
Real case: 120 purchases in GA4 vs 8 in CRM.
A 15x gap.
Why? Because someone once decided: “If they reached the page — they bought.”
Let’s be honest: reaching the payment page ≠ purchase. At best — it’s intent.
• You can visit it three times and change your mind three times.
• You can place an order — and never pay.
• You can get blocked — and the server won’t even know what happened.
That’s why I’ve had one simple rule for years:
The purchase is counted only when confirmed by the backend.
• purchase = server signal: payment webhook, cash register API, backend success call — anything but the “Thank You” page.
• The rest — begin_checkout, clicks, Thank You pages — we track for funnel analysis, not for revenue.
• GA4 vs CRM mismatch >10%? It’s a bug. Time to investigate.
• All this gets written into the specs. Strictly. So no one comes back 6 months later suggesting: “Let’s just track the button click — faster.”
The result?
• Boring, but brutally honest analytics.
• A funnel you can trust.
• ROMI that actually means something.
• And marketing that brings real revenue, not pretty numbers.
If you work with GA4 to BigQuery exports, be sure to check out my SQL cheat sheet.