본문으로 건너뛰기

성장 지표 대시보드: 창업자를 위한 플레이북

초기 단계 스타트업을 위한 CAC, LTV, 이탈률 추적.

이 가이드는 추적해야 할 성장 지표, 계산 방법, 간단하면서도 신뢰할 수 있는 대시보드를 구축하는 방법을 정확하게 보여줍니다. 평이한 영어 정의, 최소한의 가정, 스프레드시트나 데이터 웨어하우스에 직접 붙여넣을 수 있는 공식을 선호합니다.


이 대시보드의 용도​

잘 구축된 성장 대시보드는 단순히 차트 모음이 아니라 의사 결정 엔진입니다. 이 플레이북은 다음을 수행하는 데 도움이 됩니다.

  • 성장 상태를 한눈에 파악: 획득 효율성, 고객 유지 품질, 투자 회수 속도를 즉시 이해합니다.
  • 리소스 투자 위치 결정: 실제로 가치를 높이는 채널, 고객 세그먼트, 제품을 식별하여 효과적인 부분에 집중하고 그렇지 않은 부분을 줄일 수 있습니다.
  • 단일 정보 출처 생성: 재무, 성장, 제품 팀 모두가 지지할 수 있는 대시보드를 구축하여 숫자가 "옳은"지 여부에 대한 논쟁을 없앱니다.

핵심 지표 (역효과가 없는 정의)​

정확하고 일관된 정의를 사용하는 것은 신뢰할 수 있는 대시보드의 기본입니다.

고객 획득 비용 (CAC)​

CAC는 새로운 고객 1명을 확보하는 데 드는 비용을 측정합니다. 혼합 버전과 유료 버전을 모두 추적하는 것이 중요합니다.

  • 혼합 CAC: 모든 비용을 포함합니다. CAC = (특정 기간의 모든 판매 및 마케팅 획득 비용) ÷ (특정 기간의 신규 고객 수)
  • 유료 CAC: 유료 마케팅 채널의 효율성을 분리합니다. 유료 CAC = (미디어 지출 + 대행사 + 유료 채널 관련 크리에이티브) ÷ (유료 채널로 인한 신규 고객 수)

포함할 사항: S&M 급여, 수수료, 복리후생, 소프트웨어 도구, 대행사 수수료, 광고 지출, 크리에이티브 개발, 관련 계약자 비용을 포함하여 _획득_에 사용되는 모든 비용. 제외할 사항: _유지_를 위한 고객 성공 또는 지원 비용, R&D 비용 및 창업자 급여 (창업자가 대부분의 시간을 획득 활동에 보내지 않는 한). 귀속: 첫 번째 터치 또는 마지막 터치와 같은 간단한 모델을 선택합니다. 가장 중요한 것은 일관성을 위해 하나를 선택하고 문서화하고 고수하는 것입니다.

평생 가치 (LTV)​

LTV는 고객이 회사와의 전체 관계를 통해 얻을 총 이익을 추정합니다.

  • 빠르고 구독에 안전한 근사 (총 LTV): 이 공식은 빠른 상태 확인에 적합합니다. LTV = ARPA × 총 마진 % ÷ 월별 로고 이탈률 %

    • ARPA: 해당 기간의 활성 계정당 평균 월간 반복 수익 (MRR).
    • 여기서는 수익 이탈이 아닌 로고 이탈(고객 이탈)을 사용하십시오. 이렇게 하면 확장 수익이 기본 유지 문제를 가리는 것을 방지할 수 있습니다.
  • 더 정확함 (할인, 코호트 기반): 이 방법은 더 복잡하지만 화폐의 시간 가치를 고려하므로 훨씬 더 정확합니다. 수명 동안 주어진 코호트의 월별 총 이익을 합산하여 비율 d(일반적으로 연간 10-15%)로 할인합니다. LTV = Σ_t (ARPA_t × 총 마진 % × 생존_t) / (1 + d)^(t/12)

이탈 및 유지 (고객과 수익 모두 추적)​

