Back to Blog

Startup Growth Metrics: North Star Metric, Growth Accounting, and Cohort Analysis

Master startup growth metrics in 2026 — North Star Metric framework, growth accounting (new + expansion - contraction - churned MRR), cohort retention analysis,

Viprasol Tech Team
June 25, 2026
12 min read

Startup Growth Metrics: North Star Metric, Growth Accounting, and Cohort Analysis

Vanity metrics look good in investor decks but don't tell you whether the business is healthy. Total signups, page views, and gross revenue are symptoms, not drivers. The metrics that matter are the ones that predict where your business will be in 12 months.


North Star Metric

The North Star Metric (NSM) is the single number that best captures the value your product delivers to customers. It's not a financial metric — it measures user success, which leads to financial outcomes.

Good North Star Metrics:

  • Airbnb: Nights booked
  • Slack: Messages sent per DAU
  • Spotify: Time spent listening
  • Stripe: Payment volume processed
  • HubSpot: Contacts managed

What makes a good NSM:

  1. Measures customer value, not company revenue
  2. Every team can influence it
  3. It predicts long-term revenue
  4. It's a leading indicator, not lagging

Finding your NSM:

## NSM Discovery Framework

Step 1: What action do customers take when they get value from your product?
  (Not "they signed up" — what do they DO that creates value for them?)
  Example: "They set up their first automated workflow"

Step 2: What metric captures that action at scale?
  Example: "Active workflows running"

Step 3: Does this metric predict retention?
  Test: Do users with > X active workflows have significantly higher 90-day retention?
  If yes → you have a leading indicator

Step 4: Can every team affect it?
  - Product: make workflow setup easier
  - Marketing: acquire users who need automation
  - Customer Success: help users create more workflows
  If yes → it's a good organizational rallying point

Final check: Is there a simple number you'd put on a big dashboard
in the engineering room that tells you if this week was good or bad?

🚀 SaaS MVP in 8 Weeks — Seriously

We have launched 50+ SaaS platforms. Multi-tenant architecture, Stripe billing, auth, role-based access, and cloud deployment — all handled by one senior team.

  • Week 1–2: Architecture design + wireframes
  • Week 3–6: Core features built + tested
  • Week 7–8: Launch-ready on AWS/Vercel with CI/CD
  • Post-launch: Maintenance plans from month 3

Growth Accounting

Growth accounting decomposes MRR change into its components — showing you not just whether you grew, but why:

MRR Movement = New MRR + Expansion MRR - Contraction MRR - Churned MRR + Reactivation MRR
-- MRR movement query (PostgreSQL)
-- Requires: subscriptions table with monthly MRR snapshots

WITH monthly_mrr AS (
  SELECT
    tenant_id,
    DATE_TRUNC('month', period_start) AS month,
    SUM(mrr_cents) AS mrr_cents
  FROM subscription_periods
  GROUP BY 1, 2
),

mrr_movement AS (
  SELECT
    curr.month,
    curr.tenant_id,
    curr.mrr_cents AS current_mrr,
    COALESCE(prev.mrr_cents, 0) AS previous_mrr,
    CASE
      WHEN prev.mrr_cents IS NULL THEN 'new'
      WHEN curr.mrr_cents > prev.mrr_cents THEN 'expansion'
      WHEN curr.mrr_cents < prev.mrr_cents AND curr.mrr_cents > 0 THEN 'contraction'
      WHEN curr.mrr_cents = 0 OR curr.mrr_cents IS NULL THEN 'churned'
      ELSE 'flat'
    END AS movement_type,
    curr.mrr_cents - COALESCE(prev.mrr_cents, 0) AS delta_cents
  FROM monthly_mrr curr
  LEFT JOIN monthly_mrr prev
    ON curr.tenant_id = prev.tenant_id
    AND prev.month = curr.month - INTERVAL '1 month'
)

