smolanalytics
log inStart free
every feature

Everything inside. One ask bar.

your ai assistant admits it hallucinates your numbers. mine can't. it's a ci test.

This page lists every capability. You will never need to memorize any of it: you ask in plain english, in your editor or on the dashboard, and the right one runs.

47 MCP tools13 prompts12 report types9 CLI commands6 editors auto-wired4 import formats~7 bytes per event at rest
smolanalytics is one analytics tool with incumbent-level depth behind a plain-english ask bar. One snippet captures web analytics (visitors, live-now, referrers, UTM, devices, plus an AI-assistant referral channel) and product analytics (funnels, retention, trends, breakdowns, paths, lifecycle, stickiness, B2B group roll-ups) from the same events. Your editor's AI gets 47 MCP tools and 13 built-in prompts, and a CI agreement test asserts the editor's answer always equals the dashboard's, because both come from the same deterministic report engine, never generated SQL. Also included: a verdict that says what to fix, a morning brief email, threshold alerts to Slack or signed webhooks, goals with first-touch attribution, Google Search Console with money-pages analysis, cohorts, saved reports, read-only share links, a plan-as-code CI drift gate that also works against PostHog, importers from PostHog, Umami, CSV and JSONL, one-call GDPR erasure, cookieless mode, and a single MIT Go binary that stores events at about 7 bytes each. Self-host free, or use the cloud where every project is an isolated instance.
web analytics

Know your traffic

Everything a web-analytics tool does, from the same one snippet that powers your product analytics.

you ▸ how's traffic? who's on the site right now?
Visitors, pageviews, live-right-now, top pages, referrers, UTMs, devices. One answer, no menus.
you ▸ how much traffic comes from ChatGPT?
Humans clicking out of chatgpt.com, claude.ai, perplexity.ai, gemini and copilot are counted as their own named channel, separate from AI crawlers.
you ▸ is any of this bot traffic?
Filtered before it hits your charts: a curated user-agent list including the 2026 AI-crawler wave (GPTBot, ClaudeBot, PerplexityBot). Web traffic only; your backend events are never UA-filtered.
you ▸ what are my top search queries?
Google Search Console built in: clicks, impressions, CTR, position, movers vs the prior period, and money pages: quick wins sitting at position 4 to 15, CTR problems, cannibalization.
you ▸ why is my search data empty?
Read-only connection diagnostics. Setup is your own Google OAuth client, two env vars, readonly scope, a daily poller.
you ▸ which channel actually converts?
Goals on an event or a path glob like /thanks*, with conversions, rate, and first-touch attribution by referrer host and utm_source.
you ▸ how did the blog do vs the app this week?
The SDK stamps every event with its hostname, so one instance holds unlimited sites and any report filters by site. The brief splits per product.
$ <script src="https://your-instance/sdk.js">
One tag autocaptures pageviews and clicks. Anything else sends from any language with a 5-line POST to /v1/events, single or batch.
product analytics

Know what users do

12 report types, computed exactly. Every one accepts property filters (eq / neq / contains / gt / lt, or shorthand like plan=pro), AND-combined.

you ▸ where do users drop off?
Ordered conversion funnel with per-step drop-off and a configurable window (default 7 days).
you ▸ do users come back?
Day-0 cohorts and the percent returning on day 1 through N.
you ▸ signups by source over time?
Daily series per event, unique-users option, breakdown lines.
you ▸ where do signups come from?
Counts per property value, sorted descending.
you ▸ what do users do after signup?
Ranked next-step flows from any start event.
you ▸ are we growing or churning?
Daily new, returning, resurrected and dormant users.
you ▸ how engaged are users?
DAU, WAU, MAU and the DAU/MAU ratio.
you ▸ which companies are most active?
B2B roll-up by any group property: accounts, 7-day and 30-day active, top accounts.
you ▸ what did user u123 do?
One user's full timeline, first and last seen, traits.
you ▸ did my signup event arrive?
The newest raw events with their properties. This is how you debug instrumentation.
you ▸ track paying users as a group
A named user group (match any or all events), reusable as a filter on any report, with live member counts.
you ▸ pin that funnel to my dashboard
Pins funnels, trends, breakdowns and retention to Saved Reports.
you ▸ where do people drop off? (typed on the dashboard)
The ask bar is built into the dashboard too: type a question at /, it runs the same reports. Zero setup.
the verdict + morning brief

