Skip to main content

Troubleshooting

The script is blocked by an ad blocker

Load a page, open DevTools → Network, reload, and look for t.js.

Confirming it

Load a page, open DevTools → Network, reload, and look for t.js.

Blocked or failed, with no message in the console — that is a blocker. A Content Security Policy always prints a message naming the directive; a blocker prints nothing, because from the page's point of view the request simply did not happen.

Confirm it in ten seconds: open a private window with extensions disabled and reload. If the request succeeds there, it is a blocker.

screenshot coming

DevTools Network tab showing the t.js request in a blocked/failed state, with the Console panel empty of any CSP message — the two together are the signature. Cropped, any browser.

What is being blocked

Blockers match on hostname. truestat.io is on public blocklists, as is every analytics hostname — google-analytics.com, plausible.io, umami.is and the rest.

The block happens in the visitor's browser before the request leaves it. There is nothing our servers can do about it, because nothing reaches them.

The fix: serve it from your own domain

Serve the script and the collector from your own domain.

Once t.js and /api/events are on your own hostname, the requests look like requests to your own site, and there is no hostname for a blocklist to match.

That recovers most of this traffic. It is the single largest recoverable chunk of undercounting on almost every site.

Read the top of that page before you set it up. A proxy that does not forward the visitor's IP address collapses every one of your visitors into a single visitor — a much worse outcome than the blocking you were fixing.

If you are on Next.js it is a config change and IP forwarding is automatic. On Nginx, Caddy or Express it is a few lines and the IP forwarding is explicit.

What does not work

Renaming the script file. Blocklists match hostnames, not filenames.

A first-party tag manager. GTM is itself blocked at least as often as analytics hostnames, so installing through it puts the block one step earlier.

Retrying the request. It never left the browser.

Asking visitors to disable their blocker. Do not.

What if you cannot proxy

On Webflow, Framer, Squarespace, Wix, Ghost, Bubble and similar, you do not control a server, so there is no proxy to run. Every analytics product on those platforms has this problem equally.

What you can do: know the shape of your undercount and be consistent about it. The trend is unaffected — if 20% of your visitors block, that is roughly 20% every month, so month-over-month comparisons stay valid. It is the absolute level that is low.

How much traffic is this

It depends entirely on your audience. Technical audiences block heavily; general consumer audiences much less.

We are not going to give you a percentage, because we cannot measure the traffic we do not see. The way to find out for your own site is to proxy and watch the step change — that difference is your blocked share, measured rather than guessed.

Bots are not blockers

If your numbers dropped rather than always being low, an ad blocker is unlikely to be the cause — blocking rates do not change overnight. Check No events are showing up instead, and check whether your platform overwrote your theme or purged something.

Was this page helpful?

Last updated August 28, 2026