Skip to main content

Growth Metrics Dashboard: A Founder's Playbook

CAC, LTV, and churn tracking for early-stage startups.

This guide shows you exactly what growth metrics to track, how to calculate them, and how to build a simple but trustworthy dashboard. It favors plain-English definitions, minimal assumptions, and formulas you can paste directly into a spreadsheet or your data warehouse.


What This Dashboard Is For​

A well-built growth dashboard isn't just a collection of charts; it's a decision-making engine. This playbook will help you:

  • See the health of your growth at a glance: Instantly understand your acquisition efficiency, the quality of your customer retention, and how quickly you're earning back your investment.
  • Decide where to invest your resources: Identify the channels, customer segments, and products that actually compound value, so you can double down on what works and cut what doesn't.
  • Create one source of truth: Build a dashboard that your finance, growth, and product teams can all stand behind, eliminating arguments over whose numbers are "right."

The Core Metrics (Definitions That Won’t Backfire)​

Using precise and consistent definitions is the foundation of a trustworthy dashboard.

Customer Acquisition Cost (CAC)​

CAC measures the cost of acquiring a single new customer. It's crucial to track both a blended and a paid version.

  • Blended CAC: The all-in cost. CAC = (All Sales & Marketing acquisition costs in period) ÷ (# new customers in period)
  • Paid CAC: Isolates the efficiency of your paid marketing channels. Paid CAC = (Media spend + agencies + creative tied to paid channels) ÷ (# new customers attributed to paid)

What to Include: All costs used for acquisition, including S&M salaries, commissions, benefits, software tools, agency fees, ad spend, creative development, and relevant contractor costs. What to Exclude: Customer Success or Support costs dedicated to retention, R&D expenses, and founder salaries (unless they are spending the majority of their time on acquisition activities). Attribution: Choose a simple model like first-touch or last-touch. The most important thing is to pick one, document it, and stick with it for consistency.

Lifetime Value (LTV)​

LTV estimates the total gross profit you will earn from a customer over their entire relationship with your company.

  • Quick, Subscription-Safe Approximation (Gross LTV): This formula is great for a quick health check. LTV = ARPA × Gross Margin % ÷ Monthly Logo Churn %

    • ARPA: Average Monthly Recurring Revenue (MRR) per active account in the period.
    • Use logo churn (customer churn) here, not revenue churn. This prevents expansion revenue from masking underlying retention problems.
  • More Precise (Discounted, Cohort-Based): This method is more complex but far more accurate, as it accounts for the time value of money. It sums the monthly gross profit for a given cohort over its lifetime, discounted by a rate d (typically 10-15% annually). LTV = Σ_t (ARPA_t × Gross Margin % × Survival_t) / (1 + d)^(t/12)

Churn & Retention (Track Both Customer and Revenue)​

You need to track both how many customers you lose (logo churn) and how much revenue you lose (revenue churn).

  • Logo Churn (Customers): The percentage of customers who cancel. Monthly Logo Churn % = (Customers churned this month) ÷ (Customers at start of month)
  • Gross Revenue Churn: The percentage of MRR lost from cancellations and downgrades. This is a pure measure of revenue leakage. Gross Revenue Churn % = (Churn MRR + Contraction MRR) ÷ Start-of-month MRR
  • Net Revenue Retention (NRR): The holy grail of SaaS metrics. It shows your revenue growth from your existing customer base, factoring in churn, contraction, and expansion. An NRR over 100% means your business grows even without adding new customers. NRR = (Start MRR − Churn MRR − Contraction MRR + Expansion MRR) ÷ Start MRR
  • Involuntary vs. Voluntary Churn: It's critical to separate customers who actively choose to cancel ("I don't want it") from those who churn due to a failed payment. High involuntary churn often points to correctable issues in your dunning process.

CAC Payback & LTV:CAC Ratio​

These two metrics connect your acquisition costs to your unit economics.

  • CAC Payback Period (in months): How long it takes to earn back the cost of acquiring a customer. Payback = CAC ÷ (ARPA × Gross Margin % − Avg variable success cost per account)
  • LTV:CAC Ratio: The relationship between a customer's lifetime value and their acquisition cost. A common rule-of-thumb is to aim for a ratio of ≥ 3:1. A healthy business should generate at least $3 of lifetime value for every $1 spent on acquisition. Payback should ideally be < 12–18 months for SMB customers or < 24 months for mid-market/enterprise.

What the Dashboard Should Show (Layout)​

Organize your dashboard into three layers, moving from high-level KPIs to granular diagnostics.

  • Top Row (Key Performance Indicators): Your at-a-glance health check.
    • New Customers | New MRR | NRR (trailing 3 & 12 months)
    • CAC (blended + paid) | CAC Payback (months) | LTV:CAC
  • Middle Row (Trends): How your core metrics are evolving over time.
    • A line chart showing CAC & Payback Period over time.
    • A line chart showing Logo Churn % and Gross Revenue Churn %.
    • A stacked bar chart visualizing your MRR movements: Expansion vs. Contraction vs. Churn.
  • Bottom Row (Diagnostics): The "why" behind the trends.
    • Cohort Heatmaps: One for customer retention and another for revenue retention, showing performance by signup month. This is the best way to see if your product and retention are actually improving.
    • Channel Performance Table: A breakdown by acquisition channel showing Spend, New Customers, CAC, 90-day Retention, and LTV:CAC.
    • Churn Reasons: A pie or bar chart showing the top 5 reasons for churn, with trends.

Data You Need (Minimal Model)​

To power this dashboard, you'll need to collect and structure data from a few key sources.

  • customers: customer_id, signup_date, plan, segment, country, channel, sales_owner
  • subscriptions: customer_id, term_start, term_end, status, plan, seats, list_price, discount
  • subscription_events (strongly recommended): event_date, customer_id, event_type (new|upgrade|downgrade|churn|reactivate), mrr_delta
  • invoices/payments: invoice_id, customer_id, service_period_start, service_period_end, amount, cogs_if_any
  • ad_spend: date, channel, campaign, cost
  • s&m_costs: month, cost_type, amount, attributable_to (acquisition|retention)
  • churn_survey: customer_id, churn_date, reason_code, free_text

Pro Tip: Keep everything in monthly buckets for the dashboard view, but store the underlying events at daily granularity for more flexible analysis.


Spreadsheet Formulas (Copy/Paste)​

For a simple spreadsheet model, create a sheet for each month and use these formulas:

  • ARPA = Start_MRR / Start_Customers
  • Logo_Churn_% = Churned_Customers / Start_Customers
  • Gross_Revenue_Churn_% = (Churn_MRR + Contraction_MRR) / Start_MRR
  • NRR = (Start_MRR - Churn_MRR - Contraction_MRR + Expansion_MRR) / Start_MRR
  • CAC_Blended = (S&M_Acq_Costs) / New_Customers
  • Payback_Months = CAC_Blended / (ARPA * Gross_Margin_% - Variable_Success_Cost_per_Customer)
  • LTV_Gross = ARPA * Gross_Margin_% / Logo_Churn_%
  • LTV_to_CAC = LTV_Gross / CAC_Blended

Important: Always compute churn rates against the start-of-month base, excluding new customers from the denominator. This prevents new signups from artificially lowering your churn rate for the period.


SQL You Can Adapt (Postgres)​

For a more robust setup, use these SQL queries as a starting point.

1) MRR Flows Per Month This query calculates the start-of-month MRR and the key movements (new, expansion, contraction, churn) for each month.

WITH m AS (
  SELECT
    date_trunc('month', event_date) AS month,
    SUM(CASE WHEN event_type = 'new' THEN mrr_delta ELSE 0 END)       AS new_mrr,
    SUM(CASE WHEN event_type = 'upgrade' THEN mrr_delta ELSE 0 END)   AS expansion_mrr,
    SUM(CASE WHEN event_type = 'downgrade' THEN -mrr_delta ELSE 0 END) AS contraction_mrr,
    SUM(CASE WHEN event_type = 'churn' THEN -mrr_delta ELSE 0 END)    AS churn_mrr
  FROM subscription_events
  GROUP BY 1
),
base AS (
  SELECT
    month,
    SUM(new_mrr + expansion_mrr - contraction_mrr - churn_mrr)
      OVER (ORDER BY month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS end_mrr
  FROM m
)
SELECT
  m.month,
  LAG(end_mrr, 1, 0) OVER (ORDER BY m.month) AS start_mrr,
  m.new_mrr, m.expansion_mrr, m.contraction_mrr, m.churn_mrr
FROM m
JOIN base b ON b.month = m.month
ORDER BY m.month;

2) Logo Churn Rate This query calculates the monthly customer churn rate based on active customers at the start of the month.

WITH actives AS (
  SELECT date_trunc('month', s.term_start) AS month, s.customer_id
  FROM subscriptions s
  WHERE s.status = 'active'
  GROUP BY 1,2
),
churns AS (
  SELECT date_trunc('month', se.event_date) AS month, se.customer_id
  FROM subscription_events se
  WHERE se.event_type = 'churn'
)
SELECT
  a.month,
  COUNT(DISTINCT a.customer_id)                                  AS start_customers,
  COUNT(DISTINCT c.customer_id)                                  AS churned_customers,
  COUNT(DISTINCT c.customer_id)::decimal /
    NULLIF(COUNT(DISTINCT a.customer_id),0)                      AS logo_churn_pct
FROM actives a
LEFT JOIN churns c
  ON c.customer_id = a.customer_id AND c.month = a.month
GROUP BY 1
ORDER BY 1;

3) Channel CAC (Blended and Paid) This query calculates both blended and paid CAC for each acquisition channel.

