Before You Trust YourGA4 Data, Run ThroughThis List

14 checks worth doing before your numbers mean anything.

Before you look at anything else in a GA4 account, there’s one check worth doing first.

If you’ve never set up an internal traffic filter, your own team is in your data. Every demo your sales rep runs, every time someone from your office loads the homepage to see if something went live, GA4 logs it as a real session. Your numbers go up, your source data gets skewed, and your campaigns end up looking a little more efficient than they actually are.

Then there’s the one that makes people stop and think. If your site spans multiple domains and cross-domain tracking isn’t configured, your own website shows up as a referral source. You’re sending yourself traffic, and it logs as a real acquisition.

Neither of these throw errors. Your dashboard won’t flag them. You have to know to look for them.

Those are two of the fourteen checks on this list. The rest follow the same pattern: small configuration details that sit quietly in GA4 admin, making your numbers harder to trust without ever announcing themselves.

Run through these before you pull any benchmark, report any campaign result, or make any budget decision based on GA4 data.

The Checklist

Internal traffic filter

Your team’s sessions are in your data if this isn’t set up. Every time someone from your office checks whether the homepage loaded correctly, GA4 counts it as a real session.

Find it: Admin > Data Streams > Tag Settings > Define Internal Traffic, then Admin > Data Filters.

Cross-domain tracking

If your site spans multiple domains and this isn’t configured, your own website shows up as a referral source. You’re sending yourself traffic — and it logs as a real acquisition.

Find it: Admin > Data Streams > Configure Tag Settings > Configure Your Domains.

Referral exclusion list

Payment processors (Stripe, PayPal, Square) and other third-party tools send users back to your site and show up as referrals if they’re not excluded. This inflates referral traffic and makes your paid channels look weaker than they are.

Find it: Admin > Data Streams > Configure Tag Settings > List Unwanted Referrals.

Data retention setting

GA4 defaults to 2 months of event data for Explorations. If you want to run year-over-year comparisons in Explore, you need 14 months — and you need to set it before you need it.

Find it: Admin > Data Settings > Data Retention.

Google Ads link

If paid search is running and the accounts aren’t linked, your campaign data in GA4 is incomplete. Attribution gaps are hard to explain after the fact.

Find it: Admin > Product Links > Google Ads Links.

Auto-tagging in Google Ads

Even with a linked account, if auto-tagging is off in Google Ads, campaign data won’t pass to GA4. Paid traffic shows as organic or direct. This one lives in Google Ads, not GA4.

Find it: Google Ads > Settings > Account Settings > Auto-tagging.

Google Search Console link

Without it, organic search queries show as “(not provided)” in GA4. This is the only way to see what people actually searched before landing on your site.

Find it: Admin > Product Links > Search Console Links.

Staging or dev traffic in your reports

If developers test in a staging environment that uses the same GA4 property as production, that traffic is in your data. Look for non-production hostnames in your reports.

Fix it: Add a data filter excluding non-production hostnames, or use a separate GA4 property for development.

Conversion events are set to the right things

Many GA4 setups still have “session_start” or “first_visit” marked as conversions from early configuration. If your conversion rate looks suspiciously high, start here.

Find it: Admin > Events > check the “Mark as conversion” toggles.

Double-firing tags

If you have a hardcoded GA4 snippet and a GTM container both sending to the same measurement ID, every session is counted twice.

Check it: GA4 DebugView or GTM Preview mode.

UTM naming consistency

“Email” and “email” and “email-newsletter” are three different sources in GA4. If your team isn’t using a shared naming convention, the same campaign gets split across rows.

Fix it: A shared UTM naming doc, enforced before the next campaign goes out.

Enhanced measurement is intentional

Scroll depth, outbound clicks, file downloads, video engagement — GA4 fires these automatically when enhanced measurement is on. Know which ones are enabled and whether you’re actually using the data.

Find it: Admin > Data Streams > your stream > Enhanced Measurement.

Channel groupings are classifying traffic correctly

Default channel groupings don’t always handle newer traffic sources well. TikTok, LinkedIn organic, and newsletter traffic can end up in “Unassigned” if the rules don’t match.

Find it: Admin > Channel Groups — then check Unassigned in your acquisition reports.

Bot filtering is still enabled

GA4 turns bot filtering on by default, but it can be disabled. Unexplained session spikes that don’t correlate with anything real are a common symptom.

Find it: Admin > Data Settings > Data Filters.

If you find one (or three) that are misconfigured, you’re not alone. Most accounts have at least a couple of these. The good news is they’re all fixable in GA4 admin, usually in under ten minutes once you know where to look.

If you want help auditing your setup or you’re not sure what you’re seeing in your data, that’s what we’re here for.