Work down this list in order. It is ordered by how often each is the cause, and every step ends in a resolution.
Step 0: the two-request check
Load a page of your site, open DevTools → Network, reload.
| What you see | Go to |
No request for t.js at all | Step 1 — the tag is not on the page |
t.js blocked or failed | Step 5 — an ad blocker, or a CSP |
t.js is 200, no POST /api/events | Step 6 — the send is being blocked |
POST /api/events returning 202 | Step 8 — the tag works; the problem is elsewhere |
POST /api/events returning something else | Verifying it works |
DevTools Network tab on a working install, with t.js (200) and /api/events (202) both visible and the status column readable. Cropped tightly, any browser.
Step 1: is the tag in the page at all
View source on the published page — the actual HTML, not the DevTools Elements
panel, which shows the page after JavaScript has run. Search for truestat.
Not there? One of the next three steps explains why.
Step 2: did you publish
Webflow, Framer, Ghost and Squarespace apply custom head code to the published site, not to the editor preview.
This is the single most common cause on those platforms. Save is not publish. Publish, then load the live URL — not the preview URL, not the Designer.
Step 3: does your plan allow custom code
Squarespace, Wix and Bubble gate custom code behind a paid plan, and none of them tell you. The field accepts your paste, saves it, and the code is simply never emitted.
| Platform | Needs |
| Squarespace | Business plan or higher |
| Wix | Any Premium plan |
| Bubble | Any paid plan |
You confirmed this in Step 1: if truestat is not in the published HTML and you
definitely saved and published, the platform stripped it.
See Head-field platforms.
Step 4: is it on the page you are testing
Load the specific page you are testing and view source there, not just the homepage.
The tag has to be in a global head or layout. If it went into a single page's settings, only that page is tracked — which is the most common outcome on AI-builder-generated sites. See Lovable, Bolt, v0 and Replit.
WordPress: if you have a caching plugin, purge the cache. Visitors were being served a cached copy of the old page with no tag in it.
Step 5: t.js is blocked
An ad blocker in your browser, or a Content Security Policy on your site.
The console tells you which. A CSP block names the directive:
Refused to load the script 'https://truestat.io/js/t.js' because it violates
the following Content Security Policy directive: "script-src 'self'".No message, just a failed request → an ad blocker. Test in a private window with extensions off. If it works there, see The script is blocked by an ad blocker.
Step 6: t.js loads but nothing is sent
Three causes, in order.
A CSP without connect-src. By far the most common. The script loads with no
error and every send is blocked. The console says so:
Refused to connect to 'https://truestat.io/api/events' because it violates
the following Content Security Policy directive: "connect-src 'self'".Fix: Content Security Policy is blocking the script.
You are on localhost. Tracking is off on localhost and 127.0.0.1 unless
you add data-allow-localhost="true". See
Localhost and development.
This browser is excluded. Check in the console:
localStorage.truestat_ignoreIf that returns anything other than undefined, you excluded this browser.
delete localStorage.truestat_ignore to undo it. See
My own visits are being counted.
Step 7: the POST returns an error status
Each status has one meaning. The full table is in Verifying it works. The two you are most likely to see:
404 / unknown_site — the site key in your tag does not exist. Copy the tag
again from the install page. A typo in the key produces 400 instead, because a
malformed key is rejected before any lookup.
403 / site_inactive — the site is switched off in its settings. Re-enable
it.
Step 8: the POST returns 202 and you still see nothing
The event was recorded. So the question is where you are looking.
Check your date range. If you are on "Today" and your only event was yesterday evening, the dashboard is correct and empty. Widen to Last 7 days.
Check your filters. The Filters button shows a count when any are active. A filter left on from an earlier drill-down hides everything that does not match.
Check you are on the right site. If you have several, the dashboard shows one at a time.
Check the exclusions. A path exclusion covering the page you tested means the
event was accepted and deliberately not stored — a 202 and no row is exactly
what an exclusion looks like. Site settings → excluded paths, and remember that
/admin/* does not cover /admin itself.
Still nothing
Email support@truestat.io with:
Your site's domain
The URL of a page you tested
What the Network tab shows for
t.jsand/api/events— status codesAny console errors
Do not send an API key.