No cookies · no consent banner · no sampling

Web analytics that answer
to you, not to an ad network.

One script tag. Every number lands in a database inside your own Cloudflare account — goals, funnels, revenue and real-time included, because there is no plan to be on.

Free for one site, with no expiry and no card. Paid tiers from $99 $79 when you outgrow it — the installer re-runs against the same database, so you keep every row.

Launch offer Up to 50% off every paid tier — one payment, applied at the checkout. →
Runs in your Cloudflare account One payment, no renewal Live in about two minutes
The dashboard

Everything on one screen, in one query.

No report builder, no segments to define before you can see anything. Visitors, sources, countries and conversions arrive together, because they were counted together.

Those numbers are illustrative. Here is this site's own dashboard, live and public — the same screen you get, with our real traffic in it.

1.8KBThe entire script, gzipped
0Cookies, banners, third parties
~2minFrom payment to live dashboard
100%Of the data, in your account
Why this exists

Most analytics make you pay twice.

Once in page weight, and again in liability — a consent banner, a data-processing agreement, and a copy of your visitors in someone else's warehouse. This removes both.

No cookie, so no banner

Visitors are recognised by a salted hash that is regenerated every day and never stored. Nothing is written to the device, so in most jurisdictions there is nothing to ask consent for.

Your database, your rows

Everything lands in a D1 database in your own Cloudflare account. Export it as CSV at any time, or query it with SQL. There is nothing to migrate away from.

Every number is a real number

No sampling, ever, and bots are filtered at the edge before they are counted — so a busy month and a quiet one both tell you the truth.

Everything it measures → How the counting works → Next to GA4, Plausible and the free options →

What a script cannot do

Every analytics tool waits
for a browser to cooperate.

A tracking script only counts once the page has loaded and the script was allowed to run. GhostPane can also count the request itself — because it runs in your Cloudflare account, it can sit in front of your site rather than inside the page.

Blocked scripts still count

The pageview is recorded as the HTML is requested, so an ad blocker has nothing to block. You also get the size of the gap: how many visits your script alone was missing, measured on your own traffic rather than quoted as an industry average.

See the AI crawlers reading you

No crawler runs JavaScript, so no script-based product has ever been able to show you one. GhostPane names them — ChatGPT, Claude, Perplexity and the rest — and separates harvesting for training from a live read, where someone has just asked an assistant about that page.

And which pages earn traffic back

The crawls sit next to the visits each page brought in from an assistant, so you can see what was read and never cited. Failed crawls are counted separately — an AI crawler spending its budget on your 404s is a fact you can act on.

This needs your domain's DNS on Cloudflare. Your site itself can be hosted anywhere — a VPS, Vercel, shared hosting — because Cloudflare is already the proxy in front of it and this adds nothing to the page. If your DNS is elsewhere, the tag keeps working exactly as it does for everyone else.

It runs alongside the tag rather than replacing it. Engagement time, bounce rate, single-page-app navigation and your custom events only exist in a browser, so the tag is what reports them — while a pageview both see is counted once, never twice. You can drop the tag and run on the request path alone if you want zero client-side JavaScript; pageviews, visitors and every breakdown carry on, and bounce and duration go quiet.

From payment to live

Four steps, about two minutes.

Nothing to install on your machine, no terminal, no repository to clone. The wizard talks to Cloudflare's API on your behalf and shows you every step as it happens.

Pay

Card or wallet, through Polar — the merchant of record, so VAT is charged correctly for your country and you get a proper invoice. Your licence key arrives immediately.

Connect Cloudflare

Paste a Cloudflare API token. The wizard lists the accounts it can reach so you never have to find an account id, and the token is used for this run only — never stored, never logged.

Watch it build

Database, schema, your login, the Worker, your domain and edge rate-limiting — each step reported as it completes. Every step is repeatable, so a hiccup means "run it again".

Add one tag

Paste the snippet below into your site and the dashboard starts filling up. That is the only thing that touches your own codebase.

