Common example. A client showed me a GA4 funnel report: 70% “viewed a product,” 50% added to cart", 5% begin checkouts. Numbers are not precise but "the issue’s probably at checkout,” they said.
I double-checked the raw data. Turned out: view_item wasn’t firing when someone opened a product page — it triggered when a product block loaded in the code. Sometimes during a scroll on the homepage, sometimes in the background. Users never saw the product — but GA4 counted it as a view.
GA4 funnels are based on events. But GA4 doesn’t verify:
• If the user actually saw the element
• If it was visible — or just rendered in the DOM
• If it was triggered by a script, scroll, or auto-load
• If there were duplicate events
• If the step sequence made sense — or just happened by chance
So the funnel looks behavioral — but it’s often just frontend logic. It assumes: event = action. But in reality, that's not always true.
In this case, the client:
• Spent two weeks fixing checkout UX
• Ran A/B tests — even though most users never made it that far
• The real issue? People bounced before ever engaging with product pages
The funnel looked “correct.” But it reflected scripts — not people.
Now, I treat GA4 funnels differently:
• Export data to BigQuery before any analysis
• Check how each event was triggered (manual, auto, scroll, etc.)
• Review timing between steps — was it a real journey?
• Look for duplicate events in one session
• Use heatmaps or click maps to validate actual behavior
GA4 is powerful. But its funnels aren’t true behavior tracking — just event sequences.
If you don’t check what’s behind the events, you’ll end up optimizing for scripts, not users.
Want to get all my top Linkedin content? I regularly upload it to one Notion doc.
Go here to download it for FREE.


