SaaS Metrics That Actually Matter (And How to Track Them in Code)
MRR, churn, LTV, CAC — every SaaS founder knows the terms. Here's what they actually mean, how to calculate them correctly, and how to build them into your product.

James Ross Jr.
Strategic Systems Architect & Enterprise Software Developer
Metrics That Tell You What's Actually Happening
SaaS founders often know the names of the metrics they should be tracking before they know what they mean or how to calculate them accurately. They pull a number from Stripe, call it MRR, and don't realize they've left out several categories of revenue — or included things that shouldn't count.
Bad metrics are worse than no metrics because they create confident misunderstanding. You make decisions based on numbers that don't reflect reality, and the feedback loop that should tell you something is wrong is broken.
Let me go through the metrics that actually matter, how to define them precisely, and what's needed technically to track them correctly.
MRR: Monthly Recurring Revenue
The definition that matters: The sum of all normalized monthly recurring revenue from active subscriptions in the current period. "Normalized" means converting annual plans to monthly equivalents (annual plan ÷ 12) and excluding one-time payments, setup fees, and usage overages.
Common mistakes:
- Including one-time payments (not recurring, shouldn't count)
- Not normalizing annual plans (you didn't earn all of it this month)
- Including inactive (past-due) subscriptions (they haven't paid)
- Including free trial accounts (no revenue to count)
The MRR movements that matter:
- New MRR: Revenue from new customers this month
- Expansion MRR: Additional revenue from existing customers (upgrades, seat adds)
- Contraction MRR: Lost revenue from existing customers (downgrades, seat removals)
- Churned MRR: Revenue lost from cancellations
- Net new MRR: New + Expansion - Contraction - Churned
Tracking MRR movements, not just the total, tells you where your revenue growth (or loss) is coming from. Growing MRR from expansion is fundamentally healthier than growing MRR only from new customers, because it indicates existing customers are finding more value over time.
How to track it technically: Query your subscription records (not Stripe directly) filtered to active status. Join with plan records to get monthly price. Sum. For annual plans, divide annual amount by 12.
Churn Rate
The definition that matters: The percentage of paying customers (or MRR) lost in a given period.
Customer churn rate = (customers who cancelled in month) / (customers at start of month)
Revenue churn rate (also called gross revenue churn) = (MRR churned in month) / (MRR at start of month)
Net revenue churn = (MRR churned + contraction - expansion) / (MRR at start of month)
Negative net revenue churn — where expansion revenue from existing customers exceeds revenue lost from churn and contraction — is the signal that you've built a product with strong natural expansion. It means you can grow revenue without adding a single new customer, and that your existing customer base is becoming more valuable over time.
What's a good churn rate? For B2C SaaS, monthly churn under 5% is healthy. For SMB SaaS, under 3%. For enterprise SaaS, under 1% — enterprise customers should be sticky. High churn is always a product or customer-fit problem; discounting can delay it but won't solve it.
LTV: Customer Lifetime Value
The definition: The average total revenue you'll receive from a customer over the lifetime of their relationship with you.
Simple version: LTV = ARPA × (1 / Monthly Churn Rate)
Where ARPA is average revenue per account per month.
If ARPA is $200/month and monthly churn is 2%, then LTV = $200 × (1/0.02) = $10,000.
The more useful version accounts for the cost to serve the customer (gross margin), because LTV as a revenue figure is less useful than LTV as a profit figure. Gross margin-adjusted LTV = LTV × Gross Margin %.
CAC: Customer Acquisition Cost
The definition: The total cost of sales and marketing in a given period, divided by the number of new customers acquired in that period.
CAC = (Total Sales + Marketing Spend) / New Customers Acquired
Include everything: ad spend, sales salaries, marketing salaries, software for sales/marketing, event costs, agency fees. If you're excluding sales salaries because "that's separate," your CAC is wrong.
The LTV:CAC ratio is the most important ratio in SaaS. A healthy B2B SaaS company has LTV:CAC of 3:1 or better. Below 3:1, you're not generating enough return to justify the acquisition spend. Above 5:1, you may be underinvesting in growth.
CAC Payback Period = CAC / ARPA. How many months does it take to recoup what you spent to acquire a customer? Under 12 months is healthy for most SaaS. Over 18 months creates cash flow problems, particularly for bootstrapped companies.
The Metrics Dashboard in Code
The right way to track these metrics is a combination of:
Event sourcing for billing events. Every subscription state change — created, upgraded, downgraded, cancelled — should emit a structured event with a timestamp, customer ID, plan details, and amount. These events are the raw material for all your revenue metrics.
A subscription state table. As described in the Stripe billing article — a mirror of Stripe subscription state in your own database, updated by webhooks.
A daily metrics snapshot job. A scheduled process that runs once per day and calculates MRR, active subscribers, churn rate for the period, and expansion/contraction metrics, then stores the results in a metrics_snapshots table. This gives you a historical time series without recalculating everything from events every time a dashboard loads.
An analytics layer, not just Stripe. Stripe's built-in analytics are useful but limited. You can't build custom cohort analyses, correlate subscription metrics with product usage, or segment by acquisition channel without your own analytics layer. Tools like Metabase or Redash against your own database often tell you more than Stripe's dashboards.
The Vanity Metrics Worth Ignoring
Total signups. Unless you're tracking the percentage of signups that activate and convert, total signups is a marketing ego metric. A product with 10,000 signups and a 2% conversion rate is worse than a product with 1,000 signups and a 20% conversion rate.
Total users. Similar issue. Active users — specifically the ones who have used the core product feature in the last 30 days — are what matters. Stale accounts padded into a "total users" number is theater.
Page views and sessions. Not SaaS metrics. Marketing metrics. Don't confuse them.
"Revenue run rate" calculated from a good month. If you have an unusually good month and multiply by 12, that's not ARR. It's wishful thinking.
The discipline of defining, tracking, and acting on the right metrics is what separates SaaS founders who build durable companies from ones who are perpetually surprised by what's happening in their business. If you're building the analytics layer for your SaaS and want to make sure you're tracking the right things, book a call at calendly.com/jamesrossjr.