Skip to content
Open sourceMIT licensed · self-hosted · free

See which marketing makes you money.

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.

  • Free forever, MIT
  • 3.9 kB gzipped script
  • 11 payment providers built in
  • Your data, your database
The OpenRev dashboard showing visitors, revenue, conversion rate and revenue per visitor over 30 days, with a combined visitors and revenue chart and revenue by channel and page.

Screenshots show demo data for a fictional product.

Works with

  • Stripe
  • Lemon Squeezy
  • Paddle
  • Polar
  • Dodo Payments
  • Creem
  • Shopify
  • WooCommerce
  • Gumroad
  • Paystack
  • Razorpay
  • Cloudflare Workers
  • Cloudflare D1
  • Docker
  • Node.js
  • PostgreSQL
  • SQLite
  • Next.js
  • WordPress
  • Webflow
  • Framer

How it works

From first click to paid, on one timeline

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.

  1. 1

    A visitor arrives

    The script records the session's source, campaign, landing page, country and device — and gives the visitor an ID.

    Source
    ChatGPT
    Channel
    AI
    Landing
    /pricing
  2. 2

    They browse and convert

    Pageviews, goals and engagement time build a journey across every visit, so you see the path, not just the last click.

    Pages
    4
    Goal
    signup
    Time
    6m 12s
  3. 3

    They pay

    Checkout links are tagged automatically. Your provider's webhook reaches OpenRev, signature-verified.

    Provider
    Stripe
    Amount
    $49.00
    Type
    New
  4. 4

    Revenue is attributed

    The payment is matched to the visitor and credited to the session that brought them in.

    Credited
    AI · ChatGPT
    Model
    Last non-direct
    Refunds
    Linked

Change the model, keep the history

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.

How payments find their visitor

  • Visitor ID passed in checkout metadata (added to Stripe, Lemon Squeezy and Gumroad links for you)
  • The checkout success page the visitor lands on
  • The customer's email, if you identify signed-in users
  • Earlier payments from the same customer — renewals and refunds follow the original
Read the attribution docs

Features

Analytics that answer in dollars

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.

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.

Sources breakdown by channel with visitors and revenue for Direct, Organic Search, Organic Social, AI, Referral, Paid Search, Email, Paid Social and Affiliate.

Down to the city

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

World map of visitors shaded by country.

Realtime, with buyer intent

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.

Realtime view with a 3D globe of live visitors, a list of live visitors with buyer-intent scores and an activity feed of payments and pageviews.

The whole customer journey

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.

Visitor profile showing lifetime revenue, first touch, and a journey of visits with pages, goals and payments.

Funnels that end in revenue

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

Funnel from homepage to pricing to signed up to paid, with conversion and revenue per step.

Goals and your #1 KPI

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

Goals table with visitors and revenue for each goal.

Lifetime value by first touch

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

Customer lifetime value table by first-touch referrer with customers, LTV and average LTV.
  • An AI channel

    Visits from ChatGPT, Perplexity, Claude, Gemini, Copilot and more get their own channel — from the referrer or utm_source.

  • Alerts where you work

    Sales, refunds, goals, traffic spikes and daily or weekly digests to Slack, Discord, Telegram, email or any webhook.

  • Teams and share links

    Invite teammates with roles. Share a public dashboard link that never exposes personal data.

  • REST API and MCP server

    Website keys, account tokens and an OpenAPI spec. AI assistants can query your numbers through the built-in MCP server.

  • DataFast-compatible

    window.datafast(), data-fast-goal and datafast_visitor_id keep working, and the API has compatible endpoints.

  • A 3.9 kB script

    SPA and hash routing, engagement time, outbound clicks and scroll goals in a script smaller than most favicons.

  • Cookieless mode

    Switch a site to a daily-rotating hash so nothing is stored on the visitor's device.

  • Ad-blocker resilient

    Proxy recipes for Next.js, Vercel, Netlify, Cloudflare, Nginx and more — with the visitor's real location kept.

  • Cross-domain tracking

    Follow visitors across your marketing site, app and checkout domains, and across subdomains.

  • Multi-currency revenue

    Payments in any currency are converted to your site's currency. New, renewal and refund revenue are kept apart.

  • Filter everything

    Filter by any dimension, compare periods, pin date ranges and annotate the chart with notes.

  • Exclusions and export

    Bot filtering, IP, country and hostname exclusions, and CSV export of your data.

