Data quality is about whether the events you're collecting are describing real customer behaviour, or whether they're contaminated by internal visits, bot traffic, payment gateway redirects, or data that will age out before you need it.
Image placeholder
Internal traffic filter setup
A screenshot-style image of the GA4 Admin Data Filters panel showing an active internal traffic filter with the IP rule configured and State set to Active (not Testing). Callouts highlight the State column and the IP condition to draw attention to the two settings most often misconfigured: creating the filter but leaving it in Testing state, and entering an incorrect IP range.
| Check | What to look for | How to verify | Fix if failing |
|---|---|---|---|
| Internal traffic filter | Filter exists AND is set to Active (not Testing) | Admin: Data Settings: Data Filters — check state column | Create an internal traffic IP rule; set filter state to Active |
| Data retention | User and event data retention is set to 14 months, not the default 2 | Admin: Data Settings: Data Retention | Change to 14 months. Not retroactive — do it now |
| Referral exclusions | Payment gateways and third-party portals not creating phantom referral sessions | Acquisition report: look for unusual domains in Referral channel with high session count and zero conversions | Add the domain to Admin: Data Streams: Configure Tag: Unwanted Referrals |
| Bot filtering | Google's bot and spider filtering is enabled | Admin: Data Settings: Data Filters — "Internal Traffic" and check for bot filter | Enable in property settings (on by default in new properties but worth verifying) |
| PII in event data | No email addresses, names, or user IDs (if personally identifiable) in event parameters or page paths | DebugView: inspect parameter values on form_submit and page_view events | Scrub in GTM before the hit fires; never pass raw form field values as parameters |
| Cross-domain (if applicable) | Sessions don't break when a user moves between domains (e.g. main site to booking subdomain) | Check if a new session starts in GA4 when you manually navigate between the two domains | Configure cross-domain measurement in Admin: Data Streams: Configure Tag: Configure Domains |
Image placeholder
Before/after: removing internal traffic
A side-by-side chart showing session and conversion rate metrics before and after activating the internal traffic filter. Before: conversion rate is 14%, with agency IP visits included. After: conversion rate drops to 3.2%, which reflects real customer behaviour. The comparison illustrates how agency visits inflate conversion rate on low-traffic sites where internal visits represent a meaningful share of total sessions.
Data retention is the silent killer. Two months is long enough to fool you into thinking everything's fine — you can see recent data — but short enough to make year-over-year comparisons impossible and to lose data before a client asks for it. Change this on the first day you access any property.