Skip to content
What's new · 14-day free trial

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

Demo data
16 people on Twelvebit Demo at the last updatePreview

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.

Visitors40,682▲ 268%
Revenue$164,750▲ 923%
Revenue per visitor$4.05▲ 178%
Signup rate42%▲ 19.0 pt
Visitors and revenueVisitorsRevenue
02,5005,000$0$7,500$15K6 Oct10 Oct14 Oct18 Oct22 Oct26 Oct30 Oct3 Nov
Revenue per visitorby channel
Organic Search$2.91
Organic Social$3.09
Direct$2.89
AI Assistants$2.11
Email$2.61
Paid$2.26

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

RossDirector, PUA Labs (opens in a new tab)Ecommerce, Beauty Products

  1. 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”

  2. 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.

From channel to planLifetimeFeaturedBoost

Organic Social brought 28% of revenue from only 25% of visitors.

Organic Social → Lifetime: $25,330Organic Social → Featured: $14,123Organic Social → Boost: $5,895Organic Search → Lifetime: $23,095Organic Search → Featured: $14,297Organic Search → Boost: $6,156Direct → Lifetime: $19,519Direct → Featured: $11,513Direct → Boost: $4,968Email → Lifetime: $8,195Email → Featured: $5,133Email → Boost: $2,016AI Assistants → Lifetime: $6,854AI Assistants → Featured: $5,133AI Assistants → Boost: $2,367Other → Lifetime: $5,662Other → Featured: $3,045Other → Boost: $1,449Organic Social $45,348Organic Search $43,548Direct $36,000Email $15,344AI Assistants $14,354Other $10,156Lifetime$88,655 · 54%Featured$53,244 · 32%Boost$22,851 · 14%Organic Social$45,348Organic Search$43,548Direct$36,000Email$15,344AI Assistants$14,354Other$10,156Lifetime$88,655 · 54%Featured$53,244 · 32%Boost$22,851 · 14%

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
Revenue per visitorby channel
Organic Search$2.91
Organic Social$3.09
Direct$2.89
AI Assistants$2.11
Email$2.61
Paid$2.26

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.

Live preview
Visitors per minute6 this minute
29 min ago: 11 visitors28 min ago: 14 visitors27 min ago: 12 visitors26 min ago: 9 visitors25 min ago: 16 visitors24 min ago: 13 visitors23 min ago: 11 visitors22 min ago: 18 visitors21 min ago: 15 visitors20 min ago: 12 visitors19 min ago: 14 visitors18 min ago: 17 visitors17 min ago: 13 visitors16 min ago: 10 visitors15 min ago: 12 visitors14 min ago: 15 visitors13 min ago: 19 visitors12 min ago: 14 visitors11 min ago: 11 visitors10 min ago: 13 visitors9 min ago: 16 visitors8 min ago: 12 visitors7 min ago: 10 visitors6 min ago: 15 visitors5 min ago: 13 visitors4 min ago: 18 visitors3 min ago: 14 visitors2 min ago: 12 visitors1 min ago: 16 visitorsThis minute: 6 visitors
People on the site1 ready to buy
Recent visitors and their page changes. Showing 3 of 16.
VisitorPage nowIntent
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 demo

Funnels

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.

Visit to paid5 steps · last 30 days · live demo

1 in 11 visitors becomes a customer. The biggest drop is between visited the site and viewed pricing: 18,484 people (45%) leave there.

  1. Visited the site40,682100% start100% of visitors
  2. Viewed pricing22,19855% of previous step55% of visitorsBiggest drop
  3. Signed up13,60061% of previous step33% of visitors
  4. Started checkout4,64934% of previous step11% of visitors
  5. Paid3,71880% of previous step9.1% of visitors
Visit to paid, by channelconversion
Email9.97%
Direct9.53%
Organic Search9.49%
Organic Social9.38%
AI Assistants8.72%
Paid7.04%

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.

amber-fox-4821Lisbon, Portugal · Mac · Safari
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.

  1. Sep 2921:14 · X
    • Landed on /blog/where-to-launch from a post on X
    • Read for 3m 40s
  2. Oct 208:02 · Google
    • Came back from a Google search
    • Viewed /leaderboard and /pricing
  3. Oct 619:30 · Direct
    • Viewed /submit for 2m
    • Signed up · role: maker
  4. Oct 810:11 · Email
    • Came back from the welcome email
    • Submitted a tool · category: ai-coding
  5. Oct 1614:02 · Direct
    • Started checkout · Featured, monthly
    • Paid $29 · Stripe

