Skip to content
kehai.io

From visits to results

Web analytics without the noise.

Kehai counts what happened. No sampling, no modeling, no cookies. Visitors are salted hashes that expire with the day.

2.5 kB of script, on every page you measure

built for sites that

Answer to a legal team

No analytics cookie, and a field-by-field inventory your counsel can actually read.

Run on numbers, not vibes

Measured reports use recorded events without sampling. Imported history and forecasts keep their own labels.

Respect their readers

Visitors stay strangers by design. Visitor and visit codes reset at midnight UTC.

Sell things

Confirmed sales and refunds arrive from the shop itself, so revenue sits beside traffic and agrees with your books.

watch the panel count · 1:30

A ninety-second tour recorded on demo data. Nothing in it is a customer, and the figures are a generated shop rather than real customer traffic.

Or open it yourself:demo@kehai.ionorthbound-demo-2026open the demo

how it works

Counted without a cookie.

Cookieless analytics works like this: Kehai tells visitors apart with a hash built from things every request already carries, salted daily and scoped to one site. Visits end at midnight UTC. The recorded events stay for the site's full retention window.

00:00 UTC

The salt rotates

A fresh random value replaces yesterday's. New visitor codes use the new salt; earlier codes remain in the events already recorded.

09:14

A presence appears

blake3(salt, site, ip, user agent) becomes a4f09c2e. Raw IP addresses stay out of analytics rows. Rate controls and declared-bot records have separate limits.

13:02

It returns

Same inputs, same hash, counted once. On any other Kehai site the same person hashes to something unrelated.

24:00

The day ends

Tomorrow the same person is counted under a new visitor code. Activity on the next UTC day belongs to a new visit with its own source. Earlier events stay for the site's retention window.

this page runs Kehai. today you are like
a8c3f107e629b4d2
That string illustrates the day's visitor code. The real code is stored alongside event details, such as time and page path, for the site's retention window. At midnight UTC, new activity uses new visitor and visit codes.
next rotation 00:00 UTC · remaining --
a demonstration hash, computed in your browser and sent nowhere. the real visitor code is computed at intake

the entire integration

One tag. No analytics cookies.

<script defer src="https://stats.kehai.io/k.js?site=yoursite"></script>
2.5 kBthe whole script, gzipped
0analytics cookies
1script on your page. One, whatever you turn on

Counts initial loads and SPA navigations. Sends with sendBeacon, so it never blocks a click or a close.

気
ki
air, spirit, mood. The thing you feel in a room.
配
hai
to distribute, to arrange. Putting things in place.
気配 [kehai] noun.
1.A sign or indication that something is present.
2.The faint sense of someone nearby: a sound, a warmth, a shadow, before you turn around.
3.(this product) Traffic, sensed the same way.

Why the product is named after a feeling.

Walk into your kitchen at night and you know someone's there before you see them. A floorboard, a warmth, a change in the air. You'd swear to the presence. You couldn't name the person.

That's kehai, and it's the exact shape of the measurement problem. A site owner needs to know how many people came, where from, and what they did. None of that requires knowing who a single one of them was. Analytics spent two decades collecting the person to count the presence. Kehai counts the presence and lets the person stay in the dark, where they were standing anyway.

The kanji is the mark. The philosophy is the architecture. Everything below is just the two of them, applied.

the panel

Everything it counts.

Twenty-six reports, one panel, measured and modeled figures labeled. Turn a module off and it disappears everywhere: menu, API, and all.

01

No analytics cookies

No analytics cookie or visitor identifier in browser storage. The script reads page and device data. Assess consent for your installation using the cookie statement.

02

Identity scoped to one UTC day

A visitor code is scoped to one site and one UTC day. Visits end at midnight UTC, so a new day's activity starts with a new visit code and its own source. Earlier events stay for the site's retention window.

03

Measured and modeled, labeled

Measured reports do not sample stored events. Forecasts stay separate. Blockers, failed delivery, and intake limits can leave gaps in collection.

04

A bot ledger you can read

Stored declared-bot events stay out of human metrics and carry their matching rule. Earlier rejections and delivery losses are outside that ledger.

05

AI traffic, counted apart

Visits sent by ChatGPT, Claude, or Perplexity land in their own channel, classified ahead of search so they don't drown in organic.

06

MCP for your own assistant