WITH new_logos AS (
  SELECT date_trunc('month', signup_date) AS month, channel, COUNT(*) AS new_customers
  FROM customers
  GROUP BY 1,2
),
paid_spend AS (
  SELECT date_trunc('month', date) AS month, channel, SUM(cost) AS spend
  FROM ad_spend
  GROUP BY 1,2
),
s_and_m AS (
  SELECT month, SUM(amount) AS acq_costs
  FROM s_m_costs
  WHERE attributable_to = 'acquisition'
  GROUP BY 1
)
SELECT
  n.month,
  n.channel,
  n.new_customers,
  COALESCE(p.spend,0)                                  AS paid_spend,
  CASE WHEN n.new_customers > 0
       THEN COALESCE(p.spend,0)::decimal / n.new_customers
       ELSE NULL END                                   AS paid_cac,
  s.acq_costs,
  CASE WHEN (SELECT SUM(new_customers) FROM new_logos WHERE month = n.month) > 0
       THEN s.acq_costs::decimal / (SELECT SUM(new_customers) FROM new_logos WHERE month = n.month)
       ELSE NULL END                                   AS blended_cac
FROM new_logos n
LEFT JOIN paid_spend p ON p.month = n.month AND p.channel = n.channel
LEFT JOIN s_and_m s ON s.month = n.month
ORDER BY n.month, n.channel;

