After auditing hundreds of GA4 properties, the same mistakes keep showing up. Not exotic edge cases — the same fundamental misconfigurations, on properties owned by agencies, in-house teams, and solo marketers alike. The damage is silent: your reports look fine, your dashboards render, but the numbers you're acting on are wrong.
Here are the 11 most common issues we find, what they actually cost you, and exactly how to fix each one.
GA4's default data retention is 60 days. This means any user-level or event-level data older than two months is permanently deleted — silently, automatically, with no warning. Year-over-year comparisons, cohort analysis, lifetime value reporting: gone.
This is the single most common critical issue we find. The vast majority of properties we audit have never changed this setting.
Every time your team loads the website, you're recording sessions. Developers testing features, marketers checking landing pages, client demos — all of it counts as real traffic unless you explicitly exclude it. On smaller sites this can represent 5–20% of reported sessions.
The symptom: engagement metrics look unusually high (your team knows the site well), bounce rates are distorted, and pages that only your internal team visits show mysteriously elevated traffic.
When a user clicks "Pay with Stripe" and gets redirected to Stripe's hosted payment page, then back to your confirmation page — GA4 sees that return visit as a new session from stripe.com. The original traffic source (Google Ads, organic search, email) gets overwritten. Your purchase is attributed to Stripe.
This affects every property using Stripe, PayPal, Klarna, Square, or any other hosted payment page. Attribution data is fundamentally wrong if you haven't fixed this.
If your staging environment uses the same GA4 Measurement ID as production, every developer test, QA session, and pre-launch content review is recorded as real traffic. This inflates session counts, pollutes page reports with URLs that don't exist in production, and creates conversion events that never represented real user behaviour.
GA4 lets you mark any event as a conversion. Once marked, it stays marked — even if the underlying event stops firing. A form redesign, a GTM deployment error, a URL change that breaks a trigger: any of these can silently kill a conversion event while it remains active in your conversion tracking, reporting 0 with no alert.
GA4 treats UTM values as case-sensitive. "Email", "email", and "EMAIL" are three separate traffic sources. If your email platform uses "Email" and your team manually tags links with "email", your email channel traffic is split in two. The same applies to campaign names, medium values, and source names.
The symptom: unusually fragmented channel reports, small slivers of traffic from seemingly identical sources, email or social traffic that looks lower than expected.
Google's Consent Mode v2 became mandatory for EEA traffic in March 2024. Without it, GA4 cannot model conversions for users who decline cookie consent — meaning you have a legal compliance gap and your conversion data is understated for all EU/EEA visitors. Properties running Google Ads without Consent Mode v2 active are also at risk of losing ad personalisation features.
GA4's purchase event requires specific parameters for e-commerce reporting to work correctly: transaction_id, value, currency, and the items array. Missing any of these means revenue data is incomplete, e-commerce reports are unreliable, and Google Ads ROAS calculations are wrong.
currency omitted entirely, or transaction_id being dynamic and occasionally returning undefined.GA4 gives you 50 custom dimension slots per property. Once full, you cannot add new ones without deleting existing ones — and deleting a custom dimension removes it from all historical reports. Properties that have grown organically over time often discover they're at 45+ of 50 with no clear picture of which dimensions are still in use.
If your funnel spans multiple domains — a main site plus a separate checkout domain, a subdomain on a different TLD, or a booking platform — GA4 will create a new session every time a user crosses domain boundaries, breaking attribution and inflating session counts.
GA4's interface limits how far back you can query, applies sampling to large reports, and aggregates data in ways that make certain analyses impossible. BigQuery export gives you raw, event-level, unsampled data going back as far as you've exported — but only from the point you enable it. You cannot retroactively export historical data.
Run the audit automatically
Finding these issues manually requires Admin access, knowledge of where each setting lives, and time. Our automated tool checks all 47 issues in under 60 seconds and gives you a prioritised PDF report with specific fixes for everything it finds.