Revenue on every report
Sources, campaigns, UTM tags, referral codes, landing pages, countries and devices — each row carries the revenue it drove, attributed with the model you choose.


OpenRev is open-source web analytics that ties every visitor, channel and campaign to the revenue it brings in. Host it yourself on Cloudflare, Docker or Node.js — set up with one command.


Screenshots show demo data for a fictional product.
Works with
How it works
Pageview analytics tell you where traffic comes from. OpenRev tells you which of it pays — by joining your tracking data with your payment provider's webhooks.
The script records the session's source, campaign, landing page, country and device — and gives the visitor an ID.
Pageviews, goals and engagement time build a journey across every visit, so you see the path, not just the last click.
Checkout links are tagged automatically. Your provider's webhook reaches OpenRev, signature-verified.
The payment is matched to the visitor and credited to the session that brought them in.
OpenRev stores every touchpoint, so the attribution model is a view, not a setting baked into your data. Switch and every past payment is re-attributed instantly.
Last non-direct
Default. Credits the last campaign or referral, ignoring direct returns.
Last touch
Credits the session the purchase happened in.
First touch
Credits whatever introduced the customer.
Features
Every channel, referrer, campaign, page, country and device shows visitors and revenue, conversion rate and revenue per visitor — so you can double down on what pays.
Sources, campaigns, UTM tags, referral codes, landing pages, countries and devices — each row carries the revenue it drove, attributed with the model you choose.


Countries, regions and cities on a live map, from edge headers or a free GeoIP database.


A live globe, everyone on your site right now, and a buyer-intent score from their channel's conversion rate and what they're doing — pricing pages, goals, return visits.


Every visit, page, goal and payment for a visitor on one timeline — with their first touch, lifetime revenue and the properties you identify them with.


Pages, goals and payments as steps, with drop-off and revenue at each one.


Track goals from JavaScript, HTML attributes or scroll depth, with custom properties and revenue.


See which sources bring customers who keep paying — renewals included.


Visits from ChatGPT, Perplexity, Claude, Gemini, Copilot and more get their own channel — from the referrer or utm_source.
Sales, refunds, goals, traffic spikes and daily or weekly digests to Slack, Discord, Telegram, email or any webhook.
Invite teammates with roles. Share a public dashboard link that never exposes personal data.
Website keys, account tokens and an OpenAPI spec. AI assistants can query your numbers through the built-in MCP server.
window.datafast(), data-fast-goal and datafast_visitor_id keep working, and the API has compatible endpoints.
SPA and hash routing, engagement time, outbound clicks and scroll goals in a script smaller than most favicons.
Switch a site to a daily-rotating hash so nothing is stored on the visitor's device.
Proxy recipes for Next.js, Vercel, Netlify, Cloudflare, Nginx and more — with the visitor's real location kept.
Follow visitors across your marketing site, app and checkout domains, and across subdomains.
Payments in any currency are converted to your site's currency. New, renewal and refund revenue are kept apart.
Filter by any dimension, compare periods, pin date ranges and annotate the chart with notes.
Bot filtering, IP, country and hostname exclusions, and CSV export of your data.
Product tour
Founders, marketers and indie hackers who want to know what to do more of — without stitching together three tools.


Visitors, revenue, conversion rate and revenue per visitor, with period comparison and a chart that respects your time zone.


Net, new, renewal and refunded revenue, revenue by source, lifetime value by first touch and every payment with its attributed source.


Who's on your site right now, where they came from, what they're reading and how likely they are to buy.