얼마나 많은 고객을 잃는지 (로고 이탈)와 얼마나 많은 수익을 잃는지 (수익 이탈)를 모두 추적해야 합니다.

  • 로고 이탈 (고객): 취소하는 고객의 백분율. 월별 로고 이탈률 % = (이번 달에 이탈한 고객 수) ÷ (월초의 고객 수)
  • 총 수익 이탈: 취소 및 다운그레이드로 인해 손실된 MRR의 백분율. 이는 순수한 수익 누출 측정입니다. 총 수익 이탈률 % = (이탈 MRR + 축소 MRR) ÷ 월초 MRR
  • 순수익 유지율 (NRR): SaaS 지표의 성배. 이 지표는 이탈, 축소 및 확장을 고려하여 기존 고객 기반에서 발생하는 수익 성장을 보여줍니다. 100%가 넘는 NRR은 신규 고객을 추가하지 않아도 비즈니스가 성장한다는 의미입니다. NRR = (시작 MRR − 이탈 MRR − 축소 MRR + 확장 MRR) ÷ 시작 MRR
  • 비자발적 이탈 대 자발적 이탈: 고객이 적극적으로 취소하도록 선택한 고객("원하지 않음")과 결제 실패로 인해 이탈한 고객을 분리하는 것이 중요합니다. 높은 비자발적 이탈은 종종 더닝 프로세스의 수정 가능한 문제를 지적합니다.

CAC 회수 및 LTV:CAC 비율​

이 두 지표는 획득 비용을 단위 경제학과 연결합니다.

  • CAC 회수 기간 (월): 고객 획득 비용을 회수하는 데 걸리는 시간입니다. 회수 = CAC ÷ (ARPA × 총 마진 % − 계정당 평균 가변 성공 비용)
  • LTV:CAC 비율: 고객의 평생 가치와 획득 비용 간의 관계. 일반적인 경험 법칙은 ≥ 3:1의 비율을 목표로 하는 것입니다. 건강한 비즈니스는 획득에 지출한 1달러당 최소 3달러의 평생 가치를 창출해야 합니다. 회수는 SMB 고객의 경우 < 12–18개월, 중견/대기업의 경우 < 24개월이 이상적입니다.

대시보드에 표시해야 할 사항 (레이아웃)​

대시보드를 세 개의 레이어로 구성하여 높은 수준의 KPI에서 세분화된 진단으로 이동합니다.

  • 상단 행 (핵심 성과 지표): 한눈에 볼 수 있는 상태 확인.
    • 신규 고객 | 신규 MRR | NRR (최근 3개월 및 12개월)
    • CAC (혼합 + 유료) | CAC 회수 (월) | LTV:CAC
  • 중간 행 (추세): 핵심 지표가 시간이 지남에 따라 어떻게 진화하는지.
    • 시간이 지남에 따른 CAC 및 회수 기간을 보여주는 선 차트.
    • 로고 이탈률 % 및 총 수익 이탈률 %를 보여주는 선 차트.
    • 확장 vs. 축소 vs. 이탈이라는 MRR 이동을 시각화하는 누적 막대 차트.
  • 하단 행 (진단): 추세의 "이유".
    • 코호트 히트맵: 고객 유지 및 수익 유지를 위한 것으로, 가입 월별 성과를 보여줍니다. 이것은 제품 및 유지가 실제로 개선되고 있는지 확인하는 가장 좋은 방법입니다.
    • 채널 성과 표: 지출, 신규 고객, CAC, 90일 유지율 및 LTV:CAC를 보여주는 획득 채널별 분석.
    • 이탈 이유: 추세와 함께 상위 5가지 이탈 이유를 보여주는 원형 또는 막대 차트.

필요한 데이터 (최소 모델)​

이 대시보드를 구동하려면 몇 가지 주요 소스에서 데이터를 수집하고 구성해야 합니다.

  • 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 (강력히 권장): 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

전문가 팁: 대시보드 보기를 위해 모든 것을 월별 버킷에 보관하되, 보다 유연한 분석을 위해 기본 이벤트를 일별 세분성으로 저장합니다.


스프레드시트 공식 (복사/붙여넣기)​

간단한 스프레드시트 모델의 경우 각 월별 시트를 만들고 다음 공식을 사용합니다.

  • ARPA = 시작_MRR / 시작_고객
  • 로고_이탈_% = 이탈한_고객 / 시작_고객
  • 총_수익_이탈_% = (이탈_MRR + 축소_MRR) / 시작_MRR
  • NRR = (시작_MRR - 이탈_MRR - 축소_MRR + 확장_MRR) / 시작_MRR
  • CAC_혼합 = (S&M_획득_비용) / 신규_고객
  • 회수_월 = CAC_혼합 / (ARPA * 총_마진_% - 고객당_가변_성공_비용)
  • LTV_총 = ARPA * 총_마진_% / 로고_이탈_%
  • LTV_대_CAC = LTV_총 / CAC_혼합

중요: 항상 월초 기준에 대해 이탈률을 계산하고 분모에서 신규 고객을 제외합니다. 이렇게 하면 새 가입이 해당 기간의 이탈률을 인위적으로 낮추는 것을 방지할 수 있습니다.


적응할 수 있는 SQL (Postgres)​

보다 강력한 설정을 위해 다음 SQL 쿼리를 시작점으로 사용합니다.