Product tour

Built for people who sell things online

Founders, marketers and indie hackers who want to know what to do more of — without stitching together three tools.

OpenRev overview dashboard with key metrics and a visitors and revenue chart.

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

Payment providers

Plug in whatever takes your money

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.

  • Import past Stripe and Lemon Squeezy payments
  • Custom webhook adapter maps any provider's JSON with field paths
  • Payments API for server-side or offline sales
  • Add a provider in one file — the adapter interface is documented
Revenue setup guides
  • StripeWebhooks + history import
  • Lemon SqueezyWebhooks + history import
  • PaddleWebhooks
  • PolarWebhooks
  • Dodo PaymentsWebhooks
  • CreemWebhooks
  • ShopifyOrder webhooks
  • WooCommerceOrder webhooks
  • GumroadSale pings
  • PaystackWebhooks
  • RazorpayWebhooks
  • Custom webhookMap any JSON payload

Product names are trademarks of their respective owners and are used only to describe compatibility.

Get started

From zero to revenue analytics in one command

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 | bash

Clones the repo, installs dependencies and runs the setup wizard. Uses Docker instead if Node.js 22.13+ isn't installed.

  1. 1

    Pick a target

    Cloudflare, Docker or Node.js. The wizard asks a few questions and writes the config.

  2. 2

    Deploy

    It provisions the database, sets a secret and deploys. Migrations run on start.

  3. 3

    Add the script

    Create a site in the dashboard and paste one <script> tag into your website.

  4. 4

    Connect payments

    Paste the webhook URL into Stripe, Lemon Squeezy, Paddle or any other provider.

Deploy anywhere

Runs where you already run things

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.

Recommended

Cloudflare

Workers + D1 + Cron Triggers. The setup wizard logs you in with Wrangler, creates the database and deploys.

Cloudflare free plan: 100k requests/day

SQLite or PostgreSQL

Docker

One docker compose stack with a persistent volume. Bring PostgreSQL or use the bundled SQLite file.

Runs on a small VPS

Node 22.13+

Node.js

A single Node process with a SQLite file or a postgres:// URL. No native dependencies to compile.

Anywhere Node runs

Configs included

Fly.io, Render & Railway

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

An API for everything you see

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.

Tracking script
3.9 kB gzipped
Runtime
Hono + TypeScript
Databases
3 D1 · SQLite · Postgres
License
MIT
<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.

Compare

The revenue analytics you'd rent — owned

Hosted revenue analytics tools are great products. OpenRev gives you the same idea as software you run and control.

Feature comparison of OpenRev, DataFast and DataBull
FeatureOpenRevDataFastDataBull
PricingFreeSubscription, from $9/monthOne-time license
Open sourceMITNoNo
Self-hostedCloudflare, Docker, Node.jsNoCloudflare
Where your data livesYour D1, SQLite or PostgreSQLDataFast's serviceYour Cloudflare D1
Revenue attribution
Payment providers11 built in + custom webhook + APIStripe, Lemon Squeezy, Polar, Paddle, Shopify & more + APIStripe, Polar, Dodo
Goals, funnels & journeys
AlertsSlack, Discord, Telegram, email, webhooksEmailTelegram
API & MCP serverRead-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 tools

Pricing

$0. Forever. You own it.

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

  • Unlimited sites, visitors and team members
  • Every feature — revenue, realtime, funnels, journeys
  • All 11 payment providers, custom webhooks and the API
  • MCP server for AI assistants
  • Alerts to Slack, Discord, Telegram, email and webhooks
  • Your data in your own database, exportable any time

Want to support the project? Star it on GitHub.

FAQ

Questions, answered

Something else? The documentation covers setup, tracking, revenue and the API in depth.

What is OpenRev?

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.

Is OpenRev really free?

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.

How does revenue attribution work?

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.

Which payment providers are supported?

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.

Does it use cookies? What about privacy laws?

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.

Will ad blockers block it?

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.

I use DataFast today. How hard is it to switch?

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.

Which databases can I use?

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.

Can AI agents use my analytics?

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.

How do I update?

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.

Own your revenue analytics

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