Analytics your code can call.
Send events with one script tag or a small TypeScript SDK. Read them back over a REST API or an MCP server your coding agent can use.
Tracker under 4 KB gzipped. SDK about 3 KB, no dependencies.
<script defer
src="https://cdn.tracabit.com/tracabit.js"
data-key="tcb_live_…"
data-project="tcb_proj_…"></script>
<script>
window.tracabit.track("signup_click", { plan: "pro" });
</script>Two keys per project, so the one in your HTML can't leak data.
- Public ingest key
- tcb_live_
- Sends events and nothing else. It sits in your page HTML, so anyone can see it, and it can't read a single number back.
- Secret key
- tcb_sk_
- Reads metrics, crashes, web vitals and usage, and connects MCP clients. Keep it on servers and in agent configs, never in browser code.
- Session token
- Dashboard sign-in
- What the dashboard uses. It can read any project you own when you pass ?projectId= with the request.
Both keys live in Dashboard, under API Keys, and rotate independently.
Send events from anywhere.
The script tag records pageviews, clicks, crashes and web vitals on its own. For apps and servers, the tracabit package on npm has GA4-style helpers: pageView, track, purchase, addToCart, beginCheckout, generateLead, captureException and more.
No SDK? Post JSON to /analytics with your public key.
npm install tracabit
import { createClient } from "tracabit";
const tracabit = createClient({
apiKey: "tcb_live_…",
projectId: "tcb_proj_…",
endpoint: "https://api.tracabit.com/analytics",
});
tracabit.pageView();
tracabit.purchase("order_1042", 149.97, "EUR", [
{ item_id: "sku_pro", price: 149.97, quantity: 1 },
]);
tracabit.captureException(new Error("Checkout failed"));curl -X POST https://api.tracabit.com/analytics \
-H "Authorization: Bearer tcb_live_…" \
-H "Content-Type: application/json" \
-d '{"sessionId":"s1","url":"https://acme.com/pricing","event":"page_view"}'
{ "ok": true, "message": "Analytics recorded successfully" }Read it back as JSON.
Every read endpoint returns { ok, data } with the same shape the dashboard uses. Dates are UTC days in YYYY-MM-DD.
curl -H "Authorization: Bearer tcb_sk_…" \
"https://api.tracabit.com/metrics?from=2026-10-01&to=2026-10-07"
{
"ok": true,
"data": {
"from": "2026-10-01",
"to": "2026-10-07",
"days": 7,
"users": 3120,
"sessions": 4410,
"pageviews": 11873,
"bounceRate": "41.2%",
"daily": [{ "date": "2026-10-01", "users": 402, "sessions": 571, "pageviews": 1490 }, …]
}
}| Endpoint | Key | What it does |
|---|---|---|
| POST /analytics | Public key | Record a pageview, custom event, crash or web-vitals sample. |
| GET /metrics | Secret key | Daily totals for a range (from, to) or one day (date): users, sessions, pageviews, bounce rate, sources, countries, devices, pages, events. |
| GET /errors | Secret key | Crash reports with stack traces. Filter with from, to, limit and fatal=true. |
| GET /vitals | Secret key | LCP, CLS, FCP and TTFB from real visitors, per page, for a date range. |
| GET /cost | Secret key | Events used this month against the project's plan limit. |
| POST /mcp | Secret key or session | MCP over streamable HTTP (JSON-RPC 2.0). |
| GET /health | None | Service status and version. |
When something goes wrong
- 400
- The payload is missing sessionId or userId, or a field is malformed.
- 401
- No key was sent, or the key or token is invalid or expired.
- 403
- A public key was used to read data, or a secret key asked for another project.
- 429
- The project hit its monthly event limit, or sign-in attempts were rate limited. Check Retry-After.
An MCP server, built in.
Point Claude Code, Cursor or any MCP client at /mcp with a secret key. It speaks streamable HTTP; the older SSE transport isn't supported.
claude mcp add --transport http \
tracabit https://api.tracabit.com/mcp \
--header "Authorization: Bearer tcb_sk_…"- query_analytics
- Traffic for 24h, 7d, 30d or 90d.
- inspect_errors
- Recent crashes and how often each happened.
- resolve_error
- Marks a crash resolved, or reopens it.
- compute_funnel
- Drop-off across a sequence of pages.
- get_billing_usage
- Events used, plan limits, renewal date.
- list_projects
- Projects the key or account can see.
Not available yet
Planned, with no release date. Tell us if one of these decides whether you can use Tracabit.
- Self-hosting
- Run the engine inside your own cloud account.
- Edge ingestion
- Accept events on Cloudflare Workers and Vercel Edge.
- Command-line tool
- Create projects and rotate keys from a terminal.
Free for 3,000 events a month, with every endpoint and the MCP server included.
Start free