Pricing

Start free. Pay for events, not seats.

10k events a month

An event is a page view or a custom goal. Pings (time on page), bot and AI crawler hits, identify calls and outbound links are free. Over the limit, tracking goes on.

  • 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
    Start the 14-day trial
  • 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
    Start the 14-day trial
  • 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
    Ask for a custom plan

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.

Compare the plans in detail →

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.

/blog/where-to-launch$2,940
/blog/ai-coding-tools$1,320
/blog/ph-checklist$610
/blog/directory-seo$420
/blog/bump-guide$160

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
Why did revenue jump on Oct 8?Which country pays most per visitor?Compare X and Reddit buyers
The same answers in your agentMCP tools
  • get_overviewVisitors, revenue, customers and conversion, with the previous period
  • get_revenueRevenue by channel and plan, and recent payments with their credited channel
  • get_breakdownTop channels, pages, countries or devices, with attributed revenue
  • get_funnelCounts per step, conversion by channel and days to convert
  • get_journeyOne person's visits, events and payments
  • get_realtimeVisitors online now and visitors per minute
  • get_install_statusWhich planned events have arrived
  • update_tracking_planValidate and save a new analytics.yaml
Claude Code · OAuth
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 Code · key, for CI
claude mcp add \
  --transport http twelvebit \
  https://twelvebit.app/api/mcp \
  --header "Authorization: Bearer $TWELVEBIT_API_KEY"

See the analytics MCP server and a worked example →

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.

Live check5 of 5
  • Site addeddemo.twelvebit.app
  • First page view14:02:07
  • Tracking plan4 events
  • First goal: signup14:02:31
  • Revenue: first payment$29 · test mode
Event streamdemo.twelvebit.app
payment$29.00 · Stripe test mode
checkoutplan=featured value=29
signuprole=maker source=submit
pageview/signup · Lisbon
pageview/leaderboard · Lisbon
pageview/ · Lisbon
analytics.yamlyour tracking plan, in your repo
# 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]
Prefer the terminal?same setup, one command
npx -y twelvebit@latest init

How the agent setup works, step by step →

Goals 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.

Track a goalone line, or one attribute
<!-- 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>
Eventslast 30 days · live demo
Events from analytics.yaml with their health in the last 30 days. Live demo.
Event30 daysStatus
pageviewautomatic321,281✓ Receiving
signup65% of visitors26,307✓ Receiving
submit_tool30% of visitors12,310✓ Receiving
checkout16% of visitors6,542✓ Receiving
paymentadded for each Stripe payment4,929✓ Receiving

Track goals and custom events →

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.

Cookies and cookieless mode →Read the privacy policy →

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 crawler requestslast 30 days · live demo

AI answers

90

An assistant fetched a page to answer a person's question right now.

  • ChatGPT-User72
  • Claude-User18

26% of AI requests

Search indexing

172

A search engine added the page to its index. Here: the AI search engines of OpenAI, Perplexity and Anthropic.

  • Googlebot101
  • PerplexityBot37
  • Bingbot34

50% of AI requests

AI training

80

A crawler collected the page as training data.

  • GPTBot47
  • ClaudeBot24
  • CCBot9

23% of AI requests

Count AI crawlers on your site →

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?
You paste one prompt into Claude Code, Codex or Cursor. The agent adds the tracking script, tracks the 3 to 8 actions that matter most, writes the tracking plan to 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?
No. You can paste the script tag into your site yourself, or run the CLI. The agent only saves you the work of finding the right files and naming the events.
Which payment providers work for revenue attribution?
Stripe, Polar, Lemon Squeezy, Paddle and Dodo Payments. The visitor ID goes into the checkout metadata, so each payment joins the visit that started it.
Does twelvebit use cookies?
The tracker sets two first-party cookies on your domain: _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?
In the EU. The app and database run in Vienna, Austria. twelvebit does not store IP addresses.
Is there a free trial?
Yes. 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. You add a card only when you pick a plan.
What counts as an event?
A page view or a custom goal, such as signup or purchase. Plans differ by the number of events a month, sites and people.
Can my agent read the numbers later?
Yes. twelvebit has an MCP server and a REST API. Your agent can ask for revenue by channel, a funnel or one visitor's journey, and get structured data back.
Will the script slow down my site?
The script is about 5 KB gzipped and loads with defer, so it does not block the page from rendering.

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