You’ve set up GA4, added the tracking code, and waited. Now you check your reports and see… nothing. Empty charts. Zero users. No data. GA4 data not showing up is alarmingly common, and the cause isn’t always obvious.
Here’s the complete guide to diagnosing and fixing missing GA4 data.
First: Check Realtime Report
Before troubleshooting historical reports, check if data is flowing right now:
- Open GA4
- Go to Reports → Realtime
- Open your website in another tab
- Browse around for 30 seconds
- Check if your session appears in Realtime
If you see yourself in Realtime: Data is flowing. Your issue is with historical reports—skip to the “Processing Delays” section.
If Realtime shows nothing: Data isn’t reaching GA4. Start with the section below.
Problem 1: GA4 Code Not Installed
The most common reason for GA4 data not showing up: the tracking code isn’t actually on your site.
Verify Installation
Open your website and check DevTools:
- Press F12 to open DevTools
- Go to Network tab
- Filter by “google-analytics” or “gtag”
- Reload the page
You should see requests to:
www.googletagmanager.com/gtag/js?id=G-XXXXXXXX(if using gtag.js)www.google-analytics.com/g/collect(the actual data being sent)
If you don’t see these requests, your tracking code isn’t installed or isn’t loading.
Common Installation Issues
Wrong property ID: GA4 uses G-XXXXXXXX format. If you see UA-XXXXXXXX, that’s Universal Analytics (deprecated).
Code in wrong location: The gtag.js snippet should be in your <head> section:
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXX');
</script>
</head>
GTM but no GA4 tag: If you use GTM, you need a Google Analytics: GA4 Configuration tag. Just having GTM installed doesn’t automatically send data to GA4.
JavaScript errors: Check the Console tab for JavaScript errors. Errors before GA4 loads can prevent it from running.
Problem 2: Wrong Property or Data Stream
You might be looking at the wrong place in GA4.
Verify Property
GA4 allows multiple properties per account. Make sure you’re viewing the right one:
- Check the property selector (top left, shows property name)
- Verify the Measurement ID matches your code: Admin → Data Streams → Your stream
- The
G-XXXXXXXXin your code must match
Check Data Stream
Within a property, data streams capture traffic from specific sources:
- Go to Admin → Data Streams
- You should see your web stream listed
- Click on it and verify:
- Stream URL matches your site
- Measurement ID matches your code
- “Receiving traffic in the past 48 hours” shows “Yes”
If “Receiving traffic” shows “No” but you’ve verified the code is installed, continue troubleshooting below.
Problem 3: Processing Delays
GA4 has significant data processing delays—this catches many people.
Expected Delays
- Realtime reports: 30 seconds to 2 minutes
- Standard reports (Traffic, Engagement): 24-48 hours
- Exploration reports: 24-48 hours
- Conversion reports: Up to 72 hours
- Attribution reports: 72+ hours
If you just set up GA4 today, wait 48 hours before panicking. Check Realtime to confirm data is flowing, then be patient.
Why So Slow?
GA4 processes data in batches, not real-time (despite the “Realtime” report name). It also applies:
- Spam filtering
- Bot filtering
- Data modeling
- Attribution calculations
This takes time.
Problem 4: Data Filters Excluding Traffic
You may have inadvertently filtered out all your traffic.
Check Internal Traffic Filters
- Go to Admin → Data Settings → Data Filters
- Look for “Internal Traffic” filter
- If it’s set to “Active”, it’s excluding traffic
- Check if you defined internal traffic too broadly
To check internal traffic definition:
- Admin → Data Streams → Your stream → Configure tag settings → Show all → Define internal traffic
- Review the IP addresses listed
- Make sure you didn’t accidentally include all traffic
Check Developer Traffic Filters
Admin → Data Settings → Data Filters → “Developer Traffic”
If active, this filters traffic from devices with debug mode enabled.
Quick Test
Temporarily disable all filters:
- Admin → Data Settings → Data Filters
- Set each filter to “Testing” mode (doesn’t exclude, just marks)
- Wait 24 hours and check if data appears
- Remember to re-enable filters after testing
Problem 5: Consent Mode Blocking
Google Consent Mode, if misconfigured, can block all data collection.
Check Consent Status
In your browser console:
// See current consent state
console.log(window.dataLayer.filter(d => d['0'] === 'consent'));
Look for the consent update. If analytics_storage is denied, GA4 won’t collect full data.
Common Consent Issues
Consent banner never fires consent update: Your CMP (Consent Management Platform) must push a consent update to the data layer.
// This should happen when user accepts
gtag('consent', 'update', {
'analytics_storage': 'granted'
});
Default consent set to denied and never updated: Check your GA4 configuration tag in GTM or your gtag.js code.
Consent tag fires after GA4: The consent update must happen BEFORE your GA4 config tag fires.
Problem 6: Ad Blockers and Privacy Tools
Ad blockers block GA4 for a significant percentage of users—but they shouldn’t block your own traffic during testing.
Check Your Browser
Temporarily disable ad blockers and test:
- Disable uBlock Origin, AdBlock, etc.
- Turn off browser’s built-in tracking protection
- Open incognito without extensions
- Visit your site and check Realtime
If you see yourself now, your extensions were blocking GA4.
Real User Impact
For actual visitors, expect 10-30% blocking rate depending on your audience. Tech-savvy audiences block at higher rates. But this shouldn’t make reports completely empty—you should still see the non-blocking majority.
Problem 7: Cross-Domain Tracking Issues
If you have multiple domains and configured cross-domain tracking incorrectly, you might be losing data.
Check Referral Exclusions
- Admin → Data Streams → Your stream → Configure tag settings → Show all
- Look for “List unwanted referrals”
- Make sure you haven’t excluded domains that shouldn’t be excluded
Check Cross-Domain Setup
If you expect traffic to flow between domains (e.g., main site to checkout):
- Both domains need the same GA4 property
- Cross-domain linker must be configured
- Domains must be listed in cross-domain settings
Misconfigured cross-domain tracking can cause sessions to break, losing attribution and sometimes data.
Problem 8: Server-Side Issues
Sometimes the problem is how your server delivers pages.
Caching Problems
If your site uses aggressive caching:
- The GA4 snippet might not be on cached pages
- Old cached pages might have old/wrong IDs
- CDN might be serving pages without tracking
Test by adding a cache-busting parameter: yoursite.com/?nocache=12345
Single-Page Application (SPA) Issues
SPAs need special GA4 configuration:
// Must manually track page views on route changes
gtag('config', 'G-XXXXXXXX', {
page_path: '/new-page-path'
});
If you’re not tracking virtual pageviews, you’ll only see landing page data.
Server-Side Rendering
If pages render server-side, ensure:
- GA4 snippet is included in the server-rendered HTML
- Client-side hydration doesn’t break tracking
- No errors in the JavaScript execution
Problem 9: Property Configuration Issues
Check these GA4 property settings.
Data Retention
- Admin → Data Settings → Data Retention
- Default is 2 months for free accounts
- If you’re looking at older data, it may have been deleted
Set to 14 months if available for your account type.
Timezone
- Admin → Property Settings → Reporting time zone
- Wrong timezone can make data appear on unexpected days
- Check if “no data today” is actually “data arrived but filed under yesterday”
Currency
If tracking revenue, mismatched currency settings can cause values to appear as zero.
The Debugging Flow
Use this systematic approach when GA4 data is not showing up:
Step 1: Realtime Check
Open Realtime, visit your site, look for yourself. This confirms data is flowing.
Step 2: Code Verification
DevTools → Network → Filter “google-analytics” → Verify requests are sent.
Step 3: DebugView
Add ?gtm_debug=1 to your URL, then check GA4 DebugView (Admin → DebugView) for events.
Step 4: Configuration Review
Verify property ID, data stream, measurement ID all match.
Step 5: Filter Audit
Temporarily disable all data filters and wait 24 hours.
Step 6: Consent Check
Verify consent mode isn’t blocking with analytics_storage: denied.
Step 7: Wait
If everything looks correct, wait 48-72 hours for processing.
Still No Data?
If you’ve verified all of the above and GA4 reports are still empty after 72 hours:
- Multiple containers overwriting: Check for duplicate GTM containers or multiple GA4 installations
- Content Security Policy: Your site’s CSP might be blocking google-analytics.com
- JavaScript framework conflicts: React, Vue, Angular can sometimes interfere
- Third-party script conflicts: Other analytics tools might be conflicting
These require deeper technical investigation.
Get a free scan and we’ll diagnose exactly why your GA4 data isn’t showing up and give you specific steps to fix it.