StatelessID

Nothing Recorded

When your dashboard shows zero page views for a period you know had traffic, the beacon is either not reaching the server or being rejected. These two causes have different symptoms and different fixes.

Confirm the script tag is on the live page

Open your site in a browser. Do not open the source file on your computer — open the URL that your visitors actually reach. Right-click the page and choose View Page Source. Search the source for "asset.js". If you do not find it, the script tag was not deployed. Your local template may have the tag, but the built or uploaded version that visitors see does not. Redeploy, rebuild, or re-upload the template and check again.

If the script tag appears in the source, look at the src attribute. It should read exactly https://statelessid.com/asset.js — lowercase, no version number, no subdirectory, no alternate CDN path. If the src has been modified or the hostname is different, the browser is loading a different file or failing to load any file at all. Replace the tag with the exact snippet from Dashboard → Settings → Script tab.

Also check that the defer attribute is present. The tag should look like: <script src="https://statelessid.com/asset.js" data-k="YOUR_KEY" defer></script>. Without defer, the script loads synchronously; on slow connections it may time out or be blocked before it reaches DOMContentLoaded, causing the beacon to not fire. Defer is required.

Check the data-k value against your dashboard

The value in data-k must exactly match the site key issued for the hostname sending the beacon. Open your dashboard, find the site whose visit count you are checking, and go to its Settings → Script tab. The tag shown there has the correct site key already embedded. Compare the data-k value in that tag character for character with what is in your live page source.

A single wrong character in the site key causes silent rejection. The page loads normally for the visitor. The beacon fires from the browser and reaches the server. The server rejects it because the key does not match the registered hostname, and no count is recorded. There is no error in the browser console and no visible indication to the visitor or to you that anything went wrong.

The most reliable approach is to copy the entire script tag from the dashboard tab and paste it into your page template, replacing whatever tag is currently there. This eliminates any possibility of a character-level mismatch from manual typing or partial copies.

Verify with the browser Network tab

Open your browser's developer tools and switch to the Network tab. Reload the page. Filter for requests containing "statelessid". You should see two requests: one to load asset.js (the script file itself) and one to the beacon endpoint shortly after the page finishes loading.

If you see no request to statelessid.com at all, the script tag is not loading. This is often a Content Security Policy issue — check the console tab for a CSP violation mentioning statelessid.com, and add it to your script-src and connect-src directives. It can also be an ad blocker or browser extension blocking the request; test in a private window with extensions disabled.

If you see the asset.js request but no beacon request, the script loaded but the beacon did not fire. This can happen when the page is served over HTTP (the beacon is suppressed on non-HTTPS pages), when a CSP blocks the connect-src direction without blocking the script-src, or when the script encountered an error before reaching DOMContentLoaded. Check the console tab for JavaScript errors during page load.

HTTPS requirement

asset.js detects whether the page was loaded over HTTP or HTTPS. If the page is on HTTP, the script suppresses the beacon entirely. No count is recorded. The page loads, the script loads, but no beacon fires. This is by design — HTTP connections expose request data in plaintext, and the beacon is not sent over an insecure connection.

If your site is still on HTTP for some pages or for the whole domain, move those pages to HTTPS before expecting visit data to appear. Free TLS certificates are available through services like Let's Encrypt and are supported by virtually all hosting platforms. Once HTTPS is in place, the beacon fires on the next page load and counting begins.

Troubleshooting

If the Network tab shows a 200 response for both the script and the beacon but the dashboard still shows zero, check whether you are looking at the correct site in the dashboard. If you have multiple sites registered, the page view may have landed under a different site whose key was embedded in the tag. Open each site's dashboard view and check today's count.

If the beacon request shows a status other than 200 — a 4xx or 5xx — the server rejected the beacon. A 400 typically means the site key did not match the registered hostname. A 5xx means a server-side error that should resolve on retry. Refresh the page and check whether the same error repeats. If it persists, contact support with the status code and the beacon URL from the Network tab.

If everything checks out — HTTPS, correct tag, correct key, no extension blocking, 200 on both requests — but visits still do not appear, wait a few minutes. The dashboard updates are not instantaneous. A visit recorded a minute ago may appear within a short delay depending on the dashboard's refresh cycle. Reload the dashboard after a minute or two before concluding the beacon is not working.

Similar pages