I had a B2C client selling subscriptions online. GA4 showed 600 purchases.
CRM showed over 800. A 20%+ gap.
We started digging:
“Where are the missing payments?”
“Why isn’t GA4 seeing them?”
“Is the CRM wrong?”
On the surface, everything looked fine: purchase events were set up, tags fired, DebugView was clean. But all tracking was client-side — no server-side. And many events never made it through.
Client-side tracking works at first — but once money’s involved, reliability matters. And that’s where things break:
• AdBlockers and Safari’s ITP block tracking requests
• Redirects strip UTM tags or kill events
• Slow connections prevent events from firing
• GA4 stays silent — no error, just missing data
It’s like watching customers through a crack in the wall: some you see, many you don’t. And the reports still “look” fine — but they’re wrong.
Because there was no server-side tracking, the client:
• Turned off profitable creatives
• Cut bids on channels with “low ROI”
• Missed 200+ real purchases in GA4
• Wasted time chasing “duplicates” in the CRM — they weren’t duplicates, just invisible to GA
These weren’t bad decisions — they were missing data decisions. GA4 was silent. The CRM screamed. Marketing trusted the quiet one.
Now, for any project with:
• High ad spend
• Revenue tracking
• Long or multi-step funnels —
I always recommend GTM Server-Side. Why?
• Bypasses AdBlock and iOS restrictions
• Sends events directly from the server
• Works even with unstable sessions
• Creates reliable links between GA4, Meta, and CRM
GA4 isn’t lying — it just doesn’t see everything. If you're tracking money, it's time to give GA4 better eyes.
Want to get all my top Linkedin content? I regularly upload it to one Notion doc.
Go here to download it for FREE.


