Skip to content
Public beta · free while we build

See where your paying customers come from.

twelvebit joins every visit to every payment, so each channel, page and campaign shows the revenue it brought. Paste one prompt into your coding agent and it sets up the tracking for you.

Start free

Free during public beta · no card · data stays in the EU

37 people on queststack.io right nowDemo

37 people are on queststack.io right now.

Revenue is up 31% this month. X brought 34% of it from only 22% of visitors.

Visitors46,655↑ 18%
Revenue$11,750↑ 31%
Revenue per visitor$0.25↑ 11%
Signup rate2.4%↑ 0.3 pt
Visitors and revenueVisitorsRevenue
02,5005,000$2,000Product Hunt launchProduct Hunt launch17 Sep21 Sep25 Sep29 Sep3 Oct7 Oct11 Oct15 Oct
Revenue per visitorby channel
Google$0.22
X$0.38
Direct$0.23
Newsletter$0.33
Reddit$0.16
Other$0.10

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. Work through these steps and report back at the end. [Pasted text +36 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 https://twelvebit.app/cli/twelvebit-cli.tgz 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 planBoostFeaturedLifetime

X brought 34% of revenue from only 22% of visitors.

Google → Boost: $1,100Google → Featured: $1,820Google → Lifetime: $500X → Boost: $640X → Featured: $2,100X → Lifetime: $1,220Direct → Boost: $720Direct → Featured: $1,050Direct → Lifetime: $340Reddit → Boost: $300Reddit → Featured: $520Reddit → Lifetime: $160Newsletter → Boost: $300Newsletter → Featured: $470Newsletter → Lifetime: $270Other → Boost: $75Other → Featured: $125Other → Lifetime: $40Google $3,420X $3,960Direct $2,110Reddit $980Newsletter $1,040Other $240Boost$3,135 · 27%Featured$6,085 · 52%Lifetime$2,530 · 22%Google → Boost: $1,100Google → Featured: $1,820Google → Lifetime: $500X → Boost: $640X → Featured: $2,100X → Lifetime: $1,220Direct → Boost: $720Direct → Featured: $1,050Direct → Lifetime: $340Reddit → Boost: $300Reddit → Featured: $520Reddit → Lifetime: $160Newsletter → Boost: $300Newsletter → Featured: $470Newsletter → Lifetime: $270Other → Boost: $75Other → Featured: $125Other → Lifetime: $40Google$3,420X$3,960Direct$2,110Reddit$980Newsletter$1,040Other$240Boost$3,135 · 27%Featured$6,085 · 52%Lifetime$2,530 · 22%

Last-touch revenue: the visit before the payment · Sep 17 – Oct 16 · demo data

Revenue
$11,750
New customers
241
Average order
$48.76
Per visitor
$0.25
Revenue per visitorby channel
Google$0.22
X$0.38
Direct$0.23
Newsletter$0.33
Reddit$0.16
Other$0.10

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 37 now · demo
People on the sitesorted by intent
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 weakest step.

Visit to paid5 steps · Sep 17 – Oct 16 · demo data

1 in 194 visitors becomes a customer. Most people leave between pricing and signup.

  1. Visited the site46,655100% start100.0% of visitors
  2. Viewed pricing9,87021.2% of previous step21.2% of visitors
  3. Signed up1,12011.3% of previous step2.4% of visitorsWeakest step
  4. Started checkout40235.9% of previous step0.86% of visitors
  5. Paid24160.0% of previous step0.52% of visitors
Visit to paid, by channelconversion
X0.79%
Newsletter0.66%
Direct0.48%
Google0.46%
Reddit0.31%
Other0.17%

X converts best. Reddit sends many visitors who rarely 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 · Sep 17 – Oct 16 · 5 blog posts with at least one customer · demo data

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
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 · demo data
Events from analytics.yaml with their health in the last 30 days. Demo data.
Event30 daysStatus
pageviewautomatic46,655✓ Receiving
signup2.4% of visitors1,120✓ Receiving
submit_tool1.0% of visitors486✓ Receiving
checkout0.86% of visitors402✓ Receiving
paymentadded for each Stripe payment241✓ Receiving
review_postednone for 3 days38! Quiet

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.

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 · demo data

AI answers

1,284

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

  • ChatGPT-User742
  • Perplexity-User318
  • Claude-User224

9% of AI requests

Search indexing

3,960

An AI search engine added the page to its index.

  • OAI-SearchBot1,830
  • PerplexityBot1,190
  • Claude-SearchBot940

29% of AI requests

Training

8,412

A crawler collected the page as training data.

  • GPTBot3,620
  • ClaudeBot2,480
  • CCBot1,510
  • Bytespider802

62% of AI requests

Works with

Works with the stack you already have.

Sites and frameworks

  • Next.js
  • React
  • Astro
  • Vue
  • Svelte
  • WordPress
  • Shopify
  • Webflow
  • Framer
  • Plain HTML

Payments

  • Stripe
  • Polar
  • Lemon Squeezy
  • Paddle
  • Dodo Payments

Coding agents

  • Claude Code
  • Codex
  • Cursor
  • Any agent with a terminal

Pricing

Start free. Pay for events, not seats.

Free during public beta
  • Starter

    $9/ month

    or $90 a year

    10k events a month · 1 site

    For one product that is starting to get traffic.

    • All dashboards: revenue, live, funnels, journeys
    • Revenue attribution
    • Agent setup, CLI and analytics.yaml
    • Cookieless mode
    • Data stored in the EU
    Start free trial
  • Growth

    Good start for teams

    $19/ month

    or $190 a year

    100k events a month · 10 sites

    For a small team with a few products.

    • Everything in Starter
    • Up to 10 sites
    • Team members
    • REST API
    • MCP server for your agents
    Start free trial
  • Scale

    $49/ month

    or $490 a year

    1M events a month · Unlimited sites

    For busy sites and agencies.

    • Everything in Growth
    • Unlimited sites
    • 10 times the events of Growth
    Start free trial
More than 1M events a month?We set a custom plan with you. Tell us about your traffic.
Ask for a custom plan

14-day free trial, no card needed. Billing is not live yet, so every plan is free while twelvebit is in public beta. An event is a page view or a custom goal.

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 twelvebit free right now?
Yes. Billing is not live yet, so every plan is free during the public beta. When billing starts, you get a 14-day free trial, and you do not need a card to start it.
What counts as an event?
A page view or a custom goal, such as signup or purchase. The plans differ by the number of events a month and the number of sites.
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 2.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.

Start free

Free during public beta · no card needed