1) 월별 MRR 흐름 이 쿼리는 월초 MRR과 각 월의 주요 이동 (신규, 확장, 축소, 이탈)을 계산합니다.

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) 로고 이탈률 이 쿼리는 월초의 활성 고객을 기준으로 월별 고객 이탈률을 계산합니다.

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) 채널 CAC (혼합 및 유료) 이 쿼리는 각 획득 채널에 대한 혼합 CAC와 유료 CAC를 모두 계산합니다.

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) 코호트 수익 유지 히트맵 이 쿼리는 각 월별 가입 코호트에 대해 시간이 지남에 따라 유지되는 초기 MRR의 백분율을 보여주는 수익 유지 히트맵에 대한 데이터를 생성합니다.

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;

계측 체크리스트 (이것을 건너뛰지 마십시오)​

좋은 데이터 입력, 좋은 지표 출력. 제품 및 시스템이 이러한 중요한 이벤트를 캡처하도록 계측되었는지 확인합니다.

  • UTM: 모든 가입 경로에서 UTM 매개변수를 추적하고 생성 시 계정 기록에 저장합니다.
  • 취소 이벤트: 고객이 이탈하면 구조화된 reason_code를 캡처하고 선택적 자유 텍스트 필드를 제공합니다.
  • 더닝 이벤트: 비자발적 이탈을 적절하게 식별하고 분석하기 위해 결제 재시도와 성공/실패를 추적합니다.
  • 좌석/요금제 변경: 좌석 변경 및 요금제 업그레이드/다운그레이드를 각각 mrr_delta와 연결된 개별 이벤트로 기록합니다.
  • 재활성화: 고객 재활성화를 명시적으로 추적합니다. 돌아온 고객은 "새로운" 고객이 아닙니다.
  • 재무: 각 송장 라인에 price 및 discount를 저장합니다. 상당한 가변 비용 (예: 인프라, AI 모델 추론, 타사 API 수수료)이 있는 경우 관련 COGS를 저장합니다.

실제로 의사 결정에 도움이 되는 세분화​

혼합된 회사 전체 지표에만 의존하지 마십시오. 데이터를 세분화하여 비즈니스에 대한 숨겨진 진실을 밝혀내십시오. 핵심 지표 (CAC, LTV, 이탈)를 다음 기준으로 분석합니다.

  • 요금제 / ACV 대역: 예: 연간 계약 가치가 1,000달러 미만, 1–10,000달러, 10–100,000달러.
  • 채널: 유료 검색, 콘텐츠, 파트너, 아웃바운드 판매 등.
  • ICP 적합성: 이상적인 고객 프로필과 비 ICP 고객.
  • 시장 진출 방식: 셀프 서비스 대 영업 주도.
  • 지역: 가격 책정, 경쟁 또는 사용자 행동이 크게 다른 경우.

일부 세그먼트는 매우 수익성이 높지만 다른 세그먼트는 전체 지표에 부담이 된다는 것을 거의 항상 알 수 있습니다.


검토 주기​

이 대시보드를 팀의 운영 리듬에 통합합니다.

  • 주간: CAC 추세, 신규 MRR, 확장 vs. 이탈 MRR 차트 및 상위 이탈 이유와 같은 고속 지표를 검토합니다.
  • 월간: NRR (최근 3개월 및 12개월), CAC 회수 및 LTV:CAC를 자세히 살펴보십시오. 이를 사용하여 채널 및 세그먼트 성과를 검토합니다.
  • 분기별: 코호트 유지 곡선을 분석하여 장기적인 제품 상태를 평가합니다. 이 회의를 사용하여 귀속 모델을 검증하고 가격 책정 및 패키징 변경의 영향을 논의합니다.

벤치마크 (경험 법칙)​

모든 비즈니스는 다르지만 건강한 SaaS 회사를 위한 몇 가지 일반적인 벤치마크는 다음과 같습니다.

  • LTV:CAC: ≥ 3:1의 비율은 건강한 것으로 간주됩니다. > 5:1의 비율은 성장에 과소 투자하고 있음을 시사할 수 있습니다.
  • CAC 회수: SMB/PLG 모델의 경우 < 12–18개월, 엔터프라이즈 판매의 경우 < 24개월을 목표로 합니다.
  • 월별 로고 이탈: SMB의 경우 2–4%가 일반적입니다. 중견 기업의 경우 1–2%; 엔터프라이즈의 경우 &lt;1%.
  • NRR: SMB의 경우 90–110%; 중견 기업의 경우 100–120% 이상; 엔터프라이즈의 경우 110–130% 이상.

기억하십시오: 자신의 목표를 적어 두십시오. 자신과 먼저 비교하고 시장과 나중에 비교하십시오.


