GA4 Data Not Showing Up? Why Your Reports Are Empty (And How to Fix It)

GA4 reports showing no data or zeros? Here's why GA4 data goes missing and how to get your analytics tracking back—from setup issues to processing delays.

GA4missing dataempty reportstroubleshootingGoogle Analytics

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:

  1. Open GA4
  2. Go to Reports → Realtime
  3. Open your website in another tab
  4. Browse around for 30 seconds
  5. 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:

  1. Press F12 to open DevTools
  2. Go to Network tab
  3. Filter by “google-analytics” or “gtag”
  4. 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:

  1. Check the property selector (top left, shows property name)
  2. Verify the Measurement ID matches your code: Admin → Data Streams → Your stream
  3. The G-XXXXXXXX in your code must match

Check Data Stream

Within a property, data streams capture traffic from specific sources:

  1. Go to Admin → Data Streams
  2. You should see your web stream listed
  3. 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

  1. Go to Admin → Data Settings → Data Filters
  2. Look for “Internal Traffic” filter
  3. If it’s set to “Active”, it’s excluding traffic
  4. Check if you defined internal traffic too broadly

To check internal traffic definition:

  1. Admin → Data Streams → Your stream → Configure tag settings → Show all → Define internal traffic
  2. Review the IP addresses listed
  3. 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:

  1. Admin → Data Settings → Data Filters
  2. Set each filter to “Testing” mode (doesn’t exclude, just marks)
  3. Wait 24 hours and check if data appears
  4. Remember to re-enable filters after testing

Google Consent Mode, if misconfigured, can block all data collection.

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.

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:

  1. Disable uBlock Origin, AdBlock, etc.
  2. Turn off browser’s built-in tracking protection
  3. Open incognito without extensions
  4. 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

  1. Admin → Data Streams → Your stream → Configure tag settings → Show all
  2. Look for “List unwanted referrals”
  3. 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):

  1. Both domains need the same GA4 property
  2. Cross-domain linker must be configured
  3. 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

  1. Admin → Data Settings → Data Retention
  2. Default is 2 months for free accounts
  3. If you’re looking at older data, it may have been deleted

Set to 14 months if available for your account type.

Timezone

  1. Admin → Property Settings → Reporting time zone
  2. Wrong timezone can make data appear on unexpected days
  3. 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.

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:

  1. Multiple containers overwriting: Check for duplicate GTM containers or multiple GA4 installations
  2. Content Security Policy: Your site’s CSP might be blocking google-analytics.com
  3. JavaScript framework conflicts: React, Vue, Angular can sometimes interfere
  4. 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.