Each visitor's sessions, pages, goals and payments on one timeline, with first touch and lifetime revenue.
Payment providers
Eleven providers work out of the box. Paste the webhook URL OpenRev gives you and new payments, renewals and refunds start flowing in — each verified with the provider's signature and recorded exactly once.
Product names are trademarks of their respective owners and are used only to describe compatibility.
Get started
A setup wizard deploys OpenRev to your own infrastructure. No account to create, no vendor in the middle.
curl -fsSL https://raw.githubusercontent.com/CrowdLinker/OpenRev/main/install.sh | bashClones the repo, installs dependencies and runs the setup wizard. Uses Docker instead if Node.js 22.13+ isn't installed.
npm create openrev@latestSame wizard, started through npm. Requires Node.js 22.13 or newer.
Cloudflare, Docker or Node.js. The wizard asks a few questions and writes the config.
It provisions the database, sets a secret and deploys. Migrations run on start.
Create a site in the dashboard and paste one <script> tag into your website.
Paste the webhook URL into Stripe, Lemon Squeezy, Paddle or any other provider.
Deploy anywhere
The same server code runs on Cloudflare Workers and on Node.js. The same SQL schema runs on Cloudflare D1, SQLite and PostgreSQL. Pick what fits; move later if you outgrow it.
Workers + D1 + Cron Triggers. The setup wizard logs you in with Wrangler, creates the database and deploys.
Cloudflare free plan: 100k requests/day
One docker compose stack with a persistent volume. Bring PostgreSQL or use the bundled SQLite file.
Runs on a small VPS
A single Node process with a SQLite file or a postgres:// URL. No native dependencies to compile.
Anywhere Node runs
fly.toml, render.yaml and railway.json ship in the repo, so the platform builds the Docker image for you.
Use your own account
For developers and agents
The REST API covers analytics, visitors, payments, goals, identify and funnels, with an OpenAPI spec. The MCP server gives AI assistants the same view — scoped to the sites an API key can access.
<script
defer
data-website-id="YOUR_WEBSITE_ID"
data-domain="your-site.com"
src="https://analytics.your-site.com/js/script.js"
></script>One tag. SPA navigation, outbound clicks and checkout links are handled automatically.
<script>
openrev("signup", { plan: "pro" });
openrev("identify", { user_id: "usr_123", email: "jane@example.com" });
</script>
<button data-openrev-goal="start_trial" data-openrev-goal-plan="pro">
Start free trial
</button>Track goals from JavaScript or straight from HTML attributes, with custom properties.
curl https://analytics.your-site.com/api/v1/payments \
-H "Authorization: Bearer $OPENREV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": 49.00,
"currency": "USD",
"transaction_id": "inv_1042",
"openrev_visitor_id": "<from the openrev_visitor_id cookie>",
"email": "jane@example.com"
}'Record sales from your backend — attributed like webhook payments.
{
"mcpServers": {
"openrev": {
"type": "http",
"url": "https://analytics.your-site.com/mcp",
"headers": { "Authorization": "Bearer YOUR_API_TOKEN" }
}
}
}Point any MCP client at /mcp and ask about traffic, revenue, funnels and visitors in plain language.
Compare
Hosted revenue analytics tools are great products. OpenRev gives you the same idea as software you run and control.
| Feature | OpenRev | DataFast | DataBull |
|---|---|---|---|
| Pricing | Free | Subscription, from $9/month | One-time license |
| Open source | MIT | No | No |
| Self-hosted | Cloudflare, Docker, Node.js | No | Cloudflare |
| Where your data lives | Your D1, SQLite or PostgreSQL | DataFast's service | Your Cloudflare D1 |
| Revenue attribution | |||
| Payment providers | 11 built in + custom webhook + API | Stripe, Lemon Squeezy, Polar, Paddle, Shopify & more + API | Stripe, Polar, Dodo |
| Goals, funnels & journeys | |||
| Alerts | Slack, Discord, Telegram, email, webhooks | Telegram | |
| API & MCP server | Read-only |
Based on each product's public website in October 2026. DataFast and DataBull are trademarks of their respective owners; OpenRev is not affiliated with them.
Compare with 7 more toolsPricing
OpenRev is MIT-licensed open source. No plans, no seat limits, no event caps — you only pay for the infrastructure you run it on.
Cloudflare
$0
Workers + D1 free plan
within Cloudflare's free-plan limits
Docker / Node.js
Your VPS
A small VPS you already have
SQLite or PostgreSQL
Everything is included
Want to support the project? Star it on GitHub.
FAQ
Something else? The documentation covers setup, tracking, revenue and the API in depth.
OpenRev is free, open-source (MIT) web analytics that shows which traffic sources, campaigns, pages and countries bring in revenue, not just visits. It connects payment providers such as Stripe, Lemon Squeezy, Paddle and Shopify to visitor sessions, and you host it yourself on Cloudflare Workers, Docker or Node.js, so the data stays in your own database.
Yes. OpenRev is open source under the MIT license. There is no paid tier, seat limit or usage cap. You only pay for the infrastructure you run it on, and small sites fit within Cloudflare's free plan.
The tracking script gives each visitor an ID and records their sessions with source, campaign, country and device. When your payment provider sends a webhook, OpenRev matches the payment to the visitor (from checkout metadata, the success page, the customer's email or earlier payments) and credits the session that brought them in. You can switch between last non-direct, last touch and first touch at any time, and past payments are re-attributed instantly.
Stripe, Lemon Squeezy, Paddle, Polar, Dodo Payments, Creem, Shopify, WooCommerce, Gumroad, Paystack and Razorpay are built in. Anything else can post payments through the configurable custom webhook or the Payments API. Every webhook is signature-verified and processed idempotently.
By default the script stores a first-party visitor ID. Turn on cookieless mode per site and visitors are counted with a daily-rotating hash instead, so nothing is stored on the device. Because you self-host, the data never leaves infrastructure you control. Whether you need a consent banner depends on your jurisdiction and setup — the privacy guide walks through the options.
Some blockers block known analytics domains. The docs include proxy recipes for Next.js, Vercel, Netlify, Cloudflare Workers, Nginx, Caddy, Express, Laravel, Django, Astro and more, so the script and events are served from your own domain. OpenRev keeps the visitor's real IP and location when requests are proxied.
The tracker understands DataFast's window.datafast() calls, data-fast-goal attributes and datafast_visitor_id metadata, and the REST API includes DataFast-compatible endpoints, so most sites only swap the script tag. There is a step-by-step migration guide.
Cloudflare D1, SQLite (via Node's built-in driver, no native modules) or PostgreSQL. The same schema runs on all three and migrations are applied automatically on startup.
Yes. OpenRev ships a REST API with an OpenAPI spec and a built-in MCP server at /mcp, so assistants that speak MCP can query traffic, revenue, funnels and visitors with an API token you create.
Run npm run update in your OpenRev folder. It pulls the latest code, reinstalls and redeploys to the target you picked during setup (on plain Node.js you restart the process afterwards). Database migrations run automatically on start.
Deploy OpenRev in minutes and find out which of your marketing actually pays.
curl -fsSL https://raw.githubusercontent.com/CrowdLinker/OpenRev/main/install.sh | bash