Products

GA4 Not Showing Data? 5 Reasons Google Analytics 4 Goes Quiet (And How to Fix Each One)

You set up GA4, waited, and came back to an empty dashboard. Here are the five most common reasons it happens — and the exact fix for each one, in plain English.

Why Your GA4 Isn't Showing Data — Adtivity blog cover, Friday June 6 2026.

There are few things more demoralising in early-stage building than shipping your product, setting up analytics, going to bed excited, and checking in the morning to find a completely empty dashboard. Zero users. Zero events. As if it never happened.

GA4 not showing data is almost never a catastrophic problem. It's usually one of five specific, fixable things — and most take under ten minutes once you know what you're looking for. Here's every common reason, in the order you should check them.

First: Rule Out the Obvious

Open GA4 → Reports → Realtime. Visit your site in another tab. If you see yourself appear within 30 seconds, your tag is working — standard reports take 24–48 hours to populate and you just need to wait. If Realtime is also empty, something is blocking tracking and the five reasons below will tell you what.

Also confirm you're on the right property. Having a test and a production property in the same account — with the wrong one selected — is a surprisingly common reason an otherwise working setup looks empty.

The 5 Reasons Google Analytics 4 Is Not Showing Data

Reason 01Your Tag Setup Has a Silent Error

The two most common setup mistakes produce exactly the same symptom — complete silence — and neither gives you an error message. First: a wrong Measurement ID. Your GA4 ID looks like G-XXXXXXXXXX. One mistyped character and every event fires into a void; GA4 silently drops anything sent to an unrecognised ID. Second: a GTM tag that was never published. GTM operates on a draft/publish model — the tag can show as "Firing on All Pages" in preview mode and still not exist on your live site, because preview uses a temporary container your real visitors never see.

FixFor the Measurement ID: GA4 → Admin → Data Streams → your web stream → copy the ID directly, never retype it. For GTM: click "Submit" top right → add a version name → "Publish." Check Realtime to confirm events arrive.
Reason 02Ad Blockers and Consent Rejection Are Removing Your Users

GA4 is a client-side script, which means ad blockers — uBlock Origin, Brave, Firefox Enhanced Tracking Protection, Safari ITP — can silently stop it from firing for any user who has one installed. On top of that, GDPR and CCPA require a properly configured consent setup to block GA4 from firing entirely when a user rejects analytics cookies. There's no error message, no indication in the dashboard. The session just disappears. Developer and technical audiences, which tend to be the early adopters most founders target first, can run 30–50% ad blocker penetration, and consent rejection rates on analytics cookies in European markets regularly exceed 40%.

FixTest in a browser with no extensions. Test once accepting the consent banner and once rejecting it. If you appear in Realtime only after accepting, your consent setup is correct — the underlying gap is structural and cannot be fixed within GA4.
Reason 03Your Next.js or React App Isn't Firing Page Views on Navigation

GA4's enhanced measurement listens for traditional browser page reloads. Single-page apps built with Next.js, React, or Vue don't reload on navigation — they swap content in the DOM — so GA4 records one page view per session regardless of how many pages were visited. Next.js apps have an added issue: GA4 is browser-side only, and any initialisation that runs during SSR will throw errors because window isn't defined on the server. The fix is wrapping GA4 in a typeof window !== 'undefined' check, or using next/script with afterInteractive.

FixIn your router's navigation callback, manually fire: gtag('event', 'page_view', { page_title: document.title, page_location: window.location.href }). In Next.js, use a useEffect watching router.asPath. Full implementation: Google's SPA guide.
Reason 04Data Thresholding Is Silently Hiding Rows

When two conditions are met — your property has a small audience and Google Signals is enabled — GA4 quietly removes rows from standard reports to prevent individual users from being identified. Your events are arriving correctly; they just don't appear. The tell is a small yellow shield icon in the report's top right corner. It's documented GA4 behaviour, but it's easy to miss, and there's no other indication that data has been withheld. This affects early-stage products most, when audience counts are small enough to trigger the threshold on common dimension breakdowns.

FixGA4 → Admin → Reporting Identity → switch from "Blended" to "Observed." Or disable Google Signals under Admin → Data Settings → Data Collection. For unthresholded data right now, use Explore → Free Form — those reports aren't subject to the same rules as standard reports.
Reason 05You're Looking for Data GA4 Doesn't Collect by Default