The AI you already use reads the same defined reports the panel does: one URL, one key, read-only. Your key controls the site and reports your assistant can read.

07

Leave with everything, any day

Export reports or your full site archive on any plan. Send eligible sales to Google Ads by CSV or HTTPS feed.

08

EU hardware, EU jurisdiction

Analytics rows live in Warsaw, Poland, run by us under EU law. Raw IP addresses stay out of the analytics database. Rate controls briefly hold them in memory, and infrastructure processes requests.

09

2.5 kB script. One tag.

One request, one file. Count pages, SPA navigation and Web Vitals. Query exclusions are enforced server-side - change them in Settings without replacing the tag.

And the quieter rest: local hour and weekday segments, referrers cut to hostnames, browser and device classes, products and coupons, imports from GA4, Plausible, and Umami, batch reports for BI, and five panel palettes. Each one measured, none of them an add-on: the plan table below says which plan carries which.

Ecommerce integrations

Bring confirmed sales into Kehai from the checkout you already use. Choose one commerce source per site, with the Ecommerce module included in Commerce.

Stripepayments

One restricted key, one webhook

Subscription payments, Checkout purchases, and supported refunds arrive on their own, with each currency kept separate. Card numbers never touch Kehai.

Set up Stripe
WordPress · WooCommercepublishing & shop

One plugin for the whole stack

Visits on WordPress, confirmed sales and supported refunds from WooCommerce - installed and configured from one card in Kehai, no FTP, no manual copying.

Install the WordPress plugin
Wixsite builder

Read-only, nothing to host

A read-only key is all it takes. Confirmed payments and supported refunds reach your commerce reports on their own.

Set up Wix
Squarespacesite builder

Website orders, accounted properly

A site API key brings supported sales and refunds into Kehai, with tax and shipping kept separate from the products.

Set up Squarespace
PrestaShopshop platform

Native module, refunds reviewed in-shop

One module measures visits and queues confirmed orders. Credit slips wait for your confirmation inside PrestaShop itself.

Install the PrestaShop module

01forecasting

See where the month is heading.

Two models compete against simply repeating last week, tested over your own history. The winner draws the line, and the line admits it's a guess.

  • Ask for the month and get a line with a calibrated 80% interval
  • Read the loser's score, shipped with every answer
  • See the days that surprised the model, flagged by date
  • Keep forecasts out of measured columns, always
  • Turn the module off and the line vanishes, counts never move

winner damped holt · baseline repeat last week

winner · damped holtinterval · 80%, calibratedbaseline beaten · repeat last week
todaymodeled, and labeled
aug 01aug 31

an example forecast · your own history picks the model

How did last week's launch actually do?

Launch week drove 18,240 visits, 61% from the campaign tag, and checkout conversion held at 3.1%.

kehai · campaigns · 2026-08-10 → 2026-08-16

Where did those visits land?

/pricing took 41% of campaign entries and /docs/get-started another 18%.

kehai · pages · filtered by campaign

an example exchange · your assistant, one URL, one key, read-only

02mcp and api

Ask your own AI, not ours.

Kehai serves MCP, so the assistant you already use reads the same defined reports the panel does. Prefer code? The REST API streams everything raw.

  • Connect any MCP assistant: one URL, one key, read-only
  • Stream raw events, commerce, and bot tables over REST
  • Copy any card for AI: range, filters, and definition included
  • Feed BI pipelines from the batch report endpoint
  • Keep your model key: it never passes through Kehai

url https://app.kehai.io/api/mcp · Authorization Bearer $KEHAI_KEY

03your data

Leave with everything, any day.

Lock-in ends where the export begins. Every number you see can walk out the door with you, and there's no paid tier guarding the exit.

  • Export any card completely: CSV, JSON, NDJSON, Markdown, XML
  • Pull the whole site as one file, configuration first, then every row
  • Read that file into another Kehai and the site moves
  • Stream a decade of events without a bigger machine
  • Pay nothing extra: export is a feature, not a tier

GET /api/v1/export?dataset=events&from=2026-01-01

whole-site exportone file · one button · example sizes
config + sites + goalsfirst41 kB
events9,214,332 rows1.9 GB
commerce184,209 rows96 MB
bots & crawlers412,008 rows88 MB
CSVJSONNDJSONMarkdownXMLno paid export plan

Before you continue