SELECT
  month,
  SUM(CASE WHEN movement_type = 'new' THEN delta_cents ELSE 0 END)         AS new_mrr,
  SUM(CASE WHEN movement_type = 'expansion' THEN delta_cents ELSE 0 END)   AS expansion_mrr,
  SUM(CASE WHEN movement_type = 'contraction' THEN delta_cents ELSE 0 END) AS contraction_mrr,
  SUM(CASE WHEN movement_type = 'churned' THEN -previous_mrr ELSE 0 END)   AS churned_mrr,
  SUM(delta_cents) AS net_new_mrr
FROM mrr_movement
GROUP BY month
ORDER BY month;

Reading growth accounting:

Month: May 2026
New MRR:        +$12,400  (acquired 45 new customers)
Expansion MRR:  +$3,200   (22 upgrades)
Contraction MRR: -$800    (5 downgrades)
Churned MRR:    -$4,100   (12 cancellations)
Net New MRR:    +$10,700

Growth rate: (+$10,700 / $156,000 beginning MRR) = 6.9% MoM ← healthy
Quick ratio: ($12,400 + $3,200) / ($800 + $4,100) = 3.2 ← good (>4 is excellent)

The Quick Ratio: (New + Expansion) / (Contraction + Churn). > 4 is excellent growth efficiency. < 1 means you're losing more than you're gaining.


Cohort Retention Analysis

Cohort analysis groups users by signup month and tracks what percentage remain active over time:

# scripts/cohort_analysis.py
import pandas as pd
import numpy as np
from sqlalchemy import create_engine

engine = create_engine(os.environ['DATABASE_URL'])

# Load subscription data
df = pd.read_sql("""
  SELECT
    tenant_id,
    DATE_TRUNC('month', first_paid_at) AS cohort_month,
    DATE_TRUNC('month', period_start)   AS activity_month,
    mrr_cents
  FROM subscription_periods
  WHERE first_paid_at IS NOT NULL
  ORDER BY 1, 2
""", engine)

# Build cohort table
cohort_pivot = df.pivot_table(
    index='cohort_month',
    columns='activity_month',
    values='tenant_id',
    aggfunc='nunique',
    fill_value=0,
)

# Convert to retention %
cohort_size = cohort_pivot.iloc[:, 0]  # Month 0 = cohort size
retention = cohort_pivot.div(cohort_size, axis=0).mul(100).round(1)

print("Cohort Retention (% of original cohort active)")
print(retention.to_string())

What healthy cohort retention looks like:

Cohort     M0    M1    M2    M3    M6    M12
Jan 2026  100%   82%   74%   70%   65%   58%  ← Consumer SaaS (flattens = healthy)
Feb 2026  100%   85%   79%   76%     -     -
Mar 2026  100%   88%   83%     -     -     -

If cohorts flatten → you have a retained core (LTV positive)
If cohorts continue declining → you have a leaky bucket (fix retention before growth)

MRR retention (Dollar Retention) vs user retention:

-- Net Dollar Retention by cohort
-- > 100% = expansion revenue exceeds churn (NRR > 100%)
SELECT
  cohort_month,
  month_number,
  SUM(mrr_cents) AS cohort_mrr,
  FIRST_VALUE(SUM(mrr_cents)) OVER (
    PARTITION BY cohort_month ORDER BY month_number
  ) AS initial_mrr,
  ROUND(
    100.0 * SUM(mrr_cents) / FIRST_VALUE(SUM(mrr_cents)) OVER (
      PARTITION BY cohort_month ORDER BY month_number
    ), 1
  ) AS dollar_retention_pct
FROM cohort_mrr_data
GROUP BY cohort_month, month_number
ORDER BY cohort_month, month_number;

💡 The Difference Between a SaaS Demo and a SaaS Business

Anyone can build a demo. We build SaaS products that handle real load, real users, and real payments — with architecture that does not need to be rewritten at 1,000 users.

  • Multi-tenant PostgreSQL with row-level security
  • Stripe subscriptions, usage billing, annual plans
  • SOC2-ready infrastructure from day one
  • We own zero equity — you own everything

