Install
Kymo is one script tag. It sets no cookies, reads no storage except a single owner opt-out flag, and needs no consent banner.
- Copy the tag
Paste this into your site's HTML, with
data-siteset to your domain.<script defer src="https://kymo.in/beat.js" data-site="yoursite.com"></script>data-siteis the value Kymo files events under. It must match the domain registered in your dashboard exactly —yoursite.com, nothttps://yoursite.comand notwww.yoursite.com. - Put it in the <head>
Place the tag inside
<head>, or immediately before the closing</body>. Either works.defermeans it never blocks rendering, so the<head>is fine.Add it to every page you want tracked. If your site is a template or single layout file, one edit covers the whole site.
- Optionally declare key-page goals
To count views of specific paths as conversions, list them in
data-goals, comma-separated:<script defer src="https://kymo.in/beat.js" data-site="yoursite.com" data-goals="/signup,/onboarding/complete"></script>WhatsApp,
tel:,mailto:, and form submits are tracked as goals automatically — you do not need to list those. - Deploy
Ship the change. The next real pageview sends a beacon. There is nothing to build and no package to install.
What happens on first load
When the page loads, beat.js runs once and sends a single pageview beacon to https://kymo.in/api/beat. The request is a text/plain POST via navigator.sendBeacon, so it never blocks the page and never triggers a CORS preflight.
The beacon carries the path, the referrer hostname, any UTM parameters, and the viewport width. It carries no cookie and no identifier you set. Kymo derives a visitor hash server-side from data it already has — see Cookieless identity.
After the first pageview, the script also listens for outbound-link clicks, history.pushState navigations (for single-page apps), and form submits.
Excluding your own visits
To keep your own browsing out of your stats, visit your site once with ?kymo=ignore appended to any URL:
This sets a flag in your browser's localStorage and stops that browser from sending events. Undo it with ?kymo=track. This is per-browser and affects only you. To exclude an office IP for everyone, use the per-site IP exclusion in Settings instead.
Next
Confirm it works: Verify events are arriving.