“Direct” traffic, unmasked.
In-app browsers hide where visitors came from. Grosslytics names them.
- Direct Instagram: instagram.com (in-app)
- Direct TikTok: tiktok.com (in-app)
- Direct LinkedIn: linkedin.com (in-app)
- Direct X: x.com (in-app)
Revenue analytics for founders
See which posts, searches and AI answers bring buyers, and what each one earned after fees and ad spend.
Free on your own Cloudflare. No cookies.
Paste a 1.5 KB script into your site’s <head>. Works on any site: Next.js, Astro, WordPress, Webflow, Framer, Shopify or plain HTML.
Add one webhook URL in Stripe, Razorpay, Polar, Paddle or Lemon Squeezy. Each sale is signed, checked and matched to the visitor who made it.
Every source, page and campaign is ranked by the money it brought in after fees and ad spend, not by pageviews.
Grosslytics follows a buyer from first visit to payment, then subtracts what the gateway and your ads took. You see the money, and where it really came from.
Try it. Switch the model, the range, or gross and net.
Visitors from chatgpt.com are worth 4.9× those from google.com, your biggest source.
AI search brings 16% of visitors but 31% of net revenue.
94% of buyers read /pricing before paying; 17% of other visitors do.
Visitors may return on other days or appear in another source/channel. Referrers show top rows; totals include every source.
Revenue from buyers who viewed each page; pages overlap.
Sample data from a fictional SaaS.
In-app browsers hide where visitors came from. Grosslytics names them.
1.5 KB
Compressed. No cookies and no layout shift.
Visits from AI search are tracked as their own channel.
Connect Claude Code, Cursor or Windsurf over MCP, and ask in plain English.
Which channel earned the most per visitor this month?
chatgpt.com at $1.52 per visitor, from 35 sales. X brought more visitors but earned $1.00 each.
Visitors and sales appear on your dashboard the moment they happen.
Deploy to your own Cloudflare account in about five minutes. The setup checks each step for you.
Start the setup ›One page, built around the money. All of it is in the free self-hosted version.
First touch, last touch, or linear. Switch with one click and every panel recalculates.
See revenue before fees, after gateway fees, or after fees and the ad spend you enter per source.
A simple bridge from gross revenue to what you kept: gateway fees and ad spend, side by side.
Open any sale to see each visit and page the buyer saw, from the first click to the payment.
How long buyers take from first visit to paying: same day, within a week, or longer.
Renewals included, so you know which channel finds customers who stay.
A weekday-by-hour heatmap of sales, with refunds in red, in your own timezone.
Revenue by entry page, plus read time and scroll depth, so you know which posts close.
How people who paid used your site compared with visitors who didn’t.
In-app browsers from Instagram, TikTok, LinkedIn and X are named instead of hidden as Direct.
Countries, devices, browsers and operating systems, each with its own revenue.
Click any source, page, country or device to filter the whole dashboard to those visitors.
Visitors and sales stream in over a WebSocket the moment they happen.
A full Stripe refund removes the sale from revenue and marks it in red. Nothing to clean up by hand.
Mark a launch or a post on the chart, so next month you still know why that day spiked.
Share an open revenue page and an embeddable badge. Customer emails and journeys stay private.
Crawlers, headless browsers, verified bots and datacenter traffic are dropped before they reach your numbers.
Report in USD, EUR, GBP or INR, with days and hours on your local clock.
The script goes in your site’s <head>:
<script defer src="https://your-api/g.js"
data-site-id="gl_…"></script> The webhook goes in your payment dashboard:
https://your-api/api/webhooks/stripe?siteId=gl_… Track button clicks with a data-goal="signup" attribute. Stripe and Polar checkout links get the visitor ID added for you.
Compare entry plans, and see how much of your revenue goes to fees.
Published entry prices, checked Nov 6, 2026. Higher traffic tiers cost more on DataFast and Plausible. Hosted options: DataBull from $9/mo, Grosslytics $5/mo.
$4,721 / year
goes to Stripe at 2.9% + 30¢ per sale. Grosslytics shows each channel's revenue with this taken out.
$0 forever
Runs on your own Cloudflare free tier.
$5 per month
We run it. 14-day free trial, no card.
$29 one time
One command installs it in your Cloudflare.
Those tools count visits. Grosslytics also receives your payment webhooks, so every sale is tied to the post, search or AI answer that brought the buyer, and shown after gateway fees and ad spend.
Stripe, Razorpay, Polar, Paddle and Lemon Squeezy, through signed webhooks. Stripe is the most tested; full Stripe refunds are handled automatically.
Grosslytics runs on your own Cloudflare account: a Worker, a D1 database and a queue. Your visitor and revenue data never passes through our servers, and Cloudflare’s free tier covers most small sites.
No. You paste one script tag and one webhook URL. The setup at /start checks each step for you against real data.
Grosslytics sets no cookies and stores no IP addresses. A random visitor ID is kept in your site’s browser storage so a sale can be matched to the visit, and buyer emails are masked. Rules differ by country, so check whether your visitors need a notice or consent.
The tracker posts to a neutral /api/event path on your own API with a plain request, which EasyPrivacy and uBlock Origin’s privacy list did not block in our tests.
Yes. Your API includes an MCP server, so Claude Code, Cursor or Windsurf can answer questions like “which channel earned the most per visitor this month?”
Yes. Self-hosting has no site limit; each site has its own ID, currency and timezone.
Swap the script tag and point your payment webhook at your Grosslytics API. Existing data-fast-goal attributes on your buttons keep working.
Both. Self-hosting is free. Indie Cloud is hosted for you at $5 a month for up to 100,000 events, after a 14-day free trial with no card. Lifetime is $29 once: a license key and one command that installs Grosslytics in your own Cloudflare account and updates it later.
Free on your own Cloudflare. Set up in about five minutes.