4) Cohort Revenue Retention Heatmap This query generates the data for a revenue retention heatmap, showing the percentage of initial MRR retained over time for each monthly signup cohort.

WITH firsts AS (
  SELECT customer_id, date_trunc('month', MIN(signup_date)) AS cohort_month
  FROM customers
  GROUP BY 1
),
mrr_by_month AS (
  SELECT date_trunc('month', event_date) AS month, customer_id,
         SUM(mrr_delta) OVER (PARTITION BY customer_id ORDER BY event_date
              ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS mrr
  FROM subscription_events
),
cohorts AS (
  SELECT f.cohort_month, m.month,
         EXTRACT(YEAR FROM age(m.month, f.cohort_month)) * 12 +
         EXTRACT(MONTH FROM age(m.month, f.cohort_month))       AS months_since,
         SUM(GREATEST(m.mrr,0))                                  AS cohort_mrr
  FROM firsts f
  JOIN mrr_by_month m USING (customer_id)
  GROUP BY 1,2,3
)
SELECT cohort_month, months_since,
       cohort_mrr / NULLIF(MAX(CASE WHEN months_since = 0 THEN cohort_mrr END)
                           OVER (PARTITION BY cohort_month),0)   AS revenue_retention
FROM cohorts
ORDER BY cohort_month, months_since;

Instrumentation Checklist (Don’t Skip This)​

Good data in, good metrics out. Ensure your product and systems are instrumented to capture these critical events:

  • UTMs: Track UTM parameters on every signup path and save them to the account record at the moment of creation.
  • Cancel Event: When a customer churns, capture a structured reason_code and offer an optional free-text field.
  • Dunning Events: Track payment retries and their success/failure to properly identify and analyze involuntary churn.
  • Seat/Plan Changes: Log seat changes and plan upgrades/downgrades as distinct events, each with an associated mrr_delta.
  • Reactivation: Explicitly track customer reactivations. A returning customer is not a "new" customer.
  • Financials: Store the price and discount on each invoice line. If you have significant variable costs (e.g., infrastructure, AI model inference, third-party API fees), store the associated COGS.

Segmentation That Actually Helps Decisions​

Never rely solely on blended, company-wide metrics. Segment your data to uncover hidden truths about your business. Analyze your core metrics (CAC, LTV, Churn) by:

  • Plan / ACV Band: e.g., less than $1k, $1–10k, $10–100k annual contract value.
  • Channel: Paid search, content, partner, outbound sales, etc.
  • ICP Fit: Your ideal customer profile vs. non-ICP customers.
  • Go-to-Market Motion: Self-serve vs. sales-led.
  • Region: If pricing, competition, or user behavior differs significantly.

You will almost always find that some segments are highly profitable while others are a drag on your overall metrics.


Review Cadence​

Integrate this dashboard into your team's operating rhythm.

  • Weekly: Review high-velocity metrics like CAC trends, New MRR, the Expansion vs. Churn MRR chart, and the top churn reasons.
  • Monthly: Dive deeper into NRR (trailing 3-month and 12-month), CAC Payback, and LTV:CAC. Use these to review channel and segment performance.
  • Quarterly: Analyze the Cohort Retention curves to assess long-term product health. Use this meeting to sanity-check your attribution model and discuss the impact of pricing and packaging changes.

Benchmarks (Rules of Thumb)​

While every business is different, here are some common benchmarks for healthy SaaS companies.

  • LTV:CAC: A ratio of ≥ 3:1 is considered healthy. A ratio > 5:1 might suggest you are under-investing in growth.
  • CAC Payback: Aim for < 12–18 months for SMB/PLG models and < 24 months for enterprise sales.
  • Monthly Logo Churn: For SMBs, 2–4% is common; for mid-market, 1–2%; for enterprise, &lt;1%.
  • NRR: For SMBs, 90–110%; for mid-market, 100–120% or more; for enterprise, 110–130% or more.

Remember: Write down your own targets. Compare against yourself first, the market second.


Common Pitfalls (And How to Avoid Them)​

  • Mixing revenue and customer churn in the same formula. → Always use the right numerator and denominator (customers for logo churn, revenue for revenue churn).
  • Using revenue churn for LTV when you have expansion. → This will dramatically inflate your LTV. Use logo churn for the simple LTV formula or build a proper cohort-based LTV model.
  • Counting bookings or cash as MRR. → Recognize revenue over the service delivery period, not when the cash hits the bank.
  • Ignoring stock-based compensation and tools in CAC. → This understates your true customer acquisition cost.
  • Averaging churn rates across months. → This is mathematically incorrect. Prefer cohort curves or always compute churn on the start-of-period base.
  • Attribution thrashing. → Switching attribution models every month makes your data impossible to compare over time. Pick one, document when you make changes, and version your metrics.

“Good → Better → Best” Implementation​

You don't need a perfect data stack on day one. Start simple and evolve.

  • Good (1–2 hours):
    • A Google Sheet with monthly manual inputs for New Customers, MRR flows, and S&M costs.
    • Use the formulas from this guide. Manually track UTMs and churn reasons.
  • Better (1–2 days):
    • A Postgres or BigQuery database connected to a BI tool like Metabase or Looker Studio.
    • Automate a subscription_events table and ingest ad spend data via an API. Build the cohort heatmap visualizations.
  • Best (1–2 weeks):
    • Use a tool like dbt to create version-controlled data models and write tests for data integrity.
    • Use a BI tool like Mode or Looker with governed data "explores" to enable self-service analysis. Implement historical data backfills and discounted LTV calculations.

Minimal Metrics Dictionary (Paste into Your Wiki)​

Use this table to ensure everyone in your company is speaking the same language.

MetricDefinitionNotes
CAC (blended)S&M acquisition costs ÷ new customersIncludes salaries, tools, agencies, ads, commissions
CAC (paid)Paid media costs ÷ paid-sourced new customersUse a consistent attribution window
LTV (gross)ARPA × GM% ÷ monthly logo churnOK for sanity checks; document your GM% assumption
CAC paybackCAC ÷ (ARPA × GM% − variable success cost)Measured in months; segment by plan/ACV
Logo churn %Churned customers ÷ start-of-month customersExclude new customers from the denominator
Gross rev. churn %(Churn MRR + Contraction MRR) ÷ Start MRRExpansion revenue is excluded
NRR(Start MRR − Churn − Contraction + Expansion) ÷ Start MRRTrack Trailing 3-Month (T3M) and T12M

What to Decide Once This Is Live​

Your dashboard is live. Now what? Use it to answer critical business questions:

  • Scale or cut channels based on their paid CAC and, more importantly, their 90-day retention.
  • Adjust pricing and packaging if you see that expansion MRR is flat and contraction MRR is rising.
  • Invest in onboarding and customer success if voluntary churn is high. If involuntary churn is high, fix your payment and dunning systems first.
  • Tighten your ICP definition if you find that non-ICP segments are consistently dragging your LTV:CAC ratio below your target.

Set up accounting you can trust

Start a free ledger now, or use the startup guide and founder community when you want more context.