KPI Selection
Choosing the 3-5 key performance indicators that define success for the team —the numbers that, if they move, mean the team is winning —and resisting the temptation to track 20.
Why
A team cannot optimize 20 metrics simultaneously, and trying to do so means optimizing none. KPIs are the 3-5 numbers that, if they move in the right direction, mean the team is succeeding, and they must be chosen so that improving them cannot be gamed. The classic failure is choosing a KPI that can be optimized at the expense of the business: a growth team with 'signups' as the KPI will buy low-quality signups from incentive ad networks, and the signup number goes up while LTV goes down. The fix is to choose a KPI that bundles quality: 'paying customers acquired' instead of 'signups', or 'net new MRR' instead of 'revenue' (net new MRR subtracts churn, so the team cannot win by acquiring leaky-bucket customers). The second failure is choosing too many KPIs —a team with 12 KPIs has no KPIs, because when one goes up and another goes down, nobody knows which one matters. The third failure is choosing a KPI that is not actionable —'brand awareness' is a KPI that the team cannot move in a week, so it provides no direction for daily work. Good KPIs are specific (net new MRR from organic, not 'revenue'), time-bounded (weekly, not 'eventually'), and leading (trial-to-paid conversion this week predicts MRR next month, not last quarter's MRR which is trailing).
When
When defining team goals (quarterly OKRs). When a team's KPIs can be gamed (signups instead of paying customers). When a team has more than 7 KPIs (they have none). When a KPI is trailing instead of leading.
How
1. Start from the business goal: what is the one number that, if it grows 10% per quarter, means the business is healthy? For most SaaS this is net new MRR (new + expansion - churn) 2. Decompose the business goal into team-level KPIs: the growth team owns 'paying customers acquired' (not signups), the product team owns 'trial-to-paid conversion' (not feature usage), the retention team owns 'net revenue retention' (not login rate) 3. Choose 3-5 KPIs per team, no more: if you cannot rank them, you do not know what matters; force-rank by asking "if only one could move, which would you choose?" 4. Make each KPI ungameable: 'paying customers acquired' cannot be inflated with low-quality signups because non-paying users do not count; 'net new MRR' cannot be inflated with leaky-bucket customers because churn subtracts 5. Make each KPI leading, not trailing: 'trial-to-paid conversion this week' predicts MRR next month; 'last quarter MRR' tells you what happened, not what will happen 6. Make each KPI actionable: the team must be able to move it within one sprint —if the KPI is 'brand awareness' (which takes a quarter to move), it is a north star, not a KPI, and the team needs a leading indicator they can move weekly 7. Define the target and the threshold: 'net new MRR > $50k/week, alert if < $40k' —the target is the goal, the threshold is the early warning, and both must be specified 8. Define the measurement: the exact SQL, the data source, the refresh cadence, and the owner —a KPI without a measurement plan is an aspiration 9. Review KPIs quarterly: as the business stage changes, the KPIs change —a pre-product-market-fit company should KPI on 'weekly active users' (learning), a post-PMF company should KPI on 'net new MRR' (scaling), and a mature company should KPI on 'net revenue retention' (defending) 10. Resist adding KPIs: when a stakeholder requests a new KPI, ask which existing KPI it replaces —if none, the team has too many; adding without removing means nobody is focused
Example
# KPI selection: Growth team, Q4 2026
Business goal: net new MRR > $2.4M/quarter (40% YoY growth)
Team KPIs (3, force-ranked):
1. Paying customers acquired: > 540/week
- ungameable: non-paying users do not count
- leading: predicts MRR 1 month out
- actionable: team can run experiments within a sprint
- SQL: SELECT COUNT(DISTINCT user_id) FROM first_payments
WHERE paid_at >= this_week
- owner: Head of Growth
- alert: < 450/week (Slack #growth-alerts)
2. Trial-to-paid conversion: > 3.5%
- ungameable: denominator is trials, not signups
- leading: predicts paying customers 2 weeks out
- actionable: team can test pricing, onboarding, trial length
- SQL: SELECT paid_trials / total_trials FROM trial_cohort
WHERE trial_start >= this_week - 14 days
- owner: Growth PM
- alert: < 2.8% (investigate before Monday review)
3. Blended CAC: < $90
- ungameable: spend / paying customers (not signups)
- leading: predicts profitability of next quarter's cohorts
- actionable: team can shift channel mix within a sprint
- SQL: SELECT acquisition_spend / paying_customers
FROM weekly_acquisition
- owner: Growth Lead + Finance
- alert: > $110 (pause low-performing channels)
Rejected KPIs (and why):
- Signups: gameable (buy low-quality signups), trailing (signup
does not predict revenue), not actionable (signups do not tell
the team what to do differently)
- Website traffic: gameable (buy bot traffic), trailing (traffic
does not predict conversion), not actionable (which traffic?)
- Social followers: gameable (buy followers), trailing (followers
do not predict revenue), not actionable (followers are not a
funnel stage)
- Brand awareness: not actionable within a sprint (takes a
quarter to move), north star not KPI
North star (not a KPI, reviewed quarterly):
- Net new MRR: $2.4M/quarter (the business goal, not a team KPI)Common Problems
- ⚠Choosing a gameable KPI —'signups' as the KPI leads the team to buy low-quality signups from incentive networks; the number goes up, LTV goes down, and the team hits its KPI while the business loses money.
- ⚠Having 12 KPIs instead of 3-5 —when one goes up and another goes down, nobody knows which matters; a team with 12 KPIs has no KPIs because there is no focus, and the weekly review becomes a status update instead of a decision meeting.
- ⚠Choosing a trailing KPI instead of a leading one —'last quarter MRR' tells you what happened, not what will happen, and the team cannot act on history; a leading KPI (trial-to-paid this week) predicts the future and gives the team time to intervene.
- ⚠Choosing a KPI the team cannot move in a sprint —'brand awareness' takes a quarter to move, so it provides no direction for daily work; it is a north star (quarterly), not a KPI (weekly), and the team needs a leading indicator they can act on.
- ⚠Adding KPIs without removing —each stakeholder requests their favorite metric, the list grows to 12, and focus disappears; adding a KPI should require removing one, so the team is forced to decide what matters most.
Best Practices
- ✓Choose 3-5 KPIs per team and force-rank them —if you cannot decide which one matters most, you do not understand the business; the force-ranking exercise is what produces clarity, and 3-5 is the maximum a team can actually optimize.
- ✓Make each KPI ungameable by bundling quality —'paying customers acquired' instead of 'signups', 'net new MRR' instead of 'revenue'; if the KPI can be optimized at the expense of the business, the team will optimize it and the business will suffer.
- ✓Choose leading KPIs (trial-to-paid this week predicts MRR next month) over trailing KPIs (last quarter's MRR) —leading KPIs give the team time to intervene before the result is locked in, while trailing KPIs only confirm what already happened.
- ✓Ensure every KPI is actionable within one sprint —if the team cannot move it in 2 weeks, it is a north star (quarterly) not a KPI (weekly), and the team needs a leading indicator that provides daily direction.
- ✓Review and rotate KPIs quarterly as the business stage changes —pre-PMF companies KPI on learning (WAU), post-PMF on scaling (net new MRR), mature on defending (net revenue retention); using the wrong stage's KPI optimizes the wrong thing.