google analytics not tracking visits
your analytics shows zero or implausibly few visits. four common causes, all fixable in under an hour.
google analytics not tracking is almost always one of four things: the tag is not on the page, the tag is blocked by a consent banner, the measurement id is wrong (often left over from universal analytics), or javascript errors are stopping the tag from firing. the public check verifies the first three from outside. the fourth needs you to open the browser console.
what this looks like to a visitor
- ga4 realtime shows zero active users even when you load the site
- ga4 dashboard shows much less traffic than your nginx logs or shopify analytics
- you migrated from universal analytics to ga4 and never set up the new property
- consent banner blocks tracking by default and most visitors decline
what a public browser check can see
we look for the gtag.js or ga4 measurement id in your homepage source. if it is not there, that is the first cause.
we check whether the google analytics script (gtag/js?id=G-...) loads when we render the page. a blocked tag does not record visits.
we look for common consent banners (cookiebot, onetrust, iubenda, klaro) and check whether ga is blocked behind 'accept'. this is the #1 cause of 'analytics is too low'.
ga4 ids look like G-XXXXXXX. universal analytics ids were UA-XXXXX. if your tag still references a UA id, it is dead — universal analytics shut down in 2023.
we do not log into your site. we do not scrape customer data. we open your public homepage in a real browser session and report what we see. no security claims unless we can prove them from the public surface.
the deeper picture
the four causes: (1) tag missing. you installed ga, then later removed it during a theme migration. fix: re-add via the standard path (gtm, site kit, theme head). (2) consent banner blocks tag by default. modern privacy laws require explicit opt-in. if your banner is configured 'block ga until accept', and most visitors decline or close without choosing, you record almost no traffic. fix: review consent strategy — losing 60% of visitor tracking to consent is a business decision, not a bug, but you should know it is happening. (3) old measurement id. universal analytics ids (UA-) stopped recording data in july 2023. if your tag still references one, you are tracking nothing. fix: replace with a ga4 G- id from a current ga4 property. (4) browser ad blockers + privacy extensions. these block ga directly. you cannot fix this from your side; you just need to know that 10-30% of your real traffic will never appear in ga, regardless of consent. fix: pair ga with server-side analytics (plausible, fathom, simple analytics) for a clearer total.
fix it yourself
step 1: in google analytics, find your measurement id (admin → data streams → web). step 2: check that the id is on every page of your site — through google tag manager, a wordpress plugin (site kit, monsterinsights), or directly in your theme's head. step 3: if you have a consent banner, configure it correctly: ga should fire on consent grant. test by accepting cookies and confirming realtime sees you. step 4: open your site in incognito and watch ga realtime — you should appear within seconds. step 5: check ga4 'data streams → measurement protocol' is enabled if you are using server-side tracking.
run the audit on YOUR site — check for "google analytics not tracking visits"
we open your homepage in a real headless browser and report what we see. no login, no plugin install.
public browser check · no signup · result on the next page
or pay us once.
this is more a deep audit than a fix — usually you do not 'pay to fix' analytics, you pay for someone to diagnose and recommend. the $49 deep audit path: we review your ga setup, audit the consent flow, surface where traffic is being lost, recommend the cleanest fix for your privacy posture. done in two days. if you also want server-side analytics installed properly (plausible/fathom), we cover that under the $99 fix.
frequently asked
no. plausible, fathom, and simple analytics give you the same insight (top pages, referrers, devices) without consent banners, without google's complexity, without sending data to google. they cost $9-19/mo. most small business sites are better served by them.
look at the gap between your nginx access log (raw requests, no consent gate) and ga visits. if nginx shows 100 daily uniques and ga shows 10, the gap is consent + ad blockers. that is normal in 2026.
gtm is the recommended way to install ga and other tags. it gives you one container to update instead of editing every page. mandatory for medium and large sites; nice-to-have for small.
server-side event tracking. lets your backend send events to ga4 without javascript. useful for tracking conversions that happen off-page (webhooks, purchases, subscription renewals).
other fix guides
- why is my wordpress site slow— what an external browser sees when your wordpress homepage takes too long to render — and the four things that are almost always behind it.
- shopify checkout feels broken — how to find out why— a public browser check of your shopify storefront can surface the visible reasons people abandon. here is what we look for.
- contact form looks fine but i'm not getting emails— this is the most common silent failure mode of small-business websites. four reasons it usually is — and how a public check can rule out the wrong ones.
- wix site not showing on google — what a public check can tell you— your wix site exists, but it does not appear in google search results. four reasons that explain almost every case.
built by vøiddo — a small studio shipping ai-flavoured products, free dev tools, chrome extensions and weird browser games. legal · support@voiddo.com