Told what to fix, before you ask

The opposite of a wall of charts: the product leads with a verdict, and it is honest about sample sizes.

you ▸ how's it going? what's broken?
A proactive verdict: 24h drops and spikes, the biggest drop-off in your auto-detected journey, the worst-converting segment through it, the week-over-week headline, a retention read. Computed exactly.
you ▸ can I trust a verdict on 12 users?
No, and it won't give you one: findings under 20 samples are suppressed as noise, and anything under 100 says "small sample" out loud.
$ smolanalytics brief
The self-hosted morning brief: cron plus mail, or --webhook to Slack. Pulse, per-product breakdown, verdict findings. Same engine as the cloud email, so they cannot disagree.
you ▸ (cloud: no ask needed, it's a daily email)
The cloud pulls each instance's own brief every morning and emails every member of your org. What changed, what to fix first.
you ▸ alert me if signups drop below 10 a day
A threshold on a rolling-window count, checked every 5 minutes, fired to your webhooks. Last-checked value and last fire are inspectable.
you ▸ send alerts to Slack
Slack URLs are auto-detected. Everything else gets HMAC-SHA256-signed JSON (X-Smolanalytics-Signature) so you can verify it's really us.
you ▸ prove the Slack hook works
A real delivery down the exact same path alerts and the digest use, and it reports the HTTP status back.
ask in your editor

All 47 tools, by category

smolanalytics connect wires the MCP server into every coding assistant you have installed: Claude Desktop, Claude Code, Cursor, Windsurf, VS Code / Copilot, Cline. Two transports: stdio (reads the data file directly, no server running) or Streamable HTTP at /mcp. Your own model does the talking, so the AI part costs nothing extra and is never metered. Here is the entire surface, each tool as the question that invokes it.

reports / ask

14 tools
whats_notable
you ▸ how's it going? what's broken?
overview
you ▸ give me the headline numbers
list_events
you ▸ what events am I tracking?
funnel
you ▸ where do users drop off?
retention
you ▸ do users come back?
trends
you ▸ signups by source over time?
breakdown
you ▸ where do signups come from?
web_overview
you ▸ who's on the site right now?
recent_events
you ▸ did my signup event arrive?
user_activity
you ▸ what did user u123 do?
lifecycle
you ▸ are we growing or churning?
stickiness
you ▸ how engaged are users?
paths
you ▸ what do users do after signup?
groups
you ▸ which companies are most active?

actions

13 tools
create_alert
you ▸ alert me if signups drop below 10 a day
list_alerts
you ▸ what alerts do I have?
delete_alert
you ▸ delete the signups alert
add_webhook
you ▸ send alerts to Slack
list_webhooks
you ▸ which webhooks are wired up?
delete_webhook
you ▸ remove that webhook
test_webhook
you ▸ prove the Slack hook works
create_cohort
you ▸ track paying users as a group
list_cohorts
you ▸ what cohorts exist, and how big are they?
delete_cohort
you ▸ drop the churn-risk cohort
save_report
you ▸ pin that funnel to my dashboard
list_saved_reports
you ▸ what's pinned right now?
delete_saved_report
you ▸ unpin the old funnel

instance control

9 tools
get_settings
you ▸ show my instance config
set_project
you ▸ set my timezone to Europe/Berlin
set_retention
you ▸ keep 90 days of events
list_api_keys
you ▸ what API keys exist?
create_api_key
you ▸ make a key for the iOS app
revoke_api_key
you ▸ kill that key now
set_tracking_plan
you ▸ declare the events this app should send
instrumentation_health
you ▸ is my tracking broken?
delete_user_data
you ▸ delete everything about user u123

goals

4 tools
create_goal
you ▸ count every hit on /thanks* as a conversion
list_goals
you ▸ what goals are set?
delete_goal
you ▸ remove the demo goal
goal_report
you ▸ which channel converts?

share links

3 tools
create_share_link
you ▸ give my investor a read-only traffic link
list_share_links
you ▸ what share links are live?
revoke_share_link
you ▸ revoke the investor link

search console

2 tools
search_console_report
you ▸ what are my top search queries?
gsc_status
you ▸ why is my search data empty?

import / export

2 tools
import_events
you ▸ import my PostHog history
create_export_link
you ▸ give me a download of everything
the 13 prompts

Whole workflows, one name each

Built into the MCP server. Instead of asking ten questions in a row, you invoke one prompt and your model runs the whole routine against your real numbers.

/instrument-my-app
the full setup loop: pick events, wire tracking, set the plan, verify with instrumentation_health, set a drop alert
/whats-broken-today
the morning check: verdict, tracking health, traffic anomalies
/weekly-review
founder-grade weekly: growth, the leak, retention, traffic, and THE one fix
/monthly-report
client-ready monthly with deltas and 3 next-month actions
/search-performance
GSC deep read: query movers, landing pages, what searchers did next
/content-gaps
queries with impressions but weak rank, crossed against your existing pages
/funnel-leak
the biggest drop-off, the segment to blame, one measurable fix
/channel-review
a keep / cut / watch table with honest sample sizes, AI-assistant channel included
/retention-review
a D1/D7 verdict plus exactly 2 levers
/launch-day
a live situation room: live visitors, spike source, a conversion-vs-traffic lag flag, a safety-net alert
/portfolio-review
multi-product: per-site pulse, which product earned the week
/growth-experiments
exactly 3 experiments from measured baselines. no baseline, no experiment
/money-pages
quick wins, CTR problems, cannibalization, with a specific fix per row
ci + plan-as-code

Your numbers, under test

The claim in the headline is enforced by a build, and your tracking itself can be a CI gate.

you ▸ (no ask needed: it's a test in our CI)
The agreement test asserts the answer your editor gets over MCP and the answer the dashboard renders over HTTP are the same computation. If they ever diverge, our build fails. There is no second query path that can drift.
$ smolanalytics plan init && smolanalytics plan push
Your tracking plan lives in git as smolanalytics.plan.json: the events this app should send and their expected properties. Plan-as-code.
$ smolanalytics plan check
Verifies live traffic against the plan and exits 1 on breakage. Put it in CI and a deploy that silently kills your signup event fails the build.
$ smolanalytics plan check --source=posthog
The same drift gate pointed at an existing PostHog project, straight over their API. Try the gate before migrating anything. No server needed.
you ▸ is my tracking broken?
Reality vs plan, on demand: which events are arriving, which are missing, which properties are missing, what's arriving unplanned.
import + export + gdpr

In, out, and gone on request

No lock-in is a feature with mechanisms, not a promise.

you ▸ import my PostHog history
Four formats: jsonl, csv, posthog, umami. Original timestamps preserved, one bad row never aborts the run, per-reason skip counts, and dry_run to preview first. Also a CLI: smolanalytics import.
you ▸ give me a download of everything
A one-time link, jsonl (re-importable) or csv, 1-hour expiry, dead after the first download.
$ curl https://your-instance/v1/export?format=jsonl
The JSONL round-trips back into /v1/events, so your whole backup strategy can be one nightly curl.
you ▸ delete everything about user u123
GDPR erasure across every storage tier in one call, confirm required, returns the count of what it removed. Also DELETE /v1/users/{id}/data.
you ▸ keep 90 days of events
Retention is a setting, pruned periodically. 0 means forever.
privacy + cookieless

Analytics without the banner

$ smolanalytics.init(key, { anonymous: true })
Cookieless mode: nothing is stored on the device. The server derives a daily-rotating anonymous id, unlinkable across days, so funnels still work within a day and no consent banner is needed. Users who sign in keep full analytics.
you ▸ (safe by default: no ask needed)
The server binds 127.0.0.1 out of the box, and refuses to serve on a public address until you set a dashboard password.
the engine

Small on purpose

No Kafka, no ClickHouse, no database beside it. One binary that would rather be boring than distributed.

you ▸ (storage: no ask needed, it just holds)
An append-only hot log, fsynced per batch, sealed every 50,000 events into immutable, compressed, CRC-checked columnar segments. About 7 bytes per event at rest. Flat RAM. Exactly one writer; no consensus, no cluster, by design.
you ▸ (cold tier)
Optional S3, R2 or Tigris cold storage for sealed segments, so the disk stays small.
$ smolanalytics scrub
CRC-checks every segment, cleans orphaned blobs, exits 1 on problems. Verify your archive in CI or cron.
$ docker run ghcr.io/arjun0606/smolanalytics demo
One static MIT-licensed Go binary, no cgo. demo seeds a full dashboard in about 30 seconds. Also install.sh, go run, or fly launch.
$ smolanalytics <serve|demo|mcp|connect|gsc|import|brief|plan|scrub>
The whole CLI is 9 subcommands. That's the entire surface you could ever need to learn, and connect does the learning for you.
you ▸ (settings UI at /settings)
Account and password, API keys, retention, taxonomy, exports, webhooks, alerts, audit log. For the days you'd rather click.
the cloud

Same engine, run for you

smolanalytics.com is the hosted version: every fact below is literally true in the billing and provisioning code.

An isolated instance per project
Every project gets its own Fly app: a dedicated volume, a scale-to-zero machine, its own keys, sized by plan. A breach of one tenant is a breach of one tenant.
Events never touch the control plane
Your traffic goes straight to your instance. The cloud site has exactly 4 subprocessors (Vercel, Neon, Fly.io, Dodo), scrypt-hashed passwords, per-project scoped keys. All of it is spelled out on the security page.
Prompt minting for AI builders
On the project page, pick Lovable, Bolt, v0, Replit, or Cursor / Claude Code and get one paste-ready prompt with your real host and write key. The builder's AI wires the snippet, track() and identify() itself.
An MCP endpoint for agents
5 provisioning tools: list, create, inspect and delete projects, and read usage. An agent scaffolding an app can stand up isolated analytics with no human and no browser.
The morning brief, delivered
A daily job pulls each instance's own brief and emails every member of your org.
Share links for the cofounder and investors
Ask for one: a revocable, read-only traffic page at its own URL. The token is hashed after minting.
Plans that meter usage, never features
Solo $9, Pro $29, Scale $149, Business $499 per month; annual is 10x monthly, so 2 months free. Plans meter seats, volume and retention. Sites are never the meter: unlimited sites on every plan.
A trial that is the full product
14 days, every feature, 1M events, no credit card. The genuinely free tier is self-hosting.
Overage that never locks you out
$5 per extra million events on Solo and Pro, $4 on Scale, $3 on Business, emailed before it's charged. The dashboard never locks.
Exactly two trial emails, ever
One when the trial is ending, one when it ends. Deduped so you never get either twice.
Nothing deleted without notice
If a trial lapses: 7 days of grace, then the machine stops with data kept, an export notice at day 30, destruction at day 37 only if that notice went out at least 7 days earlier. Otherwise it stays stopped and intact.
Teams
Orgs with owner, admin and member roles, invite links, and 1 / 3 / 10 / 50 seats by plan.
Referrals
Share your smolanalytics.com/r/ code: 25,000 bonus events to both of you when they sign up.
what's not here

The never-list

Deliberate omissions, not roadmap gaps. Knowing what a tool refuses to be is part of trusting it.

Session replay
watching recordings of users is a different product, and a heavier privacy posture than we will carry
Feature flags
flags belong next to your deploys, not your analytics
Heatmaps
same answer: a funnel tells you where people stop, exactly, with numbers
A/B testing suite
we'll measure your experiment's events exactly; we won't run the assignment
Surveys
asking users questions is a survey tool's job; ours is counting what they actually did
questions

Common questions

Is all of this really included?
Yes. The 14-day trial is the full product, and paid plans meter seats, event volume and retention, never features and never sites. Everything on this page that is part of the engine also ships in the open-source binary, MIT-licensed, free to self-host forever.
Do I have to learn all this?
No, and that is the point of this page. You never memorize a tool name or a menu path. You ask in plain english, in your editor or in the dashboard's ask bar, and the right capability runs. The 13 prompts exist so whole workflows, like a weekly review, are one name instead of ten questions.
How does the AI not hallucinate my numbers?
It never generates SQL or estimates anything. Every answer is computed by the same deterministic report engine that renders the dashboard, and a CI agreement test asserts the two are identical: if an editor answer could ever differ from the dashboard, our build fails. Your AI assistant admits it hallucinates your numbers. This one can't. It's a CI test.
What is NOT included?
Session replay, feature flags, heatmaps, an A/B testing suite, and surveys. That is a deliberate never-list, not a roadmap gap: they are different products with different privacy postures. If you need them, use a tool built for them alongside smolanalytics.

And if we vanish tomorrow, you lose nothing: the export is one curl, the binary is MIT with no CLA, and self-hosting is the free tier. Every capability on this page keeps working on your own machine.

no credit card · or self-host free