Concepts
What counts
Kymo records three kinds of human event and nothing else that inflates your numbers.
What counts
A human event is one of:
- Pageview — a real page load, or a
history.pushStatenavigation in a single-page app. - Outbound click — a click on a link to a different hostname.
- Goal — an auto-goal (WhatsApp,
tel:,mailto:, form submit), a key-page view listed indata-goals, or a custom goal you fire withwindow.kymo(...).
Repeated pageviews of the exact same path and query, back to back with no navigation in between, are de-duplicated by beat.js and counted once.
What does not count
The ingest endpoint drops these before anything is stored:
- Bots and crawlers. Any request whose user-agent matches
bot,crawl,spider,slurp,headless, orlighthouseis dropped. It is never stored as a human event. - Prefetches. A prefetched page does not execute
beat.jsuntil it is actually rendered, so speculative prefetch does not create a pageview. - Your own visits, if you set the
?kymo=ignoreopt-out, or if the IP is in your site's excluded list. - Local development.
beat.jsno-ops onlocalhost,127.*, and192.168.*.
AI crawlers are counted separately, and free
AI crawlers do not run beat.js — a crawler does not execute your page's JavaScript. They are tracked through a separate server-side path (/api/crawl) and stored as bot events, not human events. See The bot taxonomy.
Metering against plan limits
Plans are sized by human events per month: Solo up to 10,000, Studio up to 100,000. Only the three human event kinds above count toward that limit. Bot events do not.