We and our 1,437 partners store and access cookies on your device to process personal data, build a profile of your interests, and measure ad performance. You can withdraw consent at any time in settings.

Strictly necessaryalways on
Performance & analytics
Advertising & profiling
Accept allManage preferencesReject all

analytics cookies 0 · ad audiences 0

04cookieless collection

Know what the script reads.

Kehai sets no analytics cookie and writes no visitor identifier to browser storage. Reading page and device information can still fall under consent rules. Your legal team can assess the actual installation using the published field inventory.

  • No sampling or estimated traffic
  • No cookies or browser storage
  • Visitor and visit codes reset at midnight UTC
  • EU hosting in Warsaw, EU jurisdiction
  • Hand counsel the security page and the field inventory, not a claim

analytics cookies 0 · visitor storage 0

05revenue

Revenue beside traffic, from the server.

A browser pixel sees the order a visitor's ad blocker lets it see. Kehai takes the sale from the shop after payment is confirmed, and the refund when it happens, so the number in the report is the number in your books. Included in Commerce.

  • Confirmed payments and refunds, from the shop or Stripe, never from the browser
  • Each currency kept apart; tax and shipping separated from the products
  • Revenue attributed to channel and campaign, with the click that started it
  • Coupons and products counted with the order they belong to
  • Eligible sales exported to Google Ads as conversions, by CSV or feed

Stripe · WooCommerce · PrestaShop · Wix · Squarespace · or POST /api/v1/commerce

confirmed salesexample rows
order 48213Stripe€129.00paid
order 48214WooCommerce349.00 złpaid
order 48209PrestaShop-€59.90refunded
order 48215Wix$89.00paid
refunds subtractedcurrencies kept apartattributed to the clickno browser purchase pixel

the switch

Move in an afternoon.
Keep every year you have.

Leaving an analytics tool usually means abandoning its history. Kehai imports yours instead, and keeps it labeled with the system that measured it.

up to10

years of history moved

into26

reports that read it

just1

line for you to paste

still0

extra for any of it

step 01

Connect or upload

Connect Google from the Imports screen and Kehai's own app asks for read-only access to Analytics, nothing else. Plausible and Umami connect with a key from your own account, and every credential is sealed before it is stored. Moving from another Kehai site instead? Upload its export file and the whole site comes back.

step 02

Your history arrives

Your daily history arrives as its own series, with your old tool's definitions attached. Those days sit beside what Kehai counts and are never added to them.

step 03

Run both for a while

Keep both tools on the site for a few weeks and read the same days in each. Every day says which tool measured it, so a day Kehai counted is never quietly folded into a day GA4 reported.

step 04

Switch off the old tag

Keep one collection script after the switch. Your imported days stay in the reports for as long as your plan keeps history. What arrives depends on what the old tool's API gives us, and imports do not recreate raw events.

Your years stay yearsImported history lives in the reports for as long as your plan keeps history, and you can buy more of it on any plan.
Changing your mind is freeOne button exports the whole site as one file, any day. There is no paid export plan and there never will be.
A person reads your emailHuman email support on every plan. Usually it is answered by the person who wrote the importer.
See exactly what does and does not import→Your old metric names, translated→

pricing

Every plan counts the same way.

What changes is what you do with the numbers. The table below is the whole truth, including what a plan does not have.

what each column is for
solo
€49 / mo
or €490 a year, 2 months free
7 days free, then €49 a month
One site that wants honest numbers
core
€99 / mo
or €990 a year, 2 months free
7 days free, then €99 a month
A few sites, with your own events
growthrecommended
€199 / mo
or €1,990 a year, 2 months free
7 days free, then €199 a month
Funnels, journeys, and a forecast
commerce
€399 / mo
or €3,990 a year, 2 months free
7 days free, then €399 a month
A shop, with revenue beside traffic
what fits
Priced for visits a month50,000250,0001,000,0003,000,000
A visit is up to 10 pages on average
Sites151015
People23510
Data retention1 year2 years3 years4 years
Longer history, 5, 7 or 10 years, on any planadd-onadd-onadd-onadd-on
counting
Every traffic report, realtime to referrers
No analytics cookies or browser storage
Bot ledger with the rule beside each count
Traffic from ChatGPT, Claude, Perplexity
History import from GA4, Plausible, Umami
Whole-site export, one file, one button
MCP for the assistant you already use
REST API over every dataset
Goals and pacing targets
Spike and drop alerts, weekly digests
Read-only link for people without a seat
UTM links and Google Ads ValueTrack builder
Campaign keywords and ad content
Tracking links that count clicks from a mailing
Every campaign URL you built, searchable
behavior
Custom event properties
Funnels and visit journeys
Forecasting, with the model's score attached
Web Vitals (LCP, INP, CLS) from real visits
money
Revenue, products, and coupons
Revenue attributed to channel and campaign
service
Human email support

