The 7 metrics every indie SaaS should track from day one
Pre-seed founders are told to track "everything." That advice creates dashboard debt before product-market fit. These seven metrics are enough for most indie SaaS products from day one — each maps to a number you can log with a single HTTP call and chart in Umlogger for $1/month flat.
- 1. New signups (daily count)
Velocity metric — are top-of-funnel experiments working? Log +1 on each completed signup. How Umlogger helps → - 2. Monthly recurring revenue (MRR)
The health of the business in one line. Push from Stripe webhooks or your billing DB. How Umlogger helps → - 3. Churn or cancellation events
Spot leaks early. Count cancels as events; correlate with product releases. How Umlogger helps → - 4. API p95 latency
Users feel tail latency before averages move. Send milliseconds as a value metric from your API layer. How Umlogger helps → - 5. Error rate or 5xx count
Cheaper than full APM when you only need 'are we on fire?' Increment on each failed request bucket. How Umlogger helps → - 6. Cron / worker last success
Background jobs fund the business (reports, billing, emails). Ping ingest when each job finishes. How Umlogger helps → - 7. Trial → paid conversion
Counts trials started and paid conversions; ratio tells you if onboarding or pricing is the bottleneck. How Umlogger helps →
What to skip at first
Full infrastructure maps, per-pod CPU, and hundred-metric RED dashboards can wait until you have a reason to hire for ops. E-commerce shops should add orders and revenue — see our e-commerce use case. If you are comparing tools, read why Datadog is overkill for indie SaaS or the Datadog alternative breakdown.
Make it stick
Create seven metrics in the console, wire ingest from the places the events already happen, enable daily email on each, and add one alert for the metric you would panic about at 2am. That loop beats a seventy-panel Grafana board nobody opens.
Step-by-step Stripe MRR wiring is in track MRR from Stripe webhooks. Cron patterns are in cron monitoring without PagerDuty.