The entire installation on your side. One tag, 1.8 KB gzipped, deferred.
<script defer data-site="YOUR_SITE_KEY" src="https://ghostpane.com/gp.js"></script>
Launch offer · up to 50% off

One payment. Then it is yours.

GhostPane is software you run, not a service you rent. Buy it and the setup wizard installs it into your own Cloudflare account in about two minutes — you keep the account, the data and the domain, and there is nothing to run on your own machine.

Free

$0 · forever, not a trial

Better than the free ones on GitHub — edge mode included — and it upgrades in place. One site, unlimited history, and no card — the paid features are absent from the build rather than dangled behind a nag.

  • Runs in your Cloudflare account
  • Set up in about two minutes, no terminal
  • Pageviews, visitors, bounce and engagement time
  • Every breakdown, real-time, and custom events
  • Edge mode — count the visitors a script never sees
  • Unlimited history — nothing expires
  • Upgrade later without losing a row of data
Set it up free → Two minutes, no card. Upgrade later against the same database.
20% off

Single site

A blog, a shop, one product site.

$79 once $99

Save $20 at the checkout

One site

  • Runs in your Cloudflare account
  • Set up in about two minutes, no terminal
  • Your own domain, configured for you
  • Import your Google Analytics history
  • 30 days of setup support
Buy and set up now
50% off

Agency

You run sites for other people.

$249 once $499

Save $250 at the checkout

Unlimited sites

  • Runs in your Cloudflare account
  • Set up in about two minutes, no terminal
  • Your own domain, configured for you
  • Import your Google Analytics history
  • Unlimited sites, added yourself at any time
  • Team accounts with per-site access
  • White-labelled — your name on it, not mine
  • 90 days of setup support
Buy and set up now
The discount is applied at the checkout — there is no code to enter Polar is the merchant of record — VAT handled, real invoice Licence key the moment the payment clears Your data stays in your account, always Free an install from your Polar portal and set it up elsewhere

30 days to change your mind. Email and you are refunded in full, no reason needed — how refunds work. Or start on the free tier and pay nothing until you have seen it working on your own site.

No subscription, no per-pageview fees, no renewal — the same software either way; the tier only sets how many sites it is set up for.

What it costs to run, and how that compares →

Questions

The four people ask first

Do I need a cookie consent banner for this?

In most jurisdictions, no. Consent rules like the EU's ePrivacy Directive are triggered by storing or reading information on someone's device. GhostPane stores nothing on the device — no cookie, no localStorage, no fingerprint. Data protection law still applies to the processing itself, and you remain the controller for it, so check your own position if you have a specific obligation.

How does it count unique visitors without a cookie?

It hashes the visitor's IP address and user-agent together with a secret salt that is different for every site and regenerated every day. The salt is derived at the moment of use and never stored, and the raw IP address is never written anywhere. Within a day the same person produces the same id, so sessions and unique counts are real. Across days the salt has changed, so the ids cannot be linked.

Why does my visitor count look different from Google Analytics?

Two reasons, and both mean GhostPane is closer to the truth. It counts a returning visitor once per day rather than linking them across weeks, because the identifier is deliberately re-salted daily. And it filters bots at the edge using Cloudflare's network-level signals before anything is stored, which typically removes traffic GA never noticed.

What does it actually cost to run?

For most sites, nothing. It runs entirely inside Cloudflare's free tier: Workers, D1 and Durable Objects. Because pageviews are counted into pre-grouped rows rather than stored one by one, a busy site writes a fraction of the rows you would expect. There is no per-pageview fee because there is no vendor in the middle.

All 14 questions, answered in full →

Your visitors. Your database. Your call.

Start on the free tier, paste a Cloudflare token, and the dashboard is yours a couple of minutes later — running in your account, with nothing reporting back to me.

Free tier, no card · no recurring charge · no data leaves Cloudflare
Get in touch

Questions, or something unusual?

The tiers above set themselves up — buy one and you are running in a couple of minutes. Use this instead if you want it white-labelled, have something unusual to migrate, or would simply rather I did the install for you. I read everything that arrives here.

Or email support@ghostpane.com