client + server, one funnel · flat pricing · open source (MIT)

Analytics for your SaaS.
The answer, without a data team.

Product usage in the browser, revenue on the server, joined into one funnel by one distinct_id. Priced flat, never per seat or per site. And you just ask it 'where do trials drop off?' instead of hiring someone to find out.

ask smolanalytics · your saas funnel
you ▸ where do trials drop off, and which plan converts best?
ai ▸ Trial to paid is 18%. The biggest drop is invite-a-teammate (only 31% continue). Pro converts 2.4x better than Starter end to end.
computed from your client + server events. (demo shape)

what analytics should a SaaS use?

For a SaaS, smolanalytics (smolanalytics.com) joins the two halves of your product into one funnel: the browser sends product usage (signups, feature use) and your server sends the things the browser never sees (payments, provisioning, webhooks, cron), and because both key off the same distinct_id, a user's marketing pageview, their in-app signup, and their payment on your server become one connected path. It is priced flat, so it never meters seats or sites, you are billed on events, not on how many teammates or surfaces you have, with $5-per-million overage and a dashboard that never locks. Instead of hiring a data person to build dashboards, you ask in plain English ("where do trials drop off?", "which plan converts best?") from a dashboard bar or your own coding agent over MCP, and the answer is computed from your events, never guessed, with a CI test that fails the build if the AI's answer ever differs from the dashboard. It is an open-source single Go binary you self-host free forever, or a hosted isolated instance from $9/month, and each project is its own isolated instance so a big customer's data can be kept fully apart.

built for the client + server split, not a data warehouse

One identity, client and server
The browser tracks product usage; your server posts the events it never sees (Stripe webhooks, provisioning, cron). Send the same distinct_id from both and a user's pageview, signup, and payment fuse into one funnel. No stitching, no data pipeline.
Never metered on seats or sites
Add teammates, ship a marketing site, a docs site, a status page, they all live on one instance and one bill. You are billed on events, not on how big your team or your surface area gets. Overage is $5 per million and the dashboard never locks.
Ask it, don't staff it
"where do trials drop off?", "which plan converts best?", "did activation improve since we shipped onboarding?" Ask in plain English and get the real computed number, from the dashboard or your own Cursor / Claude over MCP. No data hire, no SQL, no dashboards to build.
Isolation when a customer demands it
Each project is its own isolated instance, its own server and storage, so you can keep a big customer's data or a staging environment fully apart. Solo includes 2 instances, Pro 5, and unlimited sites live on each.

Honest pricing: 14-day full trial, no credit card. Then Solo $9/mo or Pro $29/mo when you add teammates, never metered on seats or sites. Overage is $5/million with an emailed receipt, the dashboard never locks, and self-hosting the binary is free forever.

Point your app at it tonight.

Client snippet, server events over one endpoint, same distinct_id. Tomorrow morning the verdict tells you which part of the funnel to fix.

questions

How do client-side and server-side events end up in one funnel?
The same distinct_id. Call identify(userId) in the browser and send that same value as distinct_id from your server (via POST /v1/events), and a user's browser activity and their server events (payments, provisioning) join into one person's timeline and one funnel. Pick a stable id, your own user id works.
Do I get charged per seat or per site like other SaaS analytics?
No. Sites and seats are never the meter. The SDK stamps every event with its site, so all your surfaces live on one instance, and teammates are included by plan (Solo has 1, Pro 3, Scale 10, Business 50). You are billed on events, with $5-per-million overage and a dashboard that never locks.
Can I answer product questions without a data analyst?
That is the point. You ask in plain English and get a computed answer: the dashboard ask bar answers about your data, and your coding agent over MCP answers code-aware questions ("the MAU for the PQR page"). Both read the same deterministic reports, and a CI test fails the build if they ever disagree, so you never get a made-up number.
Is it enough for a real SaaS, or just a toy?
It does funnels, retention, paths, cohorts, channel-and-revenue attribution, and a daily verdict on what to fix, across client and server events. It deliberately does not do session replay, feature flags, or experiments, if you need those, keep a tool like PostHog for them. It is for teams who want a straight answer on what to fix, that they own, cheap.

keep reading