For one eCom client, GA4 showed ~1,200 purchases per month.
Stable metrics, clean funnel — everything looked fine.

But hashtag#CRM and payment reports showed 1,400 purchases.
200 real orders never made it into analytics.

GA4 showed no errors. Events were firing. The dashboard looked “healthy.”
But the revenue didn’t match — and here’s why:

Browser-based tracking only works in perfect conditions. In reality:
• Users leave before the thank-you page loads
• GA script fails to fire due to slow internet
• iOS/Safari or AdBlockers block the event
• A session token or user ID might be lost
• GA4 doesn’t throw errors — the event is just gone

The payment goes through.
But GA4 never sees it.

And decisions are made based on this:
• ROI is calculated using incomplete data
• Budgets shift to “better” channels — which are just tracked more reliably
• Unit economics get distorted
• Hypotheses are killed off based on “objective” numbers that missed 200 sales

There’s no bug. Just invisible failure in the delivery chain.

Now I work differently:

• Validate totals using CRM or payment gateway — not GA4
• Track purchases server-side — so events aren’t browser-dependent
• Compare backend logs to GA4 for gaps
• Add a disclaimer to reports: “GA4 = visualization, not financial truth”
• Clarify which method is used — client-side, server-side, or hybrid

GA4 is great for trends.
But profit calculations need data that always arrives.

If you're missing purchases, check the browser — that's where many of them quietly disappear.

Want to get all my top Linkedin content? I regularly upload it to one Notion doc.

Go here to download it for FREE.