or do not run it at all

Operator

from €999 / mo

invoiced, quoted from your measured volume

The same product, with someone who runs it. For teams who want the measurement to be right without owning the job of keeping it right.

Talk to us
01Everything in Commerce, with volume, sites, and people agreed rather than capped
02Migration done for you, not handed to you as a guide
03A named operator who knows your setup, with support agreed in your offer
04Availability commitments written into your own order, not sold from this page
05A security and DPA review run with your own counsel
06A quarterly measurement review, in writing
07A retention window of your choosing, up to 10 years

Pay yearly and get two months free. Prices in EUR or USD, excluding VAT. Business customers only.

Over the band two months in a row? We write to you and agree a plan from the next period. Nothing is blocked and no measured row is ever dropped.

A visit is priced for up to 10 pages on average. Above that two months in a row, we write to you the same way, and nothing is blocked.

Longer history without changing plan: 5 years for €49, 7 years for €69, 10 years for €99 a month, on any plan, added from the billing screen in your plan's own cadence and currency.

Operator: for more than 15 sites or 10 people, a retention window up to 10 years, and support agreed in your offer, from €999 a month. Quoted, not charged online.

questions

Fair questions.

Straight answers, including the ones a pricing page usually hides. Anything else, ask by email.

Can I just sign up?+−

Yes, for Solo, Core, Growth, and Commerce. You pick a plan, prove you control the domain with one DNS record, and enter a card in Stripe Checkout, which takes nothing for the first 7 days. The owner invitation lands in your inbox a moment later. Operator stays sales-led, because a negotiated scope needs a conversation before it needs a card.

Is there a free trial?+−

Yes. Every plan starts with 7 days free. Checkout asks for a card and takes nothing for 7 days, so you see your own numbers before you pay for them. Cancel from the billing portal inside the trial and nothing is charged. Keep going and the card is charged the plan's price on day 8.

Do I still need a consent banner?+−

Kehai sets no analytics cookie and writes no visitor identifier to browser storage. Its script still reads page and device information. Whether your installation requires consent depends on the configuration and applicable law. The privacy policy and cookie and storage statement give your counsel the technical facts to assess it.

How accurate are unique visitors?+−

Kehai counts daily visitors exactly and refuses to fake the rest. A visitor code is scoped to one site and one UTC day. Over a month you get visitor days, named that, because Kehai does not use a stable visitor identifier to count one person across days. The daily codes remain in the recorded events for the site's retention window.

What about bots?+−

Classified at intake from the declared device string and removed before any human metric is computed. They get their own report, with the exact rule that caught each one. A bot that impersonates a browser is counted as a person: we remove what identifies itself, which is most of it and not all of it.

Where does the data live?+−

In Warsaw, Poland, under EU law, run by us rather than by a hyperscaler. Cloudflare proxies the intake hostname, so we won't tell you nothing leaves our servers. What we will tell you: raw IP addresses are kept out of the analytics database. Rate controls briefly hold them in memory, and infrastructure providers process the request. The privacy policy describes those boundaries.

Can I bring my history?+−

Yes. GA4, Plausible, and Umami importers translate daily history into vendor-labeled series with their definitions attached. Imported days sit beside Kehai's counts and are never added to them.

Can I leave with my data?+−

Any day. Every report screen downloads as one file with every card on it, the API streams the raw datasets, and one button exports the whole site as a single file that another Kehai can read back. There's no paid export plan.

Start counting
your traffic today.

Choose your plan in minutes, verify your domain, drop in one script, and that's the whole setup. The first 7 days are free, and nothing is charged until day 8.

Start free trial

newsletter

Field notes, occasionally.

Notes on measurement and what shipped, a few times a year. No tracking pixel, ever.

Double opt-in: open our email link and confirm on the page to subscribe. Every issue has a one-click unsubscribe.