new-term-radar
신규 AI 용어를 매일 추적, X·Hugging Face·GitHub 등에서 모델·제품·레포 이름을 빠르게 수집
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Open-source, revenue-first web analytics. See which channels, pages and campaigns make you money, on Cloudflare, Docker or Node.js.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
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 |