GA4's enhanced measurement automatically tracks page views, scrolls, outbound clicks, and file downloads. Everything else — signups, onboarding completions, feature usage, subscription events — has to be explicitly instrumented as a custom event. If you installed GA4 expecting a complete picture of how your product is working and didn't build a custom events layer on top, most of what you're trying to understand simply isn't there. The dashboard can look populated with page view data and still be functionally empty for product analytics purposes.

FixStart with the four events that matter most for early-stage products: account_created, onboarding_completed, first_key_action, payment_started. Each needs either a gtag('event', 'event_name', { props }) call in your code or a GTM trigger configured to fire on the relevant action.

What GA4 Can't Fix for Subscription Founders

Fix whichever of the five reasons above applies and GA4 will start showing data. For what it was built to do — web traffic, acquisition channels, page engagement — it works well and it's free. But there's a limit to what it can tell a founder running a subscription product, and it's worth naming before you spend a day wiring up custom events.

GA4 has no concept of MRR. It doesn't know your Stripe account exists. It can't tell you your churn rate, which cohort is retaining well, which trial users are at risk of dropping off, or what your month-over-month revenue growth looks like. Those questions aren't in scope — GA4 was built for marketing and web analytics teams, not for founders trying to understand whether a subscription business is growing or quietly dying.

That's the gap Adtivity was built for. It connects directly to Stripe and Paystack — setup takes about 90 seconds — and gives you the layer of data GA4 can't: MRR, ARR, churn rate, lifecycle stage, cohort retention, and win-back signals. It also captures product events through an SDK that auto-instruments the moments that matter (signups, activation, feature usage) so you're not hand-building the events layer from scratch.

GA4 Is Great For
  • Web traffic and page views
  • Acquisition channels (organic, paid, referral)
  • On-page engagement and scroll depth
  • Marketing campaign attribution
  • A/B test measurement
Adtivity Is Built For
  • MRR, ARR, and revenue growth
  • Churn rate and at-risk user signals
  • Cohort retention and lifecycle stage
  • Trial-to-paid conversion tracking
  • Ask your data in plain English via EI

The two aren't in competition. Most founders who care about both web performance and subscription health run them side by side. But if what you actually need to know is whether your business is growing — not how many people scrolled past the fold — Adtivity is where that answer lives. It's free to start →

Frequently Asked Questions

How long does GA4 take to show data?

GA4 standard reports take 24–48 hours to populate after your first events fire. The Realtime report updates in seconds but only shows the last 30 minutes. Check Realtime first — if events appear there, your tag is working and standard reports will catch up by tomorrow.

Why is GA4 showing 0 users?

The most common causes in order: a 24–48 hour standard report processing delay, an ad blocker or consent rejection silently blocking the GA4 script, Google Tag Manager not published after the tag was configured, a wrong or mistyped Measurement ID, or data thresholding hiding a small audience. Check each one before assuming something is fundamentally broken.

Can ad blockers block Google Analytics 4?

Yes. uBlock Origin, Brave shields, Firefox Enhanced Tracking Protection, and Safari ITP all block Google Analytics. Developer and technical audiences often run 30–50% ad blocker penetration, meaning GA4 can undercount those users by a significant margin. There is no fix inside GA4 — it's a structural limitation of any client-side analytics script.

Does GA4 track MRR or subscription revenue?

No. GA4 is built for web traffic, acquisition, and engagement. It has no native awareness of MRR, ARR, churn, or lifecycle stage. Subscription founders who need those numbers use a purpose-built tool alongside GA4. Adtivity connects to Stripe and Paystack and surfaces MRR, churn signals, and cohort retention without requiring custom event instrumentation.

What is a good GA4 alternative for subscription founders?

GA4 and subscription analytics tools solve different problems, so most founders run both. GA4 handles web and marketing performance. For subscription metrics — MRR, churn rate, cohort retention, trial conversion — Adtivity connects to your payment processor and surfaces those numbers out of the box. It also ships as an MCP server, so you can query your metrics directly from Claude or Cursor without opening a dashboard.

Try Adtivity

See your product metrics in minutes.

No developer needed. Connect your app, get your dashboard, and understand your users from day one.

Sign up free →
Read next