All posts
GA4

GA4 Sessions Dropped to Zero: What Broke and How to Find It


You open GA4 on a Tuesday morning and sessions are at zero — or 90% below yesterday. The first reaction is panic. The second is the more useful question: how long has this been happening, and what does the data on screen actually mean.

A sessions drop in GA4 is almost always one of two situations. The tracking tag stopped firing, or the data is being collected but is being filtered out before it reaches reports. The two situations have different fixes. Diagnosing which one you're in is the first half of the work, and the half that gets done badly when people panic.

This guide walks through the likely causes, a short diagnostic flow that gets you to the answer fast, and the honest part nobody wants to hear about what happens to the missing data.

What a "sessions drop" usually is

A complete drop to zero is almost always a technical failure of data collection. Tag removed, container not published, measurement ID swapped, filter set too broadly. The data isn't arriving. Almost nothing else looks like a clean zero across all dimensions at once.

A sharp partial drop — sessions going from 4,200 to 540 instead of to zero — is a different signal. It's either selective collection failure (the tag fires on some pages but not others, or for some users but not others), or it's the kind of issue tracking failures most often look like in practice: a consent banner change blocking GA4 for non-consenting users, an OAuth or redirect chain stripping parameters, an internal traffic filter scoped too widely.

The size and shape of the drop tells you which category to investigate first. Zero across the board → collection is dead. Steep but partial → something is selectively filtering.

The likeliest causes, in rough order

The most common cause, by a wide margin, is a site deployment that removed or broke the GA4 tag. A CMS update, a theme migration, a checkout redesign — anything that touches the template inadvertently drops the tag. The drop date correlates exactly with the deploy date.

The second most common: Google Tag Manager has the right configuration in the workspace but the container wasn't published, or was published back to an old version that didn't include the GA4 tag. The fix takes thirty seconds once you notice it. Noticing it usually doesn't happen until someone asks why traffic looks low.

After those two, the pattern fragments. A cookie consent update changes the default consent state to "denied" until the user actively accepts, and most users don't — sessions don't go to zero, but they drop dramatically. A new GA4 property gets created and the GTM tag's measurement ID is pointed at it; data is now going to a different property entirely. An internal traffic filter is misconfigured with an IP range that's too broad, silently excluding production traffic. A data stream is accidentally deleted.

The reason the order matters: the first two cases cover most of what you'll actually see. Start there.

A ten-minute diagnostic flow

Open GA4 → Traffic Acquisition and look at the daily sessions chart over the past 30 days. Identify the exact date sessions dropped. This date is the most useful piece of information you have: it almost certainly correlates with a deployment, a GTM change, a consent update, or a property configuration change.

Open your site in a fresh browser session with the GA4 debug extension enabled, or use GTM Preview mode. Visit a few key pages. You should see page_view events appearing in DebugView within seconds. If nothing appears, the tag isn't firing — you're in the most common scenario. Check whether the GA4 Configuration tag exists in your GTM container and whether the current container version actually includes it (Versions → published date).

If events do appear in DebugView but reports still show zero, the issue is downstream of collection. Check GA4 → Admin → Data Streams and confirm the Measurement ID matches what's in your GTM tag. Check Data Filters for any active (not testing) filter that might be excluding traffic. Check whether a new GA4 property was created that's now receiving the data instead.

If you've added a cookie consent banner recently, check whether GA4 is configured to wait for consent and what the default state is. A default of "denied" with most users ignoring the banner produces a dramatic but partial drop that looks like a tracking issue.

The exact drop date is more diagnostic than any individual metric on the page. Find it first.

The fix follows from what the diagnostic surfaced. If the tag was removed during a deployment, re-add it via GTM or directly in site code and publish. If the GTM container is on the wrong version, publish the correct version. If the measurement ID is wrong, update it in GTM or your inline code to match the active GA4 property. If consent is blocking GA4, the fix is either implementing Google Consent Mode v2 to capture cookieless pings, or adjusting your consent defaults — both are real architectural choices, not quick toggles. If a filter is too broad, narrow the IP range. If a data stream was deleted, create a new one and update the measurement ID across your tag implementation. None of these fixes is technically complicated. The work is in correctly identifying which one applies.

The data is gone. Plan around that.

This is the part teams avoid. When GA4 sessions drop to zero, the data for that period does not come back. GA4 doesn't backfill. Once the tag is fixed, tracking resumes from that point forward, but the gap in your historical reporting is permanent.

The practical implications: anything that uses GA4 data downstream — attribution analysis, A/B test results, conversion exports to Google Ads — has a hole in it for the gap period. If Smart Bidding was using GA4 conversions during the broken window, it learned from incomplete data and may need 2-to-4 weeks to recalibrate after the fix.

Some of the missing context can be reconstructed from independent sources. Server logs show raw page requests. Google Search Console shows organic impressions and clicks. Google Ads shows paid clicks. None of these is a one-to-one replacement for GA4 sessions, but together they can tell you roughly what the gap period looked like — which is sometimes what you need for client reporting and post-mortem honesty.

The honest framing for stakeholders is straightforward: "We have a tracking gap from X to Y. Here's what we can reconstruct, and here's what we can't." Saying that proactively, before someone asks why the report looks strange, is significantly better than the alternative.

Making this the last time

The reason sessions-to-zero incidents take days to detect isn't usually because the cause is exotic. It's because nobody was watching specifically for it on the day it happened. The daily check covers the top accounts; this one wasn't in the top tier this week. The weekly review is on Friday. The client doesn't notice until they pull a report on Tuesday.

The structural fix is to remove the "is someone watching this today" question from the workflow. Continuous monitoring that flags abnormal session volumes within hours of the data window closing is the only approach that consistently catches this class of issue before it becomes a multi-day gap. Threshold-based GA4 custom insights help, but they have a 24-to-48-hour lag and a high false-positive rate that trains teams to ignore them.

The real-cost framing is straightforward: every day a tracking failure goes undetected is a day of decisions being made on incomplete data, a day of attribution drifting, and a day closer to a client surfacing it before you do. Catching the issue the morning after, rather than the Wednesday after, is the difference between a small data gap and a quarterly reporting problem.

Most teams discover this the expensive way once. The second time around, they have a system in place.

Related reading

Stop finding out too late.

Monitor your GA4 properties continuously. Alerts before the client notices.