일반적인 함정 (및 피하는 방법)​

  • 동일한 공식에서 수익과 고객 이탈을 혼합합니다. → 항상 올바른 분자와 분모 (로고 이탈의 경우 고객, 수익 이탈의 경우 수익)를 사용합니다.
  • 확장이 있는 경우 LTV에 수익 이탈을 사용합니다. → 이렇게 하면 LTV가 크게 부풀려집니다. 간단한 LTV 공식에는 로고 이탈을 사용하거나 적절한 코호트 기반 LTV 모델을 구축합니다.
  • 예약 또는 현금을 MRR로 계산합니다. → 현금이 은행에 들어올 때가 아니라 서비스 제공 기간 동안 수익을 인식합니다.
  • CAC에서 주식 기반 보상 및 도구를 무시합니다. → 이렇게 하면 실제 고객 획득 비용이 과소 평가됩니다.
  • 월별 이탈률을 평균화합니다. → 이것은 수학적으로 부정확합니다. 코호트 곡선을 선호하거나 항상 기간 시작 기준에 대해 이탈을 계산합니다.
  • 귀속 스래싱. → 매달 귀속 모델을 전환하면 시간이 지남에 따라 데이터를 비교할 수 없습니다. 하나를 선택하고 변경 시기를 문서화하고 지표를 버전 관리합니다.

"좋음 → 더 좋음 → 최고" 구현​

첫날부터 완벽한 데이터 스택이 필요하지 않습니다. 간단하게 시작하고 진화하십시오.

  • 좋음 (1–2시간):
    • 신규 고객, MRR 흐름 및 S&M 비용에 대한 월별 수동 입력이 있는 Google 시트.
    • 이 가이드의 공식을 사용합니다. UTM 및 이탈 이유를 수동으로 추적합니다.
  • 더 좋음 (1–2일):
    • Metabase 또는 Looker Studio와 같은 BI 도구에 연결된 Postgres 또는 BigQuery 데이터베이스.
    • subscription_events 테이블을 자동화하고 API를 통해 광고 지출 데이터를 수집합니다. 코호트 히트맵 시각화를 구축합니다.
  • 최고 (1–2주):
    • dbt와 같은 도구를 사용하여 버전 제어된 데이터 모델을 만들고 데이터 무결성에 대한 테스트를 작성합니다.
    • 관리되는 데이터 "탐색"을 통해 셀프 서비스 분석을 가능하게 하는 Mode 또는 Looker와 같은 BI 도구를 사용합니다. 과거 데이터 백필 및 할인된 LTV 계산을 구현합니다.

최소 지표 사전 (Wiki에 붙여넣기)​

이 표를 사용하여 회사 내 모든 사람이 동일한 언어를 사용하고 있는지 확인합니다.

지표정의참고
CAC (혼합)S&M 획득 비용 ÷ 신규 고객급여, 도구, 대행사, 광고, 수수료 포함
CAC (유료)유료 미디어 비용 ÷ 유료 소스 신규 고객일관된 귀속 기간 사용
LTV (총)ARPA × GM% ÷ 월별 로고 이탈상태 확인에 적합; GM% 가정 문서화
CAC 회수CAC ÷ (ARPA × GM% − 가변 성공 비용)월 단위로 측정; 요금제/ACV별 세그먼트
로고 이탈 %이탈한 고객 ÷ 월초 고객분모에서 신규 고객 제외
총 수익 이탈 %(이탈 MRR + 축소 MRR) ÷ 시작 MRR확장 수익 제외
NRR(시작 MRR − 이탈 − 축소 + 확장) ÷ 시작 MRR후행 3개월 (T3M) 및 T12M 추적

라이브 후 결정해야 할 사항​

대시보드가 라이브 상태입니다. 이제 무엇을 해야 할까요? 이를 사용하여 중요한 비즈니스 질문에 답변하십시오.

  • 유료 CAC 및 더 중요한 _90일 유지_에 따라 채널을 확장하거나 삭감합니다.
  • 확장 MRR이 평평하고 축소 MRR이 증가하는 경우 가격 책정 및 패키징을 조정합니다.
  • 자발적 이탈이 높은 경우 온보딩 및 고객 성공에 투자합니다. 비자발적 이탈이 높은 경우 먼저 결제 및 더닝 시스템을 수정하십시오.
  • 비 ICP 세그먼트가 지속적으로 LTV:CAC 비율을 목표 이하로 끌어내리는 경우 ICP 정의를 강화합니다.

신뢰할 수 있는 회계 체계를 구축하세요

지금 무료 장부를 시작하거나, 더 자세한 맥락이 필요할 때 스타트업 가이드와 창업자 커뮤니티를 활용하세요.