7 September 2026·5 min read
7 things that make GA4 data untrustworthy
Conversions counted as zero, ROAS that will not calculate, staging traffic in production. The seven GA4 problems we find most often, with how to check and fix each one.
GA4 does not raise an error when it is configured wrong. It quietly reports the wrong number instead. The seven problems below are the ones we find most often in real scans, and every one of them can be checked and fixed from inside GA4. The code after each heading (CV-02, for example) is its number among the thirty checks AnalyticScan runs automatically.
1. Conversions marked as key events that never actually collect
Symptom. Conversion counts sit at zero, or an event appears in your key events list while no data ever accumulates against it.
Cause. Marking an event name as a key event in GA4 Admin and actually firing that event on your site are two separate pieces of work. Flip the toggle without implementing the tag and you get a conversion that exists in name only. A typo in the event name produces the same symptom.
How to check in GA4. Open Admin → Events and note which events are marked as key events, then compare against Reports → Engagement → Events to see whether the same name has a non-zero count. Listed but zero means you have this problem.
How to fix it. Turn on GTM preview mode or GA4 DebugView and perform the conversion for real — complete a purchase, submit the form. If nothing fires, the tag was never implemented. If something fires under a different name, change the name registered in Admin to match what the site actually sends.
2. purchase events without value and currency, so ROAS cannot be calculated
Symptom. Purchase counts come through but revenue reads zero, and ROAS or conversion value is blank in your advertising reports.
Cause. The purchase event fires, but without the value (amount) and currency (code) parameters alongside it. GA4 accepts the event happily without them, so nothing surfaces as an error.
How to check in GA4. In Reports → Monetisation → Ecommerce purchases, look for purchases with zero revenue. Clicking a purchase event in DebugView shows exactly which parameters are being sent.
How to fix it. Send value as a number (not a quoted string) and currency as an ISO 4217 code such as USD or KRW. With only one of the two, GA4 will not count revenue at all. A lowercase code, or a symbol instead of a code, is not recognised.
3. Development and staging traffic mixed into production data
Symptom. Sessions outnumber real visitors, and odd page paths or localhost show up in reports.
Cause. When development and production share a measurement ID, every developer's test traffic is collected as real. Internal staff visits land the same way.
How to check in GA4. Switch a report's dimension to Hostname. Values like localhost, staging or vercel.app mean non-production traffic is coming in.
How to fix it. The reliable fix is a separate GA4 property or measurement ID for development. For something immediate, register your development IPs under Admin → Data Streams → Configure tag settings → Define internal traffic, then set the data filter to Active. Filters are not retroactive, so historical data keeps the mixed-in traffic.
4. Duplicate events counting the same action twice
Symptom. Pageviews or conversions come in at close to double the real figure, and bounce rate looks implausibly low.
Cause. Most often, a GA4 tag installed through GTM while a gtag.js snippet is also hard-coded into the site. It also happens when a manual tag re-sends something Enhanced Measurement already collects.
How to check in GA4. In GTM preview mode, load a page once and count how many page_view events fire. More than one is a duplicate. Counting collect requests in your browser's network tab works too.
How to fix it. Install the GA4 tag through exactly one path. If you use GTM, remove the gtag.js snippet from the site source. Where a custom event overlaps with Enhanced Measurement — scrolls, file downloads, outbound clicks — keep one and delete the other.
5. Events at zero from some date onward — a tag that stopped silently
Symptom. page_view or another core event drops to zero or falls off a cliff after a particular date, with no alert.
Cause. A deploy dropped the tag, a consent management platform started blocking it, or a GTM container was unpublished by accident. GA4 shows no error when data simply stops arriving.
How to check in GA4. In Reports → Engagement → Events, set the range to the last 30 days and look at the trend line. A step change to zero points at whatever shipped that day.
How to fix it. First confirm in DebugView whether the tag runs on the live site at all. To stop it recurring, set a custom insight in GA4 that emails you when a core event falls below a threshold.
6. Data retention left at the two-month default
Symptom. Explorations come back empty for anything a few months old, and year-on-year comparison is impossible.
Cause. GA4 retains event-level data for two months by default. Unless you change it, user-level data older than that is deleted. Aggregate numbers in standard reports survive, but the underlying events that Explorations need do not.
How to check in GA4. Admin → Data collection and modification → Data retention. If it reads two months, this applies to you.
How to fix it. Change it to 14 months and save. That is the maximum on the free tier and it costs nothing. It is not retroactive, so data already deleted does not come back — which is why it is worth changing today rather than later.
7. Email addresses and phone numbers sent to GA4 inside URLs
Symptom. Page path reports contain URLs with an email address or phone number in them.
Cause. A form submitted over GET leaves its input in the query string, and that URL is sent with the page_view. Post-login redirects that carry an identifier do the same.
How to check in GA4. Open the Page path and query string dimension and search for @ or a phone prefix. Any results mean personal data is being collected.
How to fix it. This is both a data quality problem and a breach of the Google Analytics Terms of Service. Switch the form to POST, or strip the parameter in GTM before the page path is sent. For data already collected, you can submit a data deletion request to Google.
In one line
Each code is the item's number among AnalyticScan's thirty checks. This guide is written for the free tier of GA4.