Why this matters
We audit a lot of sites. Roughly 9 in 10 have at least one GA4 misconfiguration that's silently breaking their reporting. Here are the five we see most often.
1. Filtering internal traffic by IP only
Your team works from coffee shops, home wifi, mobile data. IP filters miss 60–70% of internal traffic on a hybrid team. Use a cookie-based filter instead — set a cookie via a bookmarklet, filter on the cookie value.
2. Cross-domain tracking that isn't actually cross-domain
If your checkout is on a separate subdomain or third-party host (Stripe, Shopify, etc.), GA4's auto-detection often misses it. Verify with the DebugView that client_id persists across the boundary.
3. Conversion events that fire on every page
We've seen a "purchase" event fire on the order confirmation and on every refresh of that page. GA4 doesn't dedupe by default — you'll inflate revenue and ROAS for weeks before noticing.
4. Default channel grouping for paid traffic
GA4's default groupings collapse Google CPC, Display, and YouTube into "Paid". You want them split. Build a custom channel group or you'll never know which lever is working.
5. No server-side fallback for iOS
iOS 14.5+ and Safari ITP eat ~20–30% of your client-side events on mobile. A simple Cloudflare Worker proxying the Measurement Protocol recovers most of it.
The fix
None of these take more than an afternoon to fix once you see them. The catch is that none of them throw errors — your dashboards keep showing numbers, they're just the wrong numbers.
If you want a free GA4 audit, get in touch.