Skip to content
Lifetime 50% discount· 10 places left

More paying customers.
Less guesswork.

See which channels bring buyers and where visitors drop off, so you can focus on what gets more people paying. Set it up with one prompt to your coding agent.

14-day free trial · cancel any time · data stays in the EU

6 people on queststack.io right nowLive demo

6 people are on queststack.io right now.

Revenue is up 34% on the 30 days before. Organic Social brought 34% of revenue from only 32% of visitors.

Visitors15,100▲ 67%
Revenue$19,277▲ 34%
Revenue per visitor$1.28▼ 20%
Signup rate24%▼ 0.2 pt
Visitors and revenueVisitorsRevenue
07501,500$0$1,250$2,50020 Sep24 Sep28 Sep2 Oct6 Oct10 Oct14 Oct18 Oct
Revenue per visitorby channel
Organic Social$1.36
Organic Search$1.28
Direct$1.11
Referral$1.42
AI Assistants$1.06
Paid$0.89

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.

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 queststack.io. [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 addedqueststack.io
  • First page view14:02:07
  • Tracking plan4 events
  • First goal: signup14:02:31
  • Revenue: first payment$29 · test mode
Event streamqueststack.io
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: queststack.io
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 →

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 planFeaturedLifetimeBoost

Organic Social brought 34% of revenue from only 32% of visitors.

Organic Social → Featured: $2,494Organic Social → Lifetime: $3,129Organic Social → Boost: $963Organic Search → Featured: $2,436Organic Search → Lifetime: $2,086Organic Search → Boost: $819Direct → Featured: $1,334Direct → Lifetime: $745Direct → Boost: $441Referral → Featured: $435Referral → Lifetime: $1,043Referral → Boost: $261Email → Featured: $522Email → Lifetime: $447Email → Boost: $171Other → Featured: $986Other → Lifetime: $596Other → Boost: $369Organic Social $6,586Organic Search $5,341Direct $2,520Referral $1,739Email $1,140Other $1,951Featured$8,207 · 43%Lifetime$8,046 · 42%Boost$3,024 · 16%Organic Social$6,586Organic Search$5,341Direct$2,520Referral$1,739Email$1,140Other$1,951Featured$8,207 · 43%Lifetime$8,046 · 42%Boost$3,024 · 16%

Last-touch revenue: the visit before the payment · last 30 days · live demo

Revenue
$19,277
New customers
557
Average order
$28.64
Per visitor
$1.28
Revenue per visitorby channel
Organic Social$1.36
Organic Search$1.28
Direct$1.11
Referral$1.42
AI Assistants$1.06
Paid$0.89

Connect your payment provider →

Realtime

Watch people arrive, and see who is ready to buy.

Every visitor is a ping on the globe. Signups glow mint, payments glow coral. The intent score uses pricing and checkout views, return visits and time on site.

Visitors per minute 6 now · live demo
People on the sitesorted by intent · example rows
People on the site now, sorted by intent. Demo data.
VisitorPage nowIntent
amber-foxLisbon, PT · X/pricingHigh
quiet-otterAustin, US · Google/checkoutHigh
blue-heronBerlin, DE · Newsletter/submitHigh
calm-ibisSeoul, KR · Reddit/leaderboardMedium
grey-wrenSingapore, SG · Google/Low

Page view Signup or goal Payment

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 40 visitors becomes a customer. The biggest drop is between visited the site and viewed pricing: 9,702 people (64%) leave there.

  1. Visited the site15,100100% start100% of visitors
  2. Viewed pricing5,39836% of previous step36% of visitorsBiggest drop
  3. Signed up2,32943% of previous step15% of visitors
  4. Started checkout37616% of previous step2.5% of visitors
  5. Paid376100% of previous step2.5% of visitors
Visit to paid, by channelconversion
AI Assistants2.65%
Organic Social2.60%
Email2.54%
Organic Search2.52%
Referral2.36%
Direct2.30%

AI Assistants converts best. Organic Social sends the most visitors, and 2.60% 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

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"

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="queststack.io"
  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
pageviewautomatic41,705✓ Receiving
signup25% of visitors3,714✓ Receiving
submit_tool11% of visitors1,696✓ Receiving
checkout3.7% of visitors559✓ Receiving
paymentadded for each Stripe payment559✓ 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 database runs in Germany. 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

229

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

  • ChatGPT-User171
  • Claude-User58

28% of AI requests

Search indexing

403

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

  • Googlebot250
  • Bingbot82
  • PerplexityBot71

49% of AI requests

AI training

192

A crawler collected the page as training data.

  • GPTBot116
  • ClaudeBot54
  • CCBot22

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

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.

Launch price

Lifetime 50% discount on Starter and Growth up to 100k events. Launch price maintained as long as subscription remains active. 10 places left at this price, then 40% off.

0 taken50 of 50 places left
  • Starter

    Lifetime 50% discount

    $4.50/ month$9

    For as long as you stay subscribed. Cancel and it ends. Full price $9.

    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
    Lock in $4.50 a month
  • Growth

    Lifetime 50% discountFor teams

    $9.50/ month$19

    For as long as you stay subscribed. Cancel and it ends. Full price $19.

    10k events a month · 30 sites · 30 people

    • Everything in Starter
    • Up to 30 sites and 30 people
    • Social mentions (X, Reddit, Hacker News)
    • X link attribution
    • 5+ years of data
    Lock in $9.50 a month
More than 10M events a month?We set a custom plan with you.
Ask for a custom plan

Starter and Growth start with a 14-day free trial: add a card at checkout, pay nothing today, and cancel any time before day 14. The launch price is a lifetime discount for as long as you stay subscribed to the same plan; a cancel or a plan change ends it. 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 →

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 database runs in Germany. twelvebit does not store IP addresses.
Is there a free trial?
Yes. Starter and Growth start with a 14-day free trial. You add a card at checkout and pay nothing until day 14; cancel before then and you pay nothing.
What is the launch price?
A lifetime discount for the first 50 paid places on Starter or Growth at 10k or 100k events a month. Places 1 to 10 get 50% off, and after each 10 places the discount goes down by 10 points. 50 places are left; the next one gets 50% off. The discount lasts for as long as you stay subscribed to the same plan. If you cancel, or change the plan, the number of events or monthly and yearly, it ends and does not come back. If you go over your events, tracking goes on, and a larger plan has the standard price.
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