instrumentation

You never write tracking code.

One snippet autocaptures everything that happens. Then your coding agent reads your app and writes the track() calls that matter, right into your codebase, guided by us and proven correct. The instrumentation gets written for you, and a CI gate keeps it from silently breaking.

smolanalytics instruments your app so you never write tracking code. One snippet turns on autocapture, which records pageviews, clicks (with a full element selector chain), engagement time, scroll depth, rage clicks, dead clicks, and JavaScript exceptions with zero code. For the custom events that matter (signup, activate, checkout), you connect your coding agent over MCP and it does the wiring: it calls propose_instrumentation, which reads your repository, detects the framework, and returns the exact track() calls to add at each call-site; the agent applies them with its own editor, declares them with set_tracking_plan, and proves each one is firing with verify_instrumentation. A committed tracking plan is then checked in CI, so the build fails the day a tracked event stops firing, and a CI agreement test proves the numbers the AI reports match the dashboard. No coding agent is fine too: run smolanalytics instrument for a one-command setup, or define events from already-captured clicks in the dashboard with no code at all.
step 1
autocapture, zero code

One snippet and you are already capturing pageviews, every click with its element chain, honest engagement time (focused and visible seconds, not a backgrounded tab), scroll depth, rage clicks, dead clicks, and JS exceptions. No track() calls needed for any of it.

step 2
your agent writes the custom events

Connect your editor with smolanalytics connect, then type /instrument-my-app. Your agent calls propose_instrumentation, which reads the repo and hands back the exact track() calls for signup, activate, and checkout with file, line, and properties. The agent applies them, guided by us. We never touch your code, your agent does.

step 3
it proves each event fires

verify_instrumentation cross-references the code and live traffic and returns FIRING, WIRED (in the code, just run the flow), or MISSING per event. No guessing, no waiting a day. PostHog's wizard sets you up once; this proves it worked in seconds.

step 4
it can't rot

The tracking plan is committed to your repo and checked in CI, so the build fails the day a tracked event stops firing. And the CI agreement test proves the AI's numbers always equal the dashboard. Your instrumentation gets written for you, and then it stays correct.

The two-command setup

With a coding agent, it is two commands and then it does the work:

# 1. wire your editor to this project's MCP server
smolanalytics connect claude-code

# 2. let it instrument the app
/instrument-my-app
#   → reads your repo, writes the track() calls, declares the plan,
#     and proves each event fires before it's done

No coding agent? Run smolanalytics instrument for a one-command setup that installs autocapture and shows you the exact track() calls to add. Or skip code entirely and define events from clicks you already captured, right in the dashboard.

Why this beats the rest

Everyone else makes you instrument by hand, or can't keep it correct:

Heap
autocaptures everything but can't touch your code, you define events by hand in their UI
Mixpanel / Amplitude
taxonomy first, you plan the events in a governance tool, then hand-write every track() call
Segment
enforces a tracking plan but you still write all the instrumentation yourself
PostHog
a setup wizard installs it once, but custom events are manual and nothing gates the plan in CI

smolanalytics is the only one where the AI writes the instrumentation for you and a CI gate proves it stays correct and autocapture fills in everything else.

Start the 14-day trial
no credit card · or self-host free forever (MIT)

keep reading