Engagement Metrics: DAU/WAU/MAU

The ratio of DAU/MAU (Daily Active Users / Monthly Active Users) measures habit formation:

DAU/MAU RatioWhat It MeansExamples
> 50%Highly sticky product, daily habitSlack (63%), Facebook (66%)
25–50%Regular use, good engagementNotion, Linear
10–25%Weekly product, OK for categoryB2B tools used in workflows
< 10%Infrequent use, retention riskOne-off tools, report generators
// lib/engagement-metrics.ts
export async function getEngagementMetrics(
  period: { start: Date; end: Date },
): Promise<EngagementMetrics> {
  const [dau, wau, mau] = await Promise.all([
    // DAU: unique users who performed any meaningful action today
    db.events.groupBy({
      by: ['userId'],
      where: {
        createdAt: {
          gte: startOfDay(period.end),
          lte: period.end,
        },
        // Only count meaningful events (not page views)
        eventType: { in: ['feature_used', 'data_created', 'report_generated'] },
      },
    }).then(rows => rows.length),

    // WAU: last 7 days
    db.events.groupBy({
      by: ['userId'],
      where: {
        createdAt: { gte: subDays(period.end, 7), lte: period.end },
        eventType: { in: ['feature_used', 'data_created', 'report_generated'] },
      },
    }).then(rows => rows.length),

    // MAU: last 30 days
    db.events.groupBy({
      by: ['userId'],
      where: {
        createdAt: { gte: subDays(period.end, 30), lte: period.end },
        eventType: { in: ['feature_used', 'data_created', 'report_generated'] },
      },
    }).then(rows => rows.length),
  ]);

  return {
    dau,
    wau,
    mau,
    dauMauRatio: mau > 0 ? (dau / mau) * 100 : 0,
    wauMauRatio: mau > 0 ? (wau / mau) * 100 : 0,
  };
}

The Metrics Hierarchy

Metrics Priority for Stage

Pre-PMF (< $50K MRR): Focus: Engagement and retention

  • Weekly retention rate (do users come back?)
  • Time to value (when do users first succeed?)
  • NPS (do users recommend you?) Don't obsess over: MRR growth (fixing retention first)

Post-PMF ($50K–$1M MRR): Focus: Growth efficiency

  • MoM MRR growth rate (target: 15–25%)
  • Quick ratio (target: > 3)
  • CAC payback period (target: < 12 months)
  • NDR / NRR (target: > 100%)

Scale ($1M+ MRR): Focus: Unit economics and predictability

  • LTV:CAC ratio (target: > 3:1)
  • Gross margin (target: > 70%)
  • Rule of 40 (growth% + profit% > 40)
  • Burn multiple (net burn / net new ARR; target: < 1.5)

---

## Working With Viprasol

We help SaaS teams instrument their products correctly — event tracking pipelines, cohort analysis dashboards, growth accounting SQL, and the engineering behind metrics infrastructure that actually answers business questions.

→ [Talk to our team](/contact) about analytics and growth engineering.

---

See Also

Share this article:

About the Author

V

Viprasol Tech Team

Custom Software Development Specialists

The Viprasol Tech team specialises in algorithmic trading software, AI agent systems, and SaaS development. With 100+ projects delivered across MT4/MT5 EAs, fintech platforms, and production AI systems, the team brings deep technical experience to every engagement. Based in India, serving clients globally.

MT4/MT5 EA DevelopmentAI Agent SystemsSaaS DevelopmentAlgorithmic Trading

Building a SaaS Product?

We've helped launch 50+ SaaS platforms. Let's build yours — fast.

Free consultation • No commitment • Response within 24 hours

Viprasol · AI Agent Systems

Add AI automation to your SaaS product?

Viprasol builds custom AI agent crews that plug into any SaaS workflow — automating repetitive tasks, qualifying leads, and responding across every channel your customers use.