Polar analytics that shows which traffic paid
Polar handles the selling and the tax. It does not know that the order came from a Show HN comment eleven days earlier. That belongs to the visit, and the visit is here.
Seven days free. No card, no commitment.
- Organic Social2,412$3,120
- Direct1,072$1,240
- Referral771$960
- Organic Search720$580
- AI246$310
- 🇺🇸United States885$2,410
- 🇮🇳India887$140
- 🇬🇧United Kingdom427$980
- 🇩🇪Germany427$760
- 🇧🇷Brazil451$210
Demo data. A Polar account's revenue would fill these in.
Six questions Polar cannot answer
Polar owns everything from the charge onwards. These live in the week before it, and they are the ones that change what you do next.
Polar is a merchant of record: it takes the payment, handles VAT and sales tax, and pays you out. Its dashboard is the right place for orders, benefits and entitlements.
- 8 days ago
Found a launch tweet - 8 days agoRead /pricing, left
- 2 days ago
Came back from a Google search - TodayRead /pricing again, then paid $99
It has no view of the referrer, the campaign or the pages read before the checkout opened. That information never leaves the browser, so nothing downstream of the sale can recover it.
Which source brought the revenue in Polar this month, not just the visits
X / Twitter$1,240
Organic Search$380
Reddit$0What a visitor from each channel is worth, so ad spend has a number to beat
X / Twitter$1.90 each
Reddit$0.04 each
Organic Search$0.71 eachWhether AI assistants send people who pay, or only people who read
ChatGPT$212
Perplexity$49
Claude$0Which campaign’s customers churn, by following the subscription back to its source
launch-tweet12% churnnewsletter-423% churnpaid-search21% churnRevenue net of refunds per channel, rather than a gross number that flatters it
Gross$4,280Refunded−$219Net$4,061How long a buyer takes to decide, so you stop judging a post by the same afternoon
Median time to pay6 daysVisits before paying3Longest this month41 days
Polar revenue, traced back in three steps
Ten minutes to set up, and you never touch it again.
- 1<script defer2 data-website-id="a7f3c1"3 src="https://geckostats.com/js/script.js">4</script>
1. Add the script
One tag in your <head>, under 2 kB. It is cookieless, so it needs no consent banner anywhere in the EU.
- API
2. Connect Polar
One webhook endpoint in Polar, and nothing else in your account changes. Every payment then arrives knowing which visit produced it.

