new-term-radar
Daily radar for new AI terms: names of new models, products and repos, caught on X, Hugging Face, GitHub and sitemaps before keyword tools list them.
Free, open-source web analytics that ties every visitor, channel and campaign to revenue. Self-host on Cloudflare, Docker or Node.js in one command.
MarketingTypeScript · JavaScriptGitHub @CrowdLinkerOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Open-source, revenue-first web analytics. See which channels, pages and campaigns make you money, on Cloudflare, Docker or Node.js.
Taken from the repository README
Loading the full README.
Read the full README ↗See which channels, pages and campaigns actually make you money, on infrastructure you own.
Quick start · Website · Product tour · Payment providers · API & MCP · Docs
Most web analytics stop at traffic. OpenRev links every payment to the visit that led to it, so revenue, conversion rate and revenue per visitor sit next to every source, campaign, page, country and goal in your dashboard.
It is a free, MIT-licensed alternative to DataFast and DataBull that you host yourself: on Cloudflare's free tier, in a Docker container, or on any Node.js server. Your visitors and payments stay in your own database.
curl -fsSL https://raw.githubusercontent.com/CrowdLinker/OpenRev/main/install.sh | bash
The installer downloads OpenRev and asks where to run it:
| Target | What happens | Cost |
|---|---|---|
| Cloudflare (recommended) | Logs you in with Wrangler, creates the D1 database, deploys the Worker and stores a secret. | Free tier: 100k requests/day, 500 MB database |
| Docker | Writes .env and starts docker compose with SQLite or a bundled PostgreSQL. | Any $5 VPS |
| Node.js | Builds and runs the server with a SQLite file or a postgres:// URL. | Any Node.js 22 host |
Prefer npm? npm create openrev@latest does the same thing. Already cloned the repo? Run npm install && npm run setup.
docker run -d --name openrev -p 3000:3000 -v openrev-data:/data \
-e PUBLIC_URL=https://analytics.example.com ghcr.io/crowdlinker/openrev:latest
Open your instance, create the admin account, add your website and paste the snippet into your site's <head>:
<script
defer
data-website-id="YOUR_WEBSITE_ID"
data-domain="example.com"
src="https://analytics.example.com/js/script.js"
></script>
Then connect your payment provider under Settings → Revenue. That's it: traffic shows up right away and every new payment is attributed. Guides for Next.js, WordPress, Shopify, Webflow, Framer, GTM and more.
Revenue, payments, customers, conversion rate and revenue per visitor for every channel, referrer, campaign, page, country, device and goal. Split new revenue from renewals and refunds, pick first-touch, last-touch or last-non-direct attribution, and mix currencies freely: everything converts to your website's currency.
Channels are classified for you (Direct, Organic and Paid Search, Organic and Paid Social, AI, Email, Referral, Affiliate, Display), alongside referrers, UTM parameters, ?ref= links, pages, entry and exit pages, outbound links, countries, regions, cities, browsers and devices. Filter the whole dashboard by any of them.
A live globe, the visitors on your site right now with a buyer-intent score, and a feed of pageviews, goals and payments as they happen.
Track goals from JavaScript, HTML attributes, scroll-into-view or your server, with custom properties, and promote one to your #1 KPI. Funnels chain pages, goals and payments and show the drop-off and revenue at each step.
Every session, page, goal and payment of a visitor in one timeline. Call openrev("identify", { user_id, email, name }) and visitors are merged across devices.
Lifetime value and repeat-purchase rate by first-touch source, so you can tell which channels bring customers who stay.
npx openrev-cli stats, top pages, live, mrr and more in your terminal, with --json for scripts (guide).| Provider | Events | History import |
|---|---|---|
| Stripe | Checkout, Payment Links, subscriptions, PaymentIntents, refunds | ✅ |
| Lemon Squeezy | Orders, subscription renewals, refunds | ✅ |
| Polar | Orders, renewals, refunds | ✅ (beta) |
| Paddle Billing | Transactions, renewals, refunds and chargebacks | ✅ (beta) |
| Shopify | Paid orders, refunds | |
| Dodo Payments | Payments, renewals, refunds | ✅ (beta) |
| Creem | Checkouts, subscription payments, refunds | |
| Gumroad | Sales, memberships, refunds | |
| Paystack | Charges, refunds | ✅ (beta) |
| Razorpay |
Connect several providers to the same website. Webhook retries are recorded once, refunds inherit the attribution of the payment they refund, and payments that can't be linked to a visit still count toward your totals as Unattributed.
flowchart LR
A["Visitor lands on your site"] --> B["Tracker sets the<br/>openrev_visitor_id cookie"]
B --> C["Checkout carries<br/>the visitor id"]
C --> D["Payment provider"]
D -- "signed webhook" --> E["OpenRev verifies<br/>the signature"]
E --> F["Payment linked to the<br/>visitor's sessions"]
F --> G["Revenue by source, campaign,<br/>page, country and goal"]
Pass the visitor id when you create a checkout. With Stripe:
const session = await stripe.checkout.sessions.create({
// ...
metadata: {
openrev_visitor_id: cookies.get("openrev_visitor_id"),
openrev_session_id: cookies.get("openrev_session_id"),
},
});
No access to your checkout code? The tracker can tag Stripe Payment Links, Lemon Squeezy and Gumroad links and Shopify carts for you, detect the checkout success page, or match payments by email after openrev("identify"). Read how a payment finds its visitor.
REST API. Query analytics and send payments, goals and identities from your backend with a website key or an account token. An OpenAPI 3.1 spec is served by every instance.
curl "https://analytics.example.com/api/v1/analytics/breakdowns/source?period=30d&sort=revenue" \
-H "Authorization: Bearer or_xxxxxxxxxxxxxxxxxxxxxxxx"
MCP server. Ask Claude, Cursor or any MCP client "Which channels drove the most revenue last month?" or "Show me the journey of my last 5 customers".
claude mcp add --transport http openrev https://analytics.example.com/mcp \
--header "Authorization: Bearer or_xxx"
Tracker API. Goals, properties and identity from the browser:
openrev("signup", { plan: "pro" }); // custom goal
openrev("identify", { user_id: "u_42", email: "[email protected]" });
<button data-openrev-goal="start_trial" data-openrev-goal-plan="pro">Start trial</button>
See the API reference, the MCP tools and the script reference.
| Database | Best for | Guide | |
|---|---|---|---|
| Cloudflare Workers | D1 | Free hosting with nothing to maintain | cloudflare.md |
| Docker | SQLite or PostgreSQL | A VPS or your own servers | docker.md |
| Node.js | SQLite or PostgreSQL | Any Node.js 22 host | node.md |
| Render, Railway, Fly.io | SQLite on a volume, or PostgreSQL | Managed containers | platforms.md |
Migrations run on start-up, and IP geolocation works out of the box (from Cloudflare, Vercel or CloudFront headers, or the free DB-IP Lite database). Everything else is in the configuration reference and the upgrade and backup guide.
TRUST_PROXY.| OpenRev | DataFast | DataBull | |
|---|---|---|---|
| Pricing | Free and open source (MIT) | Subscription | One-time license |
| Self-hosted | ✅ Cloudflare, Docker, Node.js | — | ✅ 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 and more + API | Stripe, Polar, Dodo |
| Goals, funnels and journeys | ✅ | ✅ | ✅ |
| Alerts | Slack, Discord, Telegram, email, webhooks | Telegram | |
| API and MCP server | ✅ | ✅ | Read-only |
Based on each product's public website in October 2026. The full comparison covers Plausible, Fathom, Umami, PostHog, Google Analytics and more, with sources. Moving over? Follow the DataFast migration guide.
flowchart LR
T["Tracker<br/>(3.9 kB, your site)"] -- "events" --> S
P["Payment providers"] -- "webhooks" --> S
S["OpenRev server<br/>Hono + TypeScript"] --> DB[("D1, SQLite<br/>or PostgreSQL")]
S --> UI["React dashboard"]
S --> API["REST API + MCP"]
S --> AL["Alerts and digests"]
One TypeScript codebase built on Hono runs unchanged on Cloudflare Workers (src/runtime/cloudflare.ts) and Node.js (src/runtime/node.ts), with one portable SQL schema for D1, SQLite (node:sqlite, no native dependencies) and PostgreSQL.
src/
tracker/ browser tracking script (no dependencies)
server/
db/ D1, SQLite and Postgres adapters + migrations
lib/ UA parsing, bot detection, channel classification, timezone and currency math
services/ ingestion, stats engine, payments and attribution, alerts, scheduler
providers/ payment provider adapters (Stripe, Paddle, Polar, ...)
routes/ dashboard API, public REST API v1, MCP server, webhooks
runtime/ Cloudflare Worker and Node.js entry points
dashboard/ React + Tailwind dashboard
npm install
npm run dev # dashboard on http://localhost:5173, API on :3000 (SQLite in ./data)
npm test # vitest: SQLite + PGlite (Postgres), plus real Postgres via TEST_DATABASE_URL
npm run typecheck
npm run build # dist/public (dashboard + tracker) and dist/server/node.js
npm run dev:cf # run the Cloudflare Worker locally with wrangler
Contributions are welcome: see CONTRIBUTING.md. Adding a payment provider takes a single file (guide).
Have an idea? Open an issue.
MIT © Crowdlinker. IP geolocation by DB-IP (CC BY 4.0).
OpenRev is an independent open-source project and is not affiliated with DataFast or DataBull.
| Payments, subscriptions, invoices, refunds |
| WooCommerce | Orders, refunds |
| Anything else | Custom webhook: map JSON paths and a signature for any provider |
| Your backend | POST /api/v1/payments |