Skip to content
kymoDocs
Start here

Verify

Once the script is live on a real domain, one real pageview should show up within seconds.

Confirm it works

  1. Load a real page

    Open your live site in a normal browser tab — not localhost, and not with an ad blocker you have configured to strip analytics. Navigate to any tracked page.

  2. Check the dashboard

    Open Real-time in your Kymo dashboard. Your visit should appear on the map within a few seconds. If you would rather confirm from the browser, open DevTools first — see below.

  3. Confirm the network calls

    In DevTools, on the Network tab:

    • beat.js loads with status 200.
    • A request to /api/beat fires with status 204. That 204 means the event was accepted.

    In the Console, window.kymo should be a function.

Nothing showing up

Work down this table. Most missing-event problems are one of these.

SymptomCauseFix
No beat.js in NetworkAd blocker or privacy extensionTest in a clean browser profile or incognito with extensions off. The script is named beat.js, not analytics.js, to avoid most blocklists, but aggressive blockers still catch it.
beat.js loads, no /api/beat callContent-Security-PolicyAdd https://kymo.in to script-src and connect-src in your CSP header. sendBeacon needs connect-src.
/api/beat returns 400Missing data-site or pathEnsure the tag has data-site="yoursite.com".
Events accepted (204) but dashboard emptydata-site does not match your registered domainYour data-site must equal the domain in your dashboard exactly — no scheme, no www.. yoursite.com, not https://www.yoursite.com.
Nothing on localhostIntentionalbeat.js no-ops on localhost, 127.*, and 192.168.*. Deploy to a real domain to test.
Your own visits missingOwner opt-out is setYou may have visited with ?kymo=ignore before. Clear it with ?kymo=track, or check your IP is not in Settings → excluded IPs.
Events delayed a few minutesPer-site IP exclusion cacheChanges to excluded IPs take up to 5 minutes to apply.

Still stuck

Confirm the beacon body in DevTools: the /api/beat request payload should be JSON containing your site and path. If site is wrong there, fix the data-site attribute. If it is right and the dashboard is still empty, the domain is not registered to your account — add it in the dashboard.