Website analytics.
Connected to revenue.
See which channels bring customers, where visitors drop off, and what leads to sales. Twelvebit brings traffic, conversion and revenue data together so you can make informed decisions.
14-day free trial · cancel any time · data stays in the EU
16 people are on Twelvebit Demo at the last update.
Revenue is up 923% on the 30 days before. Organic Social brought 28% of revenue from only 25% of visitors.
twelvebit is privacy-friendly web analytics with revenue attribution. A 5 KB script counts visits and goals. Payments from Stripe, Polar, Lemon Squeezy, Paddle or Dodo Payments are credited to the visit before the payment, so you see revenue by channel, campaign and page. Your coding agent sets it up with one prompt, and data is processed in the EU.
Customer testimonial
Website owners love Twelvebit
14-day free trial
After 2 days
“why didn’t you build this years ago?”
“already have actionable info so we’re making some changes to a few pages now. so much better than Google Analytics”
4 weeks later
“still loving it. Have been querying it a lot via Claude which works well. we've seen a measurable increase in revenue after making changes to pages + onboarding flow that it highlighted. have already been recommending Twelvebit to others.”
Revenue attribution
See which channel brings the money, not only the clicks.
Connect Stripe, Polar, Lemon Squeezy, Paddle or Dodo Payments. twelvebit joins each payment to the visit that started it, so revenue sits next to its source.
Organic Social brought 28% of revenue from only 25% of visitors.
Last-touch revenue: the visit before the payment · last 30 days · live demo
- Revenue
- $164,750
- New customers
- 4,761
- Average order
- $33.15
- Per visitor
- $4.05
How revenue attribution works →Stripe revenue attribution →Connect your payment provider →Guides for online stores →
Realtime
Watch people arrive.
See who’s ready to buy.
Live visitors, page changes and buying signals. See your site come to life, second by second.
| Visitor | Page now | Intent |
|---|---|---|
| silver-dolphin-4536Portugal · x.com | /pricing | |
| scarlet-otter-4792United States · google.com | /submit | |
| stormy-eagle-4024Germany · Direct | /tools |
Visitors, pages and buying signals · updates every 3 seconds
Page view Signup or goal Payment
Explore the Live demoFunnels
Find the step where people leave.
Plan funnels in analytics.yaml, or ask for any order of pages and goals. Bars use a true linear scale, so a small step looks small. twelvebit marks the step where the most people leave.
1 in 11 visitors becomes a customer. The biggest drop is between visited the site and viewed pricing: 18,484 people (45%) leave there.
- Visited the site40,682
- Viewed pricing22,198Biggest drop
- Signed up13,600
- Started checkout4,649
- Paid3,718
Email converts best. Organic Search sends the most visitors, and 9.49% of them pay.
Journeys
Follow one person from the first visit to the first payment.
Anonymous visitors get a friendly name like amber-fox. When they pay, twelvebit links the payment to every visit before it, across sources and days.
- Lifetime value
- $29
- Visits
- 5
- Days to pay
- 17
- First touch
- X · post about launch sites
- Last touch
- Direct
- Credited to
- Direct (last touch)
amber-fox found you on X, came back 4 times in 17 days, and paid $29 for Featured.
- Sep 2921:14 · X
- Landed on /blog/where-to-launch from a post on X
- Read for 3m 40s
- Oct 208:02 · Google
- Came back from a Google search
- Viewed /leaderboard and /pricing
- Oct 619:30 · Direct
- Viewed /submit for 2m
- Signed up · role: maker
- Oct 810:11 · Email
- Came back from the welcome email
- Submitted a tool · category: ai-coding
- Oct 1614:02 · Direct
- Started checkout · Featured, monthly
- Paid $29 · Stripe
Pricing
Start free. Pay for events, not seats.
Starter
$9/ month
or $90 a year
10k events a month · 1 site · 1 person
- 1 site, 1 person
- All dashboards: revenue, live, funnels, journeys
- Revenue attribution
- Agent setup, CLI, REST API and MCP server
- 3 years of data
Growth
For teams$19/ month
or $190 a year
10k events a month · 30 sites · multiple users
- Everything in Starter
- Up to 30 sites and multiple users
- Social mentions (X, Reddit, Hacker News)
- X link attribution
- 5+ years of data
Enterprise
Custom
A plan and a price that we set with you.
Unlimited events · unlimited sites · unlimited users
- Everything in Growth
- Unlimited events
- Unlimited sites
- Unlimited users
Every account starts with a 14-day free trial, with no card, for up to 500k events. When it ends, we suggest the plan that fits your traffic. Every plan includes the REST API, the CLI and the MCP server. An event is a page view or a custom goal. Over the limit, tracking goes on and the dashboard asks you to pick a larger plan. Prices in US dollars; Dodo Payments, our merchant of record, adds sales tax or VAT where it applies.
Ask and MCP
Ask in plain words. Get a sentence and a chart back.
Every answer names its date range and attribution model, and shows the query behind it. The same tools work in your coding agent through the MCP server.
Question: Which blog posts brought paying customers last month?
/blog/where-to-launch brought the most: 58 customers and $2,940. That is 25% of all revenue. The next post brought less than half of that.
Last-touch revenue · last month · 5 blog posts with at least one customer · example answer
Show the query
select landing_page, count(distinct customer_id) as customers, sum(amount) as revenue from payments join visitors using (visitor_id) where landing_page like '/blog/%' and paid_at between '2026-09-17' and '2026-10-16' group by 1 order by revenue desc limit 5
get_overviewVisitors, revenue, customers and conversion, with the previous periodget_revenueRevenue by channel and plan, and recent payments with their credited channelget_breakdownTop channels, pages, countries or devices, with attributed revenueget_funnelCounts per step, conversion by channel and days to convertget_journeyOne person's visits, events and paymentsget_realtimeVisitors online now and visitors per minuteget_install_statusWhich planned events have arrivedupdate_tracking_planValidate and save a new analytics.yaml
claude mcp add \ --transport http twelvebit \ https://twelvebit.app/api/mcp
For CI or a server without a browser, send an API key instead:
claude mcp add \ --transport http twelvebit \ https://twelvebit.app/api/mcp \ --header "Authorization: Bearer $TWELVEBIT_API_KEY"
Agent setup
One prompt. Your agent does the setup.
Paste the prompt into Claude Code, Codex or Cursor. The agent adds the tracker, writes your tracking plan, connects payments and checks that the first events arrive. You review the diff.
Prompt: Set up twelvebit analytics in this project for demo.twelvebit.app. [Pasted text +12 lines]
Read (package.json, app/layout.tsx)
Next.js 16, App Router, Stripe Checkout
Update (app/layout.tsx)
+4 lines · tracking script in <head>
Write (analytics.yaml)
+28 lines · 4 events, 1 funnel
Write (lib/track.ts)
+22 lines · typed helpers
Update (app/api/checkout/route.ts)
+3 lines · visitor ID in checkout metadata
Bash (curl -X PUT …/api/v1/tracking-plan)
200 · plan saved, 4 events added
Bash (claude mcp add --transport http twelvebit …/api/mcp)
MCP server connected
Bash (curl …/api/v1/install-check)
4 events received in the last minute
Done. I added 4 events (signup, submit_tool, bump, checkout) and passed the visitor ID to Stripe Checkout, so payments are attributed. Review the diff before you merge.
- Site addeddemo.twelvebit.app
- First page view14:02:07
- Tracking plan4 events
- First goal: signup14:02:31
- Revenue: first payment$29 · test mode
# analytics.yaml · written by your agent, reviewed by you version: 1 project: demo.twelvebit.app integrations: [stripe] events: signup: description: A visitor creates an account props: role: { type: string, enum: [maker, buyer] } submit_tool: description: A maker submits a tool to the directory checkout: description: A maker opens the checkout for a paid plan props: plan: { type: string } value: { type: number } bump: description: A signed-in user bumps a listing props: tool: { type: string } dashboards: funnels: - name: Visit to paid listing steps: ["page:/pricing", signup, checkout, payment]
npx -y twelvebit@latest initGoals and tracking plan
Your tracking plan lives in your repo.
analytics.yaml lists every event and its props. It goes through code review like the rest of your app, and the dashboard shows the health of each event.
<!-- in <head>, on every page --> <script defer data-website-id="tb_7Kq2xW9fLm3Rp8Vd4N" data-domain="demo.twelvebit.app" src="https://twelvebit.app/js/script.js"></script> // a goal, anywhere in your code window.twelvebit?.("signup", { role: "maker" }); <!-- or with no code at all --> <button data-tb-goal="signup">Create account</button>
| Event | 30 days | Status |
|---|---|---|
| pageviewautomatic | 321,281 | ✓ Receiving |
| signup65% of visitors | 26,307 | ✓ Receiving |
| submit_tool30% of visitors | 12,310 | ✓ Receiving |
| checkout16% of visitors | 6,542 | ✓ Receiving |
| paymentadded for each Stripe payment | 4,929 | ✓ Receiving |
Privacy
Useful numbers, without third-party cookies.
twelvebit counts visits and payments, not people across the web. You decide if the tracker uses cookies at all.
No third-party cookies
The tracker sets two first-party cookies on your own domain: _tb_vid for one year and _tb_sid for 30 minutes. Nothing is shared with ad networks.
Cookieless mode
Turn it on and the tracker sets no cookies at all. The visitor ID becomes a hash that changes every day. You keep page views, sources, goals and revenue.
IP addresses are not stored
twelvebit uses the IP address only while it handles a request, for example to apply your exclusion rules. It never writes the address to the database.
Data stays in the EU
The app and database run in Vienna, Austria. Your analytics data is processed in the EU.
Bots and AI crawlers
See which AI models read your site, and why.
Bots stay out of your visitor numbers. twelvebit sorts AI crawlers by what they do: answer a question now, index the page for search, or collect it for training.
AI answers
90An assistant fetched a page to answer a person's question right now.
- ChatGPT-User72
- Claude-User18
Search indexing
172A search engine added the page to its index. Here: the AI search engines of OpenAI, Perplexity and Anthropic.
- Googlebot101
- PerplexityBot37
- Bingbot34
AI training
80A crawler collected the page as training data.
- GPTBot47
- ClaudeBot24
- CCBot9
Works with
Works with the stack you already have.
Sites and frameworks
- Next.js
- React
- Astro
- Vue
- Svelte
- WordPress
- Shopify
- WooCommerce
- Webflow
- Framer
- Plain HTML
Payments
- Stripe
- Polar
- Lemon Squeezy
- Paddle
- Dodo Payments
- Shopify
- WooCommerce
Coding agents
- Claude Code
- Codex
- Cursor
- Any agent with a terminal
Questions
Questions people ask before they start.
What does the setup prompt do?
analytics.yaml, passes the visitor ID to your checkout and checks that events arrive. You review the diff like any other change. See every step.Do I need a coding agent?
Which payment providers work for revenue attribution?
Does twelvebit use cookies?
_tb_vid (one year) and _tb_sid (30 minutes). There are no third-party cookies. If you turn on cookieless mode, the tracker sets no cookies at all.Where is my data stored?
Is there a free trial?
What counts as an event?
Can my agent read the numbers later?
Will the script slow down my site?
Paste one prompt. Watch the first events arrive.
Start free. Your agent does the setup, and you see revenue next to the traffic that brought it.
14-day free trial · cancel any time