Universal Analytics sunset in July 2024, and most teams rushed through the migration. Some used Google's auto-migration tool, others rebuilt from scratch, and many did something in between. Now that the dust has settled and GA4 is your sole analytics platform, it's time to audit what actually made it across — and what was silently lost or misconfigured in the transition.
We've audited hundreds of post-migration GA4 properties and found that nearly every one has at least 3-5 issues that went undetected during migration. These issues silently corrupt your data, undercount conversions, or leave critical features disabled. This comprehensive 15-point checklist covers everything you should verify.
🔄 Post-migration audit
Migrated from UA to GA4? Our auditor checks that nothing was lost in translation — events, conversions, audiences, and configuration. Verify your migration →
Data Collection Basics (Checks 1-3)
Before you audit any downstream configuration, confirm that GA4 is actually receiving data and that the events it receives match what you expect. These three checks catch the most catastrophic migration failures — properties that look set up correctly in the UI but collect zero or wildly incorrect data behind the scenes. Skip these and every subsequent check is meaningless.
1. Verify GA4 Data Stream Is Connected and Receiving Events
Check that your GA4 data stream is actively receiving data. Go to Admin → Data Streams and verify three things: the stream shows recent data in the "Measurement" section, the Measurement ID (G-XXXXXXXXXX) matches what's deployed on your site, and events appear in the Realtime report when you browse the site yourself. A surprisingly common failure mode: the auto-migration tool created a new stream with a new Measurement ID, but your GTM container still sends to the old one, so data collects into a stream nobody monitors. Compare the Measurement ID in GTM against the one in GA4 — if they don't match, you've been losing data since the migration day.
2. Check Enhanced Measurement Settings for Conflicts
Enhanced Measurement auto-tracks several events (scrolls, outbound clicks, site search, video engagement, file downloads) that may conflict with custom GTM tracking you already have. If you had custom scroll tracking in UA via GTM and Enhanced Measurement is also tracking scrolls, every user scroll generates two events — inflating your scroll counts and polluting session data. Go to Admin → Data Streams → [your stream] → Enhanced measurement and review each toggle. Disable any that overlap with your GTM implementation. The most common duplicates: Scrolls (if you had UA scroll tracking), Outbound clicks (if you had link click tracking), and Site search (if your CMS has custom search event code).
3. Ensure All Custom Events from UA Have GA4 Equivalents
Create a spreadsheet mapping every UA custom event (Category/Action/Label) to its GA4 equivalent. Many auto-migrations create GA4 events with awkward concatenated names like category_action that lose the label entirely. Verify each event fires correctly in DebugView and consider renaming to follow GA4's recommended naming conventions: all lowercase, underscores instead of spaces or camelCase, max 40 characters. Once you rename an event, historical data under the old name is orphaned — Explorations can still query it, but standard reports will split the series. Plan renames during a low-traffic window and document the rename date so future analysts know when to join the two series.
Custom Configuration (Checks 4-6)
GA4 diverges sharply from UA when it comes to custom dimensions, ecommerce, and conversion definitions. If the migration tool handled your standard setup but missed custom configurations, you'll have data flowing but no way to segment or act on it. These three checks surface the most common "data is collected but reports are empty" scenarios.
4. Verify All Custom Dimensions Are Registered
GA4 requires custom dimensions to be explicitly registered in Admin → Custom Definitions → Custom Dimensions before they appear in reports. Unlike UA, sending a parameter with an event does not automatically make it available as a reporting dimension — you can see the parameter in DebugView, but standard reports and Explorations won't offer it as a breakdown option until registration. Check every custom parameter you're sending and confirm it's registered with the correct scope (event-scoped or user-scoped). Hard limit: 50 event-scoped and 25 user-scoped custom dimensions per property on the standard tier. If you're close to these limits, prune unused ones before adding new ones — GA4 silently stops registering new dimensions when the quota is hit.
5. Confirm Ecommerce Events Follow GA4 Naming Conventions
GA4 ecommerce uses entirely different event names and data structures than UA Enhanced Ecommerce. Verify that you're using GA4-specific events — view_item, add_to_cart, begin_checkout, purchase — with the correct items array format (not the old ecommerce.purchase.products structure). The auto-migration tool frequently produces hybrid implementations where the event name is correct but the payload is still UA-shaped, so purchases fire but revenue reports show zero. Open DebugView, trigger a test purchase, and confirm the event payload includes items (array), transaction_id, value, and currency. If any are missing, the event technically "works" but produces unusable reports.
6. Check Conversion Events (Key Events) Are Marked Correctly
In UA, goals were configured at the view level and could be anything from a specific URL to a time-on-site threshold. In GA4, conversions (renamed to "Key events" in early 2024) are marked at the property level by toggling the "Mark as key event" switch on specific events in Admin → Events. Verify that all your important conversion events are marked (purchase, sign_up, generate_lead, start_trial, subscribe). Equally important: check that no irrelevant events are accidentally marked — we see teams with page_view or scroll incorrectly flagged as key events, which pushes conversion counts into the tens of thousands and breaks every Smart Bidding strategy downstream.
Integrations (Checks 7-8)
GA4 doesn't automatically inherit UA's integrations. Google Ads links, BigQuery exports, Search Console links — each one has to be re-established between GA4 and the target system, and teams routinely finish the analytics migration without revisiting every downstream integration. Check these two integrations even if you think they were handled; failures here are silent until someone notices the ad platform isn't bidding correctly.
7. Verify Google Ads Linking and Audience Sharing
If you had UA linked to Google Ads, verify the GA4 → Google Ads link is active with Personalized Advertising enabled. Go to Admin → Product Links → Google Ads links in GA4 and confirm the correct Google Ads account appears with a green "Linked" status. Then switch to Google Ads: open Tools → Conversions and check that your conversion imports are pulling from GA4 (not the deprecated UA property). Update every Smart Bidding strategy that references a UA-sourced conversion — those conversions stopped reporting in July 2024 and any bidding strategy still depending on them has been optimizing against zero data ever since.
8. Confirm Cross-Domain Tracking Is Configured
Cross-domain tracking works differently in GA4 than UA. In UA, it required GTM linker configuration plus careful referral exclusions. In GA4, it's configured in Admin → Data Streams → [your stream] → Configure Tag Settings → Configure Your Domains. Verify that all domains participating in cross-domain tracking are listed — including any subdomains that trigger new sessions, payment gateways you redirect through, and SSO providers. Then open the Acquisition reports and search for your own domain appearing as a referral source. If you see it, cross-domain tracking is broken and your conversion attribution is scrambled until you fix it.
Data Quality (Checks 9-11)
The next three checks target data hygiene — the settings that determine whether the data you're collecting is clean, complete, and retained long enough to be useful. GA4's defaults are significantly more restrictive than UA's, and every property we audit has at least one of these three settings misconfigured.
9. Check Internal Traffic Filters Are Active (Not Testing)
GA4 internal traffic filtering requires three steps to work: defining internal traffic rules (by IP address), creating a data filter that uses those rules, and activating the filter. Many teams complete steps 1-2 but leave the filter in "Testing" mode indefinitely, which means internal traffic is still included in every report. Go to Admin → Data Settings → Data Filters and verify the filter status is set to "Active" — not "Testing" and not "Inactive." While you're there, double-check the IP ranges cover your current office, VPN exit nodes, and any remote workers' home IPs if they're static. IP-based filtering misses most remote team traffic unless you set it up thoughtfully.
10. Verify BigQuery Export Is Enabled
If you were using BigQuery with UA 360, or you want the flexibility of raw event data for future analysis, set up the GA4 BigQuery export. GA4 offers daily export on the free tier and optional streaming (hourly) export on GA4 360. Enable the link at Admin → Product Links → BigQuery Links, select your GCP project, and choose the dataset location. Verify data is flowing within 24 hours by checking your BigQuery project for events_YYYYMMDD tables. GA4 does not backfill BigQuery — every day you delay costs you a day of raw event history you can never recover. Enable it before you think you need it.
11. Confirm Data Retention Is Set to 14 Months
GA4's default data retention is 2 months — vastly shorter than UA's effectively unlimited retention. This affects Explorations only (standard aggregated reports are unaffected), but Explorations are where most serious analysis happens. Go to Admin → Data Settings → Data Retention and change the setting to 14 months immediately — it's the maximum available on the free tier. This change is not retroactive: any data that already aged out under the 2-month default is permanently deleted. If you migrated in July 2024 and never touched this setting, you've already lost a year of granular data that can never be reconstructed.
Privacy and Attribution (Checks 12-13)
Privacy regulations changed significantly during the UA-to-GA4 transition period. Consent Mode v2 became mandatory for EU/EEA traffic in March 2024, Google Signals introduced new thresholding behavior, and a migration done in 2023 or early 2024 almost certainly predates the current privacy requirements.
12. Check Google Signals Settings
Google Signals enables cross-device tracking, demographics, and interest data — but it also triggers data thresholding in reports, where rows with few users get suppressed to protect privacy. This creates the frustrating "(other)" bucket that absorbs huge chunks of your data. Go to Admin → Data Settings → Data Collection and review the Google Signals toggle. The trade-off: Google Signals ON gives you user-level insights (age, gender, interests) but you'll see thresholding kick in at low-volume segments; Google Signals OFF removes thresholding but eliminates demographics data entirely. For most B2B properties, OFF is the right call. For consumer brands, ON usually wins.
13. Verify Consent Mode v2 Implementation
If you're operating in the EU/EEA, Consent Mode v2 has been required for Google Ads remarketing and personalization since March 2024. Verify that your CMP (Consent Management Platform — Cookiebot, OneTrust, Iubenda, etc.) correctly sets all four consent signals: ad_storage, analytics_storage, ad_user_data, ad_personalization. Test with GTM Preview mode by accepting and denying cookies and confirming the right signals fire in each case. Without Consent Mode v2, your remarketing audiences in the EU are quietly shrinking and you're leaving Ads performance on the table. This is one of the most common findings in our post-migration audits of European brands.
Validation (Checks 14-15)
After checking every setting, you still need to validate that the end-to-end picture matches reality. Settings can look right in the UI but produce wrong numbers in reports. These two final checks catch the subtle errors — wrong parameter values, events in the wrong order, tracking gaps on specific pages — that no automated audit can find.
14. Test Key Conversion Paths End-to-End
Walk through your most important conversion paths — landing page → product page → cart → checkout → purchase for ecommerce, or landing page → blog → signup form → thank-you page for SaaS — with GA4 DebugView open in a second tab. Verify that every event fires in the correct sequence with the correct parameters. This catches issues automated checks miss: events firing with wrong parameter values, events firing in the wrong order (e.g., purchase before add_to_cart), or duplicate events from GTM + Enhanced Measurement overlap. Document your findings and test again any time you push a site-level change. Manual end-to-end testing is the only reliable way to catch timing and parameter-value bugs.
15. Compare Session Counts with a Reliable Source
Compare GA4 session counts over a 7-day period with another data source — your CMS analytics, server access logs, Cloudflare analytics, or a third-party tool like Plausible or Fathom. Some discrepancy (5-15%) is expected because analytics platforms have different session definitions and cookie-blocking rates. Significant discrepancies (over 20%) indicate real tracking gaps: the GA4 tag isn't loading on certain pages, consent blocking is suppressing more traffic than you realized, or events are being filtered incorrectly by an internal traffic rule. This is your final sanity check before trusting GA4 data for business decisions. Re-run it quarterly.
One-Click Migration Audit
NiceLookingData covers 11 of these 15 checks automatically. Connect your GA4 property, run an audit, and get a detailed report on which migration items are correctly configured and which need attention — in under 60 seconds.
Key Takeaways
- Nearly every post-migration GA4 property has 3-5 undetected issues — audit yours systematically using this checklist.
- Change data retention to 14 months immediately if you haven't already — the default 2-month setting permanently deletes data.
- Verify that internal traffic filters are not just defined but actually activated (common oversight).
- Ensure Google Ads is linked to GA4 (not the deprecated UA property) and conversion imports are updated.
- Test conversion paths end-to-end with DebugView — automated checks catch configuration issues, but manual testing catches data quality problems.
Run a free GA4 audit on your property
Connect your Google Analytics 4 property. Our auditor runs 50+ checks and gives you an instant health score with a plain-English action plan.
