Analytics Data Quality: How to Spot and Fix Bad Data Before It Reaches Your Dashboard
Bad data sits quietly in your reports, looking like real numbers, until someone spots the contradictions. Every analytics setup has quality issues. The question is whether you know where yours are.
Updated 5 min read
Bad data does not announce itself. It does not throw errors or flash warnings. It sits quietly in your reports, looking like real numbers, until someone notices that form submissions doubled overnight (duplicate tags), or that organic traffic dropped to zero for a week (broken tracking nobody caught), or that the monthly report contradicts what GA4 shows (stale cached data).
Every analytics setup has data quality issues. The question is not whether your data is perfect. It is whether you know where it is imperfect and how that affects the decisions built on it.
The Five Categories of Bad Data
Understanding the category helps you diagnose faster and prioritize fixes.
| Category | What It Looks Like | Common Causes |
|---|---|---|
| Missing data | Metrics drop without explanation. Conversion counts fall while CRM records stay normal. | GA4 tag removed during redesign, consent banner blocking analytics, expired API credentials, new page deployed without GTM container. |
| Duplicate data | Conversion counts are double or more the CRM records. Pageviews-to-sessions ratio is abnormally high. | Two GA4 tags on the same page, enhanced measurement and GTM both firing the same event, multiple active data streams. |
| Misattributed data | Direct traffic is disproportionately high. Internal domains appear as referral sources. Large (not set) bucket. | Internal links tagged with UTMs, broken cross-domain tracking, inconsistent UTM naming, auto-tagging conflicts. |
| Contaminated data | Sessions spike with near-zero engagement. Geographic anomalies from data center cities. | Bot traffic, internal employee traffic, staging environment hitting production GA4, automated testing tools. |
| Stale data | Stored numbers for a specific date disagree with what GA4 shows today for the same date. | GA4 data pulled within the revision window and never re-read. Cached dashboard data. Report tool that pulls once and does not re-pull. |
The Data Quality Audit
Run this audit quarterly for every client, or immediately when onboarding a new one.
Verify tag installation
Open the site in Chrome with GA4 DebugView connected. Navigate to five key pages: homepage, main service page, blog post, contact page, and confirmation page. Verify each fires one page_view event. Check for duplicates (two page_view events for one page load).Verify conversion tracking
Submit a test form or trigger the client's conversion event. Watch DebugView. Verify the event fires once with the correct parameters and that the event name matches what is registered as a key event in GA4.Check for contamination
Pull the last 30 days and look for: sessions with engagement time under one second and event count of one (bot signature), sessions from known internal IPs, sessions from staging domains or localhost, and unusual geographic concentrations. Quantify the contamination as a percentage of total sessions.Verify source attribution
Check the source/medium report for (not set) entries, disproportionately high direct traffic, internal domains appearing as referral sources, and duplicate source entries with different capitalization. See our guide to UTM tracking best practices for naming standards.Check data freshness
For every connected data source, verify when data was last successfully pulled. Compare your stored number for a date from last week to what GA4 or Search Console shows today for the same date. If they disagree, your stored data is stale and the collection pipeline needs to re-read recent history.
Fixing Common Quality Problems
Duplicate tags
Check the page's HTML for hardcoded GA4 snippets (gtag('config', 'G-...')). Check GTM for GA4 configuration tags. Check for multiple GTM containers. Remove the duplicate and keep whichever source is more maintainable (usually GTM). Verify with DebugView: one page_view event per page load.
Broken form tracking
Check whether the form uses native HTML submission (enhanced measurement can detect it) or JavaScript submission (needs a custom event). For JS-based forms, fire the GA4 event from the form's success callback, not from a page load trigger. Verify: one event per submission matching CRM records.
Bot traffic inflation
Block at the infrastructure level (Cloudflare, WAF rules) for known bot IPs. For the reporting layer, create a segment that excludes zero-engagement single-event sessions. Check engagement rate before and after filtering. For a deeper dive, see our guide to detecting bot traffic in GA4.
Stale data in reports
Configure the collection pipeline to re-read a trailing window of recent days on every daily pull. Each re-read overwrites preliminary data with revised data. For Search Console, the revision window is longer than GA4's, so re-read accordingly.
Building Quality Into the Pipeline
Data quality is not a one-time audit. It is an ongoing practice built into the collection and reporting pipeline.
Daily: Automated freshness check (did data arrive from every source?) and automated volume check (is today's session count within the normal range?).
Weekly: Quick manual check of source/medium reports. Any new (not set) entries? Any new internal referral sources?
Monthly: Cross-reference GA4 conversion counts with CRM records. Check for new contamination patterns. Verify that filtered segments are still correctly configured.
Quarterly: Full audit: tag verification, conversion tracking test, contamination scan, source attribution check, data freshness verification.
For more on automating these checks across multiple clients, see our guide to managing analytics at scale.
Which data sources feed this report and when each was last updated
Any known data quality issues and their estimated impact
Any filters applied (bot exclusion, internal traffic removal) and what they affect
Whether recent dates contain preliminary data that may be revised
Any known tracking gaps or periods of missing data
The Honest Approach
Perfect data does not exist. Every analytics setup has blind spots, approximations, and known limitations. The professional approach is not pretending the data is perfect. It is documenting where it is not.
A client who reads "sessions for the final three days of the month are preliminary and may be revised" trusts the data more, not less. They know you are aware of the limitation and accounting for it. A client who discovers the limitation themselves, by checking GA4 and finding different numbers, trusts the data less and trusts you less for not mentioning it.
Transparency about data freshness and quality is a competitive advantage. Most agencies do not do it. The ones that do stand out as practitioners who understand their tools well enough to know where they are imperfect.