You open GA4 and see nothing. Zero users, no events, blank reports. Or worse — you see some data, but you know it's incomplete. Pages are missing, events aren't firing, and your real-time report shows 2 users when your site clearly has traffic.
GA4 tracking failures are almost always caused by one of 12 common issues. The fix is usually faster than you think — but only if you diagnose in the right order.
Critical Issues: Tag Installation and Configuration
1. The GA4 Tag Isn't Installed (Or Is On the Wrong Pages)
Symptoms: Zero data across all reports.
This is the most fundamental issue — especially common after site redesigns, CMS migrations, or theme changes. Your GA4 measurement ID (G-XXXXXXXXXX) needs to be present on every page. Check by opening your browser's Developer Tools → Network tab, filter for "collect", and look for requests to google-analytics.com or analytics.google.com.
The fix: Install via Google Tag Manager (recommended) or directly in your site's <head> tag. If using a CMS plugin, verify it's active and the measurement ID matches your actual GA4 property.
2. Wrong Measurement ID
Symptoms: Tag fires but data appears in the wrong property (or nowhere visible).
Teams often have the measurement ID from a different GA4 property — a staging property, a test property, or a deprecated one. Every GA4 data stream has a unique G-XXXXXXXXXX ID. Verify yours under Admin → Data Streams → your stream. Copy the ID directly from there, don't type it manually.
3. Consent Mode Blocking Collection
Symptoms: Dramatic data drop, especially from EU/EEA traffic.
If your Consent Management Platform (CMP) is incorrectly configured, it may set analytics_storage to denied by default and never update it — even after users explicitly consent. This silently blocks GA4 from collecting any data for those users. Check your browser console for the gtag('consent', 'update', ...) call after accepting cookies. If you don't see it, your CMP integration is broken.
4. Duplicate Tags Causing Data Inflation
Symptoms: Inflated page views, doubled event counts, revenue appearing to double.
If you have both a GTM tag and a hardcoded gtag.js snippet pointing to the same property, every event fires twice. Check for duplicate G-XXXXXXXXXX measurement IDs in your page source. Use the GA Debugger Chrome extension to spot doubled hits — you'll see identical events firing within milliseconds of each other in DebugView.
GTM and Implementation Issues
5. GTM Container Not Published
Symptoms: Tags work in GTM preview mode but not on the live site.
A classic mistake: you set up your GA4 tag in GTM, test it in preview mode where it works perfectly, then forget to click Submit to publish the container version. Until published, no changes go live for real users. Check your GTM container's version history to confirm the latest version is published and the version number matches what you expect.
6. Single Page Application (SPA) Not Sending Page Views
Symptoms: Only the first page view tracks; navigation within the app shows nothing.
React, Angular, Vue, and Next.js apps use client-side routing — the URL changes without a full page reload. GA4's enhanced measurement handles standard history.pushState() changes automatically, but some frameworks use custom routing that doesn't trigger this. Verify by navigating between pages and watching DebugView or the real-time report for new page_view events.
7. Event Parameter Limits Exceeded
Symptoms: Events fire but custom parameters are silently missing from reports.
GA4 has hard limits: 25 event parameters per event, parameter names max 40 characters, parameter values max 100 characters. Exceed any of these and GA4 silently drops the data — the event still fires and appears in reports, but the excess parameters vanish without any warning. Check your event schemas against these limits.
Less Obvious Causes
8. Ad Blockers and Browser Privacy Features
Symptoms: 15–30% data gap compared to server logs or backend order counts.
Ad blockers like uBlock Origin, Brave's shields, and Firefox's Enhanced Tracking Protection all block requests to google-analytics.com. This is expected behavior — it's not a bug you can fix client-side. The only complete solution is server-side tagging via GTM, which routes analytics through your own first-party domain and bypasses browser-level blocking.
9. Data Stream Is Paused or Deleted
Symptoms: Sudden and complete data stop on a specific date.
If someone paused or deleted the web data stream in GA4, no data will be collected even though your tag fires. Navigate to Admin → Data Streams and verify your stream is active. Also confirm the stream's domain matches your actual website domain — a mismatch here silently routes data to a stream nobody monitors.
10. Data Filters Excluding Legitimate Traffic
Symptoms: Partial data loss — some traffic or event types are missing but others aren't.
GA4 data filters can exclude traffic based on the traffic_type parameter. If a filter is set to Active (not just Testing), it permanently removes matching data. An overly broad internal traffic filter — like blocking a VPN IP range used by many external users — silently eliminates legitimate sessions. Check Admin → Data Settings → Data Filters.
11. Real-Time Report Delay and Processing Time
Symptoms: You think tracking is broken because you don't see data immediately.
GA4's real-time report has a 30-second delay. Standard reports can take 24–48 hours to process. If you just installed your tag, don't judge results from standard reports — use DebugView (Admin → DebugView) with the GA Debugger Chrome extension for instant, per-event verification without waiting for processing.
12. Browser Caching Serving Old Page Versions
Symptoms: You added the tag but it doesn't fire on your own device.
Your browser may be serving a cached version from before you added the GA4 tag. Hard refresh (Cmd+Shift+R on Mac, Ctrl+Shift+R on Windows) or test in a private/incognito window with a clean cache and no extensions installed.
Instant Configuration Diagnosis
NiceLookingData checks for configuration-level GA4 issues automatically — consent mode setup, duplicate tag detection, data stream status, and more. Run a free audit and get a prioritized list of exactly what's broken.
Systematic Debugging Workflow
When GA4 isn't tracking, work through issues in this order — the most common causes come first:
- Check if the tag is present on the page (view source → search for your G- ID)
- Verify the correct measurement ID in GA4 Admin → Data Streams
- Open DebugView to see if events arrive in real-time
- Check for consent mode blocking in the browser console
- Verify GTM container is published (not just saved/previewed)
- Look for duplicate tags or conflicting scripts in page source
- Test in a private window with all extensions disabled
- Check data filters and stream status in GA4 Admin
The majority of GA4 tracking failures are resolved within the first four steps. If you're past step 4 and still stuck, the issue is almost always consent-related, caused by a JavaScript error preventing the tag from executing, or a data filter removing traffic you're looking for.
Frequently Asked Questions
Why is GA4 not showing any data?
The most common causes are: the tag isn't installed on the page, the wrong measurement ID is configured, or a data filter is actively blocking traffic. Start by checking whether the tag fires at all using your browser's Network tab (filter for "collect" requests to google-analytics.com). If the request appears but data doesn't show in GA4, check the measurement ID.
Why does GA4 show less data than expected?
Partial data loss is typically caused by: Consent Mode blocking unconsented users, ad blockers filtering requests, an active data filter that's too broad, or Google Signals triggering data thresholding in reports. For a 15–30% gap, ad blockers are the most likely cause. For larger gaps on EU/EEA traffic specifically, check your Consent Mode implementation.
How do I verify GA4 is tracking correctly?
Use GA4's DebugView (Admin → DebugView) with the "GA Debugger" Chrome extension installed. This shows every event in real-time as it fires, including parameters. You can see exactly what GA4 receives and compare it against what your tags send. No waiting for 24-hour processing delays.
Why does GA4 show fewer users than Google Ads reports?
Discrepancies between GA4 and Google Ads user counts are normal and expected. GA4 measures sessions from users with analytics_storage consent; Google Ads counts clicks from its own infrastructure. Ad blockers, consent denials, and measurement timing differences all contribute to the gap. A 10–20% difference is typical and not a sign of broken tracking.
Why are GA4 events not showing in reports?
Events appear in DebugView and Realtime immediately but take 24–48 hours to appear in standard reports. If an event appears in DebugView but not in reports after 48 hours, check: whether the event name uses reserved GA4 keywords, whether a data filter is excluding those events, and whether the events happened during a period with active filters.
Does GA4 work with consent mode turned on?
Yes — but behavior changes based on consent state. With analytics_storage denied, GA4 sends cookieless pings without user identification. Key events (conversions) still fire but are reported in aggregate without user-level attribution. With analytics_storage granted, full tracking applies. This is the intended behavior under GDPR; the data gap you see is real, not a bug.
Can GA4 track Single Page Applications (SPAs)?
Yes, but it requires correct configuration. GA4's enhanced measurement auto-handles standard history.pushState() navigation. For frameworks using hash-based routing or custom navigation (common in older React or Angular setups), you need to manually trigger gtag('event', 'page_view', {...}) or configure a GTM trigger on history change events.
Analytics consultant turned founder. After years running the same GA4 and GTM audits across client engagements, Ludde built the audit into a product — so the pattern-matching takes a minute, not a meeting. More about Ludde →
Run a free GA4 audit.
Connect your Google Analytics 4 property. Our auditor runs 61 checks and gives you an instant health score with a plain-English action plan.