# Verify

> Confirm Kymo events are arriving, and diagnose the common reasons they are not — ad blockers, CSP headers, wrong site ID, and localhost.

Canonical: https://kymo.in/docs/start/verify
Last updated: 2026-07-21

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.

| Symptom | Cause | Fix |
| --- | --- | --- |
| No `beat.js` in Network | Ad blocker or privacy extension | Test 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` call | Content-Security-Policy | Add `https://kymo.in` to `script-src` and `connect-src` in your CSP header. `sendBeacon` needs `connect-src`. |
| `/api/beat` returns `400` | Missing `data-site` or path | Ensure the tag has `data-site="yoursite.com"`. |
| Events accepted (`204`) but dashboard empty | `data-site` does not match your registered domain | Your `data-site` must equal the domain in your dashboard exactly — no scheme, no `www.`. `yoursite.com`, not `https://www.yoursite.com`. |
| Nothing on localhost | Intentional | `beat.js` no-ops on `localhost`, `127.*`, and `192.168.*`. Deploy to a real domain to test. |
| Your own visits missing | Owner opt-out is set | You 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 minutes | Per-site IP exclusion cache | Changes to excluded IPs take up to 5 minutes to apply. |

> **Warning:** A wrong `data-site` is the most common silent failure. The beacon returns `204` whether or not the site matches a registered domain, so the browser looks healthy while the dashboard stays empty. Check the exact string first.

## 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.
