Cookieless · No consent banner · 1101 bytes

Which tweet paid for itself?

Web analytics that ties every visit to the revenue it produced through Polar. Stop reading “1,200 visits from X” and start reading “X → 9 sales → $1,240”.

Start a 15-day trialSee how it works

3 sites, 50,000 events, no card. Takes about a minute to install.

originstat.com/app/s/acme.inc

acme.inc

0 now24h30 days12 months
Visits
0
▲ 38.2%
Visitors
0
▲ 31.4%
Sessions
0
▲ 29.0%
Bounce
0%
▼ 4.1 pts
Duration
2m 14s
▲ 18s
Revenue
$0
▲ 62.0%
Visits over timeLast 30 daysPrevious 30
X / Twitter034%
Google — organic024%
Direct015%
ChatGPT09%
Hacker News07%
Shared link05%
Reddit04%
Revenue by sourceFirst touchLast touch
X / Twitter9 sales$0
Hacker News6 sales$0
Google — organic4 sales$0
ChatGPT2 sales$0
Direct1 sale$0

Reddit brought 890 visits and no sales. Hacker News brought half that and $890.

Channels
Social41%Search24%Direct15%AI9%Referral7%Email4%

AI is 9% of this month and climbing. In Google Analytics it is filed under “referral”, mixed in with everything else.

/040%
/pricing023%
/blog/how-we-built-it013%
/docs09%
/signup06%

A real dashboard, with a made-up company's numbers. Same components you get on day one.

Where your traffic actually comes from

Every visit is checked against several independent signals before we name a source, and they disagree often. That is the whole job, and it is why these two reports describe the same week.

Most analyticsOriginstat
“Direct — 38%”Direct, shared links and the platforms that hide behind them, told apart
Twitter, twitter.com and t.co as three separate rowsOne row, named X, with the whole number on it
ChatGPT and Perplexity buried in “referral”AI as its own channel, so you can watch it grow
Ad traffic lost whenever the browser withholds the referrerStill attributed to the campaign that paid for it
A link from a phone app counted as “direct”Counted as what it was
Bots and link previews inflating the whole reportFiltered before anything is counted

And when nothing resolves, we say so. A visit we can tell arrived from somewhere, but cannot name, is reported as a shared link — not quietly filed under “direct” as though we knew.

Revenue

Money is a column, not a tab

Sales sit on the same row as visits, because that is where the finding is: the channel sending the most traffic is very often not the one paying for it.

AI traffic

ChatGPT gets its own channel

ChatGPT, Perplexity, Claude, Gemini and Copilot, separated instead of buried in “referral”. It is the fastest-growing source most dashboards cannot show you.

Trust

Bots filtered from day one

Crawlers, uptime monitors, browser prefetch and Slack link previews never counted. Nor are your own visits, once you switch yourself off.

Speed

1101 bytes, deferred

One script tag, no cookie, no consent banner, and nothing that blocks your page from rendering. Proxy it from your own domain and ad blockers stop mattering.

Sharing

A public dashboard, one switch

The open-stats page founders like to show, on its own clean URL, without exposing anything else in your account.

Goals

No JavaScript to write

Put data-goal="Signup" on any button. That is the whole integration — no API to call, no events to name in a config file.

Priced per event, not per feature

Every plan has everything. What changes is how many events and how many sites.

MonthlyYearly 2 months free
Pro
$12/mo
$140 once a year · saves $28
  • 500k events a month
  • 10 sites
  • Revenue attribution & cohorts
  • Spike alerts and badges
  • Unlimited history
Start free
Scale
$33/mo
$390 once a year · saves $78
  • 2.5M events a month
  • 30 sites
  • Revenue attribution & cohorts
  • Spike alerts and badges
  • Unlimited history
Start free
Business
$83/mo
$990 once a year · saves $198
  • 10M events a month
  • Unlimited sites
  • Revenue attribution & cohorts
  • Spike alerts and badges
  • Unlimited history
Start free

Every plan starts with the same 15-day trial — 3 sites, 50,000 events, no card. For scale: Plausible charges $99/mo for a million pageviews. Here that money buys ten million. If a trial lapses your account drops to a free Hobby plan rather than a wall, so your history stays put.

Questions people actually ask

Do I need a cookie banner?

No. We set no cookie, and the identifier that tells one visitor from another is thrown away and rebuilt every midnight — it cannot follow anyone into tomorrow, let alone across sites. There is nothing to disclose and nothing to ask consent for.

The script keeps a little bookkeeping in your own site’s storage so it can tell one session from the next. It stays on your domain, holds no identity, and is not a cookie.

What exactly counts as an event?

A pageview or a custom event. Requests we discard as known bots, as browser prefetch, or from anyone who has excluded themselves do not count. We would rather say that here than argue about it on your invoice.

What happens if I go over my plan?

We keep counting. At 100% you get an email and a banner, and not a single data point is lost. Between 100% and 150% you get a full grace period. Only well past that, for two months running, do we move you up a plan — with seven days’ notice and the option to say no.

We never stop measuring. Cutting your history off in the month things went well for you is the worst possible moment to do it.

One site went viral and ate my whole allowance.

That is why every site can have its own cap. The allowance is a single pool across your sites because that is simpler to reason about — but you can tell any one site not to spend more than a set number of events a month, so a side project cannot blind the site that pays your bills.

How does the revenue attribution work?

The first time someone lands on your site we remember what brought them. Weeks later, when they buy, your Polar account tells us about the order and we match the two — so the sale is credited to the thing that started it. First touch by default; last touch and linear are a click away.

Setting it up is one attribute on your buy button. Skip it and everything else still works — you just do not get the revenue column.

Will ad blockers break it?

Any script served from an analytics domain eventually lands on a block list — that is 10–40% of traffic for a technical audience. Proxy our script from a path on your own domain and it stops being blockable. We document it for Cloudflare, Vercel and Netlify, and it takes about five minutes.

Can I make my dashboard public?

Yes, with one switch. You get a clean public page you can link from your own site — the open-stats page a lot of founders like to show — without exposing anything else in your account.

What if I cancel?

Your account drops to the free Hobby plan rather than a wall: your history stays visible and a small allowance keeps measuring. No export ransom, no thirty-day deletion clock.

One tag. About a minute.

Paste this in your <head> and the dashboard starts filling in as the first visitor lands.

<script defer data-site="…" src="https://originstat.com/o.js"></script>
Start a 15-day trial