order_4f8c21b9e70a$99.00succeeded in Polarcame from
launch-tweetX / Twitter · first visit 8 days before3. Open any payment
Every Polar payment carries the post, search or AI answer behind it, and how long the buyer took to decide. Nothing lands under Direct any more.
Everything you need, nothing you don’t
Six screens answer the question you actually have: what did I do that worked?
Traffic and revenue in one view
Blue shows visitors and orange shows revenue. See how they move together, then drill into the channels and sources behind each spike.
Know exactly which post worked
A tagged link per tweet, article or newsletter. It shows up by name, with the visitors and the revenue it brought, even when they buy two weeks later.
Every customer’s full journey
Who paid, where they came from, how long it took. Open anyone and read every page and click from first visit to payment.
- 7:31 PM/pricing
- 7:33 PMcheckout_click on /pricing
- 7:35 PMPaid $49
- 9:02 AM/blog/ship-faster
- 2:14 PM/
- 2:15 PM/pricing
Watch it happen live
A real-time globe with everyone on your site right now, and a feed of pages, goals and payments as they land. Turn the sound on and hear every sale.
- Payment $49 · credited to
launch-tweet - Pageview /pricing ·🇵🇱 Warsaw
- Goal checkout_click · came from
ChatGPT - Pageview /blog/ship-faster ·🇺🇸 Austin
What Google sends you, and what it is worth
Connect Search Console once. Every query, page and country you rank for, with the money beside it, ranked by what it earns rather than by how loud it is.
AI reads your site. See what it took and what it sent back.
ChatGPT, Claude, Perplexity and Gemini crawl you whether you watch or not. Every agent by name, against the visitors and the revenue they sent back.
And 9 more, on every plan
Starter and Growth both include every one of these, at every size.- Revenue attributionStripe, Dodo Payments, Polar and Creem out of the box. Anything else with one API call.
- Goals and funnelsButton clicks and signups as goals, then step-by-step drop-off between them.
- One-click filtersClick any row, a source, a country, a campaign, and the whole dashboard follows.
- Subscriptions and MRRMRR, churn and lifetime value by source: which channel brings customers who stay.
- AlertsTracking stopped, revenue down, organic clicks down, a page deindexed, a query dropped five places.
- Release markersOne curl at the end of your deploy puts a tag on the chart, so a drop can be read against what you shipped.
- RetentionWho came back, week by week, and what the returners were worth.
- Share as an imageYour period rendered to a PNG, ready to post, drawn from the numbers rather than screenshotted.
- No cookies, no bannerA visitor is a salted hash that rotates every day and the IP is never stored. Nothing to consent to.
Works with your AI tool
Add the GeckoStats MCP server and Claude, Cursor or ChatGPT can read your Polar revenue the same way the dashboard does.
Via ChatGPT
Connect over MCP and let it explain last week.
ChatGPT- New chat
- Search chats
- Library
ChatsChatGPT 5Ask anything
Claude- New chat
- Chats
- Projects
- Artifacts
RecentsClaude Sonnet 4.5Reply to Claude…Sonnet 4.5Via Claude
Add the server as a custom connector and ask about your own numbers.
Via Claude Code
One command in the terminal, then it reads traffic, revenue and funnels.
Claude Code~/sites/nimbus✻ Welcome to Claude Code!/help for help, /status for your current setupcwd: ~/sites/nimbus>? for shortcuts
Grok- New chat
- History
- Tasks
TodayGrok 4Ask anythingGrok 4Via Grok
The same server, the same answers, from Grok.
Via Cursor
The same 26 tools, from the editor you write your site in.
nimbusappcomponentslibpricing.tsxlayout.tsx
pricing.tsxAgentPlan, search, build anythingSonnet 4.5
Gemini CLI~/sites/nimbus██████ ███████ ███ ███ ██ ███ ██ ██ ██ ██ ████ ████ ██ ████ ██ ██ ██ ███ █████ ██ ████ ██ ██ ██ ██ ██ ██ ██████ ███████ ██ ██ ██ ██ ████ ██
Tips: /mcp lists connected servers · geckostats (26 tools)>Via Gemini CLI
Point it at the server and ask which page is worth another post.
claude mcp add --transport http geckostats \ https://your-stats.com/api/mcp \ --header "Authorization: Bearer ml_…"
- 26 tools: overview, sources, pages, goals, funnels, customers, search queries, live view
- Ask it which channel brought this month's Polar revenue and it answers from your own data
- One key per website, rotate it whenever you like
Selling through something else as well?
Connect as many as you like. One dashboard, one revenue number.
Simple pricing, seven days free
Every size includes Polar, every other provider, Search Console, the AI assistant and the MCP server.
Starter
For one site and one person.
Billed monthly · up to 100K events
No commitment. Cancel anytime.
- Realtime dashboard
- Live Globe
- User Profiles
- Funnels
- Revenue tracking
- Core Web Vitals
- and 9 more, on every plan
Growth
RecommendedFor several sites and the people who work on them.
Billed monthly · up to 100K events
No commitment. Cancel anytime.
- Realtime dashboard
- Live Globe
- User Profiles
- Funnels
- Revenue tracking
- Core Web Vitals
- and 9 more, on every plan
Every plan starts with 7 days free. No commitment, cancel anytime. Prices exclude VAT, which may apply at checkout.
Polar questions
Polar is a merchant of record. Does that change the attribution?
Not for your side of it. The visit happened on your domain and the order carries the id you put on it, so the chain holds whether Polar or you are the seller of record.
Does the webhook need a particular payload format?
Yes, set it to Raw. The signature is checked over the exact bytes Polar sent, and a re-encoded payload will not verify.
What happens when somebody upgrades a plan?
subscription.updated carries the new amount, so MRR per source moves with it instead of being frozen at whatever the customer first signed up for.
How long does this take to set up?
Under ten minutes: the script on your site and one webhook in Polar, with the payload format set to Raw. Selling through Polar Checkout Links needs no code at all, because the tracker puts the visitor in the link's reference_id and Polar copies it onto the order.
Will it slow my site down?
The tracker is under 2 kB, deferred, and fetches nothing at runtime. It also reports Core Web Vitals from real visits so the claim is checkable.
Do I need a cookie banner?
No. Tracking is cookieless by default, nothing is stored on the visitor's device, the IP is never kept, and Do Not Track and Global Privacy Control are honoured.
Polar already shows me my orders. What does this add?
Which post, search or AI answer produced each of them. Polar's dashboard begins at the checkout; everything that decided whether the checkout opened happened on your site, before Polar was involved.
What if a customer takes weeks to decide?
The join happens when the order arrives, not inside a session window, so a customer who first read something in March and bought in May still credits March.
Connect Polar and see what paid.
Add the script, add one webhook, and every Polar payment arrives with the visit that produced it.
7 days free · no commitment · cancel anytime
