Skip to content
kymoDocs
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.pushState navigation 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 in data-goals, or a custom goal you fire with window.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, or lighthouse is dropped. It is never stored as a human event.
  • Prefetches. A prefetched page does not execute beat.js until it is actually rendered, so speculative prefetch does not create a pageview.
  • Your own visits, if you set the ?kymo=ignore opt-out, or if the IP is in your site's excluded list.
  • Local development. beat.js no-ops on localhost, 127.*, and 192.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.