Если CAC у тебя больше LTV — бизнес умирает медленно. Если payback period 36 месяцев — venture-инвестор не глянет. Эти три метрики (LTV, CAC, Payback) — core юнит-экономики SaaS. На собесах в Yandex Cloud, Wildberries B2B, Tinkoff Business их спрашивают первым делом.
Этот гайд — практическое разложение трёх метрик с формулами, бенчмарками и SQL-запросами для cohort-расчёта.
Что такое юнит-экономика и зачем она аналитику
Юнит-экономика — это разложение выручки и расходов на единицу клиента (или подписки). Главный вопрос: «зарабатываем мы на одном клиенте или теряем?»
Если на одного клиента в среднем зарабатываем больше, чем тратим на его привлечение и обслуживание — бизнес масштабируется. Если меньше — каждый новый клиент углубляет яму.
Для SaaS три метрики критичны:
- LTV (Lifetime Value) — сколько денег принесёт клиент за всё время отношений.
- CAC (Customer Acquisition Cost) — сколько стоит привлечь одного клиента.
- Payback Period — за сколько месяцев клиент окупает свой CAC.
CAC — Customer Acquisition Cost
Формула:
CAC = (Marketing Spend + Sales Spend) / New Customers Acquired
Период расчёта: обычно квартал или месяц. Месяц шумнее, квартал стабильнее.
Что включаем в spend:
- Платная реклама (Я.Директ, VK Ads, Google в РФ через VPN — редко)
- Зарплаты sales-команды (commission часть!)
- Tools (CRM, marketing automation)
- Content-marketing (зарплата контент-команды)
Что НЕ включаем:
- Organic трафик из SEO (косвенный, сложно атрибутировать)
- Brand-маркетинг (это про awareness, не про conversion)
Пример SQL для blended CAC (PostgreSQL):
WITH spend_q AS (
SELECT
DATE_TRUNC('quarter', spend_date) AS q,
SUM(amount) AS total_spend
FROM marketing_spend
WHERE channel IN ('paid_ads', 'sales_salary', 'tools')
GROUP BY 1
),
new_customers_q AS (
SELECT
DATE_TRUNC('quarter', signup_date) AS q,
COUNT(DISTINCT customer_id) AS new_customers
FROM customers
WHERE plan_after_signup != 'free'
GROUP BY 1
)
SELECT
s.q,
s.total_spend,
c.new_customers,
ROUND(s.total_spend / NULLIF(c.new_customers, 0), 2) AS cac
FROM spend_q s
JOIN new_customers_q c USING (q)
ORDER BY s.q;
Где аналитики косячат
1. Считают CAC только по paid traffic. Если 60% клиентов приходят organic — CAC по paid сильно завышен относительно реальности.
2. Не разделяют по сегментам. Enterprise CAC может быть 50k₽, а SMB — 500₽. Усреднение скрывает проблемы.
3. Используют разную базу. Sales включают зарплаты в Q1, но не в Q2 — числа не сравнимы.
LTV — Lifetime Value
Простая формула (для подписочной модели):
LTV = ARPU × Gross Margin × (1 / Monthly Churn Rate)
Где:
- ARPU = Average Revenue Per User (ежемесячная выручка с клиента)
- Gross Margin = (Revenue − COGS) / Revenue (обычно 70–85% для SaaS)
- Monthly Churn Rate = доля клиентов, которые ушли за месяц
Что значит «1 / churn»?
Это математическое ожидание срока жизни. Если churn = 5%/мес, среднее время жизни = 1 / 0.05 = 20 месяцев.
Пример SQL для LTV в ClickHouse:
WITH
-- ARPU за период (3 месяца, чтобы сгладить)
arpu_calc AS (
SELECT
avg(monthly_revenue) AS arpu
FROM subscriptions_monthly
WHERE month >= today() - INTERVAL 3 MONTH
),
-- Monthly churn rate за тот же период
churn_calc AS (
SELECT
sum(churned) / sum(active_start) AS monthly_churn
FROM cohort_monthly
WHERE month >= today() - INTERVAL 3 MONTH
)
SELECT
arpu.arpu AS arpu_rub,
0.78 AS gross_margin, -- из P&L
churn.monthly_churn AS churn,
ROUND(arpu.arpu * 0.78 / churn.monthly_churn, 0) AS ltv_rub,
ROUND(1 / churn.monthly_churn, 1) AS lifetime_months
FROM arpu_calc arpu
CROSS JOIN churn_calc churn;
LTV pitfalls
1. Игнорируют gross margin. Считают LTV = ARPU / churn без учёта COGS. Для cloud-SaaS COGS может быть 30% (хостинг, инфра) — LTV без margin завышен.
2. Берут общий churn вместо когортного. Cohort-churn (доля ушедших из конкретной когорты за N месяцев) надёжнее, чем blended churn.
3. Не разделяют voluntary vs involuntary. Voluntary = клиент сам ушёл (продукт не понравился). Involuntary = карта истекла (тех. проблема). Влияют на разные команды.
Payback Period
Формула:
Payback Period = CAC / (ARPU × Gross Margin)
Это сколько месяцев нужно, чтобы клиент окупил расходы на своё привлечение.
Бенчмарки 2026 (источники: SaaSCapital, Bessemer State of SaaS):
| Категория | Хорошо | Норма | Плохо |
|---|---|---|---|
| SMB SaaS | <12 мес | 12–18 | >18 мес |
| Mid-market | <18 мес | 18–24 | >24 |
| Enterprise | <24 мес | 24–36 | >36 |
Связь с венчурным финансированием
Investors смотрят payback потому, что он = чистый сигнал sustainability. Если payback > 24 месяцев для SMB, нужно либо снижать CAC (better targeting), либо растить ARPU (price increases, expansion), либо это nice-to-have бизнес, а не venture-scale.
Шаг 1: Посчитать CAC за последние 3 квартала
Возьми SQL выше, прогони по своим данным. Получи 3 числа.
Шаг 2: Посчитать LTV в той же когорте
ARPU × Gross Margin × (1 / Churn). Будь честным с churn — берёт средний за 6 месяцев, не за последний месяц.
Шаг 3: Соотнести
- LTV / CAC ratio: хочешь 3:1 или выше для SaaS
- Payback months: хочешь <18 для SMB, <24 для mid
- CAC magic number (для PE):
(New ARR × Gross Margin) / CAC— должно быть >1.0
Шаг 4: Разрезать по сегментам
CAC и LTV сильно зависят от канала / сегмента / плана. Делай drill-down — где LTV/CAC лучшее? Туда направляй спенд.
Шаг 5: Защитить перед CFO
CFO спросит: «откуда брал ARPU?», «какой период churn'а?», «почему не считал organic?». Готовь ответы — это про честность методики, не про красивые цифры.
Главные ошибки (anti-patterns)
1. «Один LTV на всех». Реальный LTV сильно зависит от сегмента, тарифа, канала привлечения. Считай по cohort'ам и сравнивай.
2. «Payback < 6 месяцев — отлично». Возможно — но проверь, не слишком ли низкий CAC означает, что недоинвестируешь в рост. Иногда лучше payback 18 мес с большой growth-машиной, чем 3 мес с маленькой.
3. «Не учитывают expansion revenue». Если клиент тратит больше со временем (upsells, seats, usage) — LTV растёт нелинейно. Учитывай в формуле через NRR > 100%.
Частые вопросы
Какой LTV:CAC хороший?
3:1 — приемлемо. 4:1 и выше — отлично. <1:1 — ты сжигаешь деньги. >5:1 — возможно недоинвестируешь в growth (мог бы расти быстрее).
Как считать LTV когда есть expansion revenue?
Заменить ARPU на expanded ARPU = ARPU × NRR. Если NRR = 110% (классный SaaS), expanded ARPU = ARPU × 1.10 → LTV растёт пропорционально.
Что делать если payback period 30 месяцев?
Три рычага: (1) снижай CAC — better targeting, более узкие каналы; (2) расти ARPU — pricing увеличения, upsells, нерасполагающие плюшки; (3) снижай churn — onboarding, customer success, product улучшения.
Можно ли LTV считать просто как «средний месячный доход × средний срок жизни»?
Можно, но это gross LTV. Реальная экономика требует учёта gross margin — иначе ты завысишь LTV в 1.3–1.5×, что приведёт к плохим decisions по budget'у на CAC.
Что считать сначала — LTV или CAC?
CAC проще — спенд / клиенты. Начни с него, посчитай за квартал, сравни сегменты. LTV сложнее (надо знать churn, ARPU, margin) — но он критичнее для долгосрочных решений.
Связанные ресурсы
- 🧪 BI-песочница — собери дашборд LTV/CAC/Payback самостоятельно. 161 задача, AI-оценка
- 📊 Метрики SaaS — формулы и примеры — NRR, GRR, CAC Payback, MRR-growth
- 📝 Когортный анализ retention в SQL — SQL-фундамент для LTV
- 🎯 dbt incremental models — как считать cohort'ы инкрементально
- 🔬 A/B-тесты Python scipy — измеряй эффекты на LTV
- 💼 Топ-50 вопросов с собеса аналитика — LTV/CAC всегда спрашивают
Источники
- SaaS Capital: «What is a Good LTV:CAC Ratio?» (saascapital.com)
- Bessemer Venture Partners: «State of the Cloud Report» (bvp.com)
- David Skok: «Startup Killer: the Cost of Customer Acquisition» (forentrepreneurs.com)
Готов считать unit economics на своих данных? Открой /metrics — там 368 метрик с формулами + примерами SQL. Или /sandboxes/bi — собери дашборд по LTV/CAC, AI оценит подход.