You open Google Analytics expecting yesterday’s numbers, and instead you get a flat line. Realtime shows 0 active users. The Pages report looks like your site just launched and nobody has ever found it. It worked fine last week, and now it looks like you lost every visitor overnight.
If that is happening to you, take a breath. Zero traffic in Google Analytics almost never means you actually lost your traffic. It means the connection between your WordPress site and Google broke somewhere in the middle, and the tag that is supposed to report visits is not reaching Google anymore.
It matters because you cannot fix what you cannot measure. Without working tracking you have no idea which posts bring visitors, which pages convert, or whether the SEO work you paid for did anything. The good news is that this is usually a 15 minute fix once you know where to look. Here is exactly how I tracked down mine, and how you can do the same. Once it works, a Google Analytics report builder turns the raw exports into a client-ready report.
What “Zero Traffic” Usually Means
Google Analytics does not count people. It counts hits. A small piece of JavaScript, the Google tag, fires on every page and sends a message to Google that says “someone loaded this page, under measurement ID G-XXXXXXX”. If that tag never fires, or fires with the wrong ID, Google receives nothing, and your reports fill up with zeros.
So “zero traffic” is almost always “the tag is not reaching Google”, not “nobody visited my site”. In practice the cause is one of a handful of things:
- A missing or mismatched measurement ID. An old UA- ID that stopped working when Universal Analytics was retired, or an ID copied from a different property.
- Caching or minification. A cache plugin serves a stale version of your pages without the tag, or a JavaScript optimization setting defers, combines, or removes the script entirely.
- Consent banners. A cookie consent plugin blocks the tag before a visitor accepts cookies, so the hit never leaves the browser.
- Property and filter mistakes. The wrong property, the wrong data stream, the wrong date range, or an internal traffic filter that is far too broad.
- Script conflicts. A theme or plugin throws a JavaScript error before the tag gets a chance to run.
- A short data delay. Standard GA4 reports can lag 24 to 48 hours. Realtime does not.
How I Confirmed What Was Actually Wrong
Before changing anything, work through these checks in order. Most people find their answer in the first three, and you will know within minutes whether this is a real tracking problem or just a reporting delay.
- Look at Realtime first, not the main report. Standard GA4 reports lag by 24 to 48 hours, so a “broken” report can simply be slow. Open Realtime and click around your own site in another tab. If you see yourself as an active user, tracking works and you were just impatient.
- Watch the tag fire. Open your site in a private browsing window, right click and choose Inspect, then open the Network tab and filter for the word collect. Reload the page. You should see requests heading to google-analytics.com. If you see them, the tag fires. If you do not, it does not, and you have your answer.
- Confirm the measurement ID matches. In Google Analytics go to Admin, then Data Streams, then your web stream, and copy the Measurement ID. It should start with G-. Compare it against the ID on your site. A leftover UA- ID, or an ID from a deleted property, will send every hit into the void.
- Turn off your cache and minify settings. Disable JavaScript minification, defer, and combine in your cache plugin, clear the cache, and reload. If traffic suddenly appears, that plugin was stripping or delaying the tag. This is the single most common WordPress-specific cause.
- Test consent. If you run a cookie banner, open a private window and accept cookies this time. If the numbers return, your consent mode is mis-wired and the tag is waiting for a permission that never arrives.
- Check your data filters. Go to Admin, then Data Filters. An internal traffic filter set to Active with an IP range that is too wide can quietly hide your real visitors. Switch it to Testing while you investigate.
If every check above comes back clean and Realtime still shows nothing, the issue is usually a plugin or theme conflict. Disable plugins one at a time, starting with anything that touches your header or footer scripts, and reload after each one until the tag fires again.
The Fixes That Actually Work
Start at the top and stop as soon as your Realtime report fills up. Most readers never need to go past the first two.
Fix 1: Get the tag firing again (free)
If the measurement ID was wrong or the tag was missing, the fastest fix is to paste the correct tag back in. The easiest no-code route is Google’s own Site Kit plugin, which connects your site to GA4 in a few clicks and keeps the ID in sync. If you prefer full control, add the Google tag to your site using a header and footer plugin, then confirm with a fresh Realtime test. Either way, purge your cache when you are done, because your pages will still be serving the old version until you do.
Fix 2: Stop your cache plugin eating the tag (free)
This is the one that catches most people. Caching is essential for site speed, but aggressive JavaScript optimization can move, delay, or drop the tracking script. Open your cache plugin settings and exclude anything containing googletagmanager and google-analytics from JavaScript defer, delay, and combine. If you use a CDN, check that it is not running its own script optimizer on top (Cloudflare’s Rocket Loader is a frequent offender). Clear every cache layer, then retest in Realtime. This alone fixes a huge share of “zero traffic” reports, and it costs nothing.
Fix 3: Reconnect your consent banner (free)
Modern privacy rules mean most banners wait for consent before firing analytics. That is correct behavior, but it breaks when the banner and GA4 are not talking to each other. In your consent plugin, enable GA4 consent mode and make sure “analytics” is a category the banner controls. Then test by accepting cookies in a private window. If you are not sure whether consent is the problem, temporarily disable the banner, retest, and turn it straight back on once you know the answer.
Fix 4: Fix the property, filter, and date mistakes (free)
Sometimes nothing is broken at all. Double check that you are looking at the correct GA4 property, the correct data stream, and a date range that actually contains traffic. Reset any saved comparison that might be hiding data, and confirm your internal traffic filter is not so broad that it swallows real visitors. These sound trivial, but a wrong clock and a wrong property have fooled plenty of experienced site owners.
Fix 5: Hand the setup to a plugin (premium)
If the free fixes work but you keep breaking them, or if the words “measurement ID” and “Network tab” make you want to close the laptop, the honest upgrade is MonsterInsights. It connects your GA4 property for you, warns you when tracking is not detected, and shows your stats inside the WordPress dashboard instead of sending you into Google’s interface. The free version is genuinely enough to get correct tracking running again. The paid tiers add the reports most business sites eventually want, including form conversion tracking and WooCommerce revenue, so you can see what actually makes money and not just how many people showed up.
When It’s Worth Paying
The free fixes in this post are enough for most site owners. You should consider a paid tool when the time you spend babysitting tracking is worth more than the tool costs, or when you need reporting that Google does not hand you for free.
MonsterInsights starts at around $99 per year. If a broken tracking setup costs you even one hour of a freelancer’s time to fix, or one month of blind decisions about your content, it has already paid for itself. It is the sensible choice if you want analytics without touching code, if you run a store and need to see which products convert, or if you manage more than one site and want them set up consistently.
Frequently Asked Questions
Because GA4 counts tracking hits, not people. If the Google tag is missing, is using the wrong measurement ID, or is being blocked by caching, minification, or a consent banner, the hits never reach Google and the reports show zero even though real people are visiting. The site is fine, the connection is broken.
Yes, and it is the most common WordPress-specific cause. Caching serves a stored copy of your pages, and JavaScript optimization can defer, combine, or drop the tracking script. Excluding googletagmanager and google-analytics from your cache and minification settings, then clearing the cache, usually restores tracking immediately.
Possibly. Standard GA4 reports can lag 24 to 48 hours, so a report that looks empty today may fill in tomorrow. Realtime does not have that delay, so use it to check whether tracking is working right now. If Realtime shows your own visit, everything is fine and you just need to wait.
Ad blockers and privacy extensions stop the tracking script for that visitor, but they cause undercounting, not a complete zero. Small numbers that look low are usually blockers plus consent choices. A flat zero almost always points to a missing tag, a wrong ID, or a plugin conflict rather than ad blockers.
Run a Realtime test in a private window with the Network tab open, confirm your measurement ID starts with G- and matches your data stream, then disable JavaScript minification and caching and clear the cache. Those three steps fix the majority of zero-traffic cases in under 15 minutes.
Final Thoughts: Do This First
If your analytics just flatlined, do these three things in the next ten minutes, in this order:
- Open Realtime and visit your own site in a private window. If you appear, wait 24 to 48 hours for the standard report to catch up. If you do not, keep going.
- Check the measurement ID and the cache plugin. Confirm the ID starts with G- and matches your data stream, then exclude googletagmanager and google-analytics from JavaScript optimization and clear the cache.
- Retest in Realtime. If you show up again, you are done. If you still do not, work through consent and plugin conflicts next.
If you would rather not repeat this every time something updates, a plugin like MonsterInsights keeps the tag connected and flags problems before they cost you weeks of data. Either way, you are now back in control of your numbers.
This post contains affiliate links. If you buy through them, I may earn a small commission at no extra cost to you.

