Skip to content

Verify your installation is working

About 30 seconds. This page also covers what to check if data isn't appearing.

The 30-second check

  1. Open your Statable dashboard for the site.
  2. Switch to the Realtime view (last 30 minutes).
  3. In another browser tab, visit any page on your site.
  4. Wait a few seconds. Your visit should appear as 1 current visitor.

If you see your visit, you're done. Move on to Goals or Custom Events.

On a site that has never received a hit, the setup screen answers the same question without the Realtime view: it waits on Install tracking code and moves on by itself once the first pageview lands.

If nothing shows up

Work through this in order. Most issues fall into one of these.

One-click check

The Statable Debugger browser extension shows detection, warnings, and live events in one side panel. Faster than the manual checks below.

Script placement

Put the code between the <head> and </head> tags. View source (Ctrl+U / Cmd+Option+U) and search for statable.com/js to confirm the match sits inside the <head> block.

Site identifier

The data-id value must exactly match the identifier shown in your dashboard. No extra spaces, no quotes inside the value, no truncation. Open site settings → General → Tracking Code and copy the snippet again.

Site identifier label

The exact label of the per-site identifier in the dashboard UI may differ. Use the ready-made snippet from Tracking Code rather than typing the value by hand.

Where the page is served from

A trial or paid site is not bound to the domain you registered: events are attributed by the numeric site id in the script URL, so the same tag reports from http://localhost:8000 as it does from production. What is bound is a Free Access site. It accepts events only from the hostname it was registered with, and only from the widget bundle.

A page opened as a local file reports nothing at all: file:// URLs carry no hostname, so there is nothing to attribute the visit to.

Ad blockers on your own browser

Ad blockers (uBlock, AdGuard, Brave Shields, Pi-hole) often block analytics scripts. If one is running, your own visits won't be tracked. Your visitors are still tracked normally, since most don't run blockers.

To confirm, open the page in an incognito window with extensions disabled, or temporarily allow statable.com in your blocker.

Privacy signals on your browser

The script silently does nothing when a privacy signal is active. Check each one in DevTools:

navigator.doNotTrack         // '1' or 'yes' means DNT is on
navigator.globalPrivacyControl  // true means GPC is on
localStorage.getItem('analytics_ignore')  // 'true' means manual opt-out

If any of these are active, your own visits won't be tracked even though everything is configured correctly. Disable the signal in your browser preferences (or remove the flag with localStorage.removeItem('analytics_ignore')) to test as a regular visitor.

Full reference: Privacy & data collection.

DevTools network check

DevTools (F12) → Network → filter by event. Reload the page. You should see a POST to https://statable.com/api/event. It answers 202 whether the event was recorded or refused: the tracker never retries, so a refusal is accepted quietly, and 202 on its own is not proof. Confirm in Realtime. If the request:

  • Doesn't appear at all. Script isn't loading. Check data-id and the script src.
  • Returns 4xx. The payload was malformed: no site id, or an event name the API rejects. Note what does not answer 4xx. A site id belonging to another site, a blocked IP or country, and a Free Access site carrying the wrong bundle all answer 202 and record nothing.
  • Answers 202 but Realtime stays empty. The id belongs to another site, the page is a file:// URL (see Where the page is served from), or the site was created less than a minute ago: ingest refreshes its list of active sites once a minute.
  • Is blocked (red). An ad blocker or browser policy is blocking the request.

Console errors

Switch to the Console tab. A failed script load typically shows net::ERR_BLOCKED or 404. Other errors from statable.com/js/YOUR_SITE_ID/s.js show up here too.

Excluding your own visits

Per-browser opt-out via localStorage:

localStorage.setItem('analytics_ignore', 'true')

From now on, no events fire from this browser on this domain. To re-enable:

localStorage.removeItem('analytics_ignore')

Per-browser only. Switching browser or device requires repeating the step. For team-wide exclusion (whole office IP range), use the IP blocklist in Site settings → Blocklist → IP addresses. Other privacy signals the script honors are documented in Privacy & data collection.

Still stuck?

If you've worked through everything above and still don't see data:

  • Email support@statable.com with your site identifier (or a screenshot of site settings → General → Tracking Code) and a link to a page where the script is installed.

Once Realtime shows your first visit, the Feature overview is a good next stop.


Ready to take control of your web analytics? Try Statable free for 30 days. No credit card required, full feature access, built for GDPR. Start your free trial or view a live demo.