Метрики продукта: DAU, MAU, ARPU, LTV
Зачем аналитику знать продуктовые метрики
На собеседованиях аналитиков продуктовые метрики спрашивают в каждом втором интервью. Причём недостаточно просто назвать формулу DAU или ARPU — от вас ждут понимания, как метрики связаны, когда какую использовать и какие подводные камни скрываются за простыми определениями.
В этой статье разберём основные метрики: DAU/WAU/MAU, Stickiness, ARPU/ARPPU, LTV, CAC и unit-экономику. Для каждой — формула, SQL-запрос, интерпретация и типичные ошибки.
DAU, WAU, MAU — метрики аудитории
Определения
DAU (Daily Active Users) — количество уникальных пользователей, совершивших хотя бы одно действие за день.
WAU (Weekly Active Users) — количество уникальных пользователей за 7 дней.
MAU (Monthly Active Users) — количество уникальных пользователей за 30 дней (или календарный месяц).
Ключевое слово — «уникальных». Один пользователь, зашедший 10 раз за день, даёт DAU = 1, а не 10.
Формулы
DAU = COUNT(DISTINCT user_id) за 1 день
WAU = COUNT(DISTINCT user_id) за 7 дней
MAU = COUNT(DISTINCT user_id) за 30 днейSQL: DAU за последние 30 дней
SELECT
event_date,
COUNT(DISTINCT user_id) AS dau
FROM user_activity
WHERE event_date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY event_date
ORDER BY event_dateSQL: MAU (скользящее окно 30 дней)
SELECT
d.DATE AS report_date,
COUNT(DISTINCT a.user_id) AS mau
FROM generate_series(
CURRENT_DATE - INTERVAL '90 days',
CURRENT_DATE,
'1 day'
) AS d(DATE)
LEFT JOIN user_activity a
ON a.event_date BETWEEN d.DATE - INTERVAL '29 days' AND d.DATE
GROUP BY d.DATE
ORDER BY d.DATEЭтот запрос считает MAU для каждого дня как количество уникальных пользователей за предыдущие 30 дней. Обратите внимание: BETWEEN d.date - 29 days AND d.date — это ровно 30 дней включительно.
Подводные камни
Определение «активности». Что считать активностью — открытие приложения, клик, целевое действие? Для соцсетей обычно достаточно визита. Для маркетплейса можно считать только пользователей, которые просмотрели хотя бы один товар. На собеседовании уточняйте определение — это покажет зрелость мышления.
Календарный месяц vs. скользящее окно. MAU за «март» и MAU за «скользящие 30 дней на 31 марта» — разные числа. В феврале 28 дней, в январе 31. Скользящее окно стабильнее для трендов, календарный месяц удобнее для отчётности. Зафиксируйте подход и не смешивайте.
Двойной подсчёт при объединении платформ. Если пользователь заходит и с телефона, и с десктопа — это один пользователь или два? Если у вас нет единого user_id через платформы, MAU будет завышен.
Stickiness — DAU/MAU
Формула
Stickiness = DAU / MAUStickiness показывает, какая доля месячной аудитории пользуется продуктом ежедневно. Чем выше — тем «липче» продукт: пользователи возвращаются каждый день, а не раз в месяц.
Интерпретация
- Stickiness = 50% — половина месячных пользователей заходит каждый день. Отличный показатель, характерный для мессенджеров и соцсетей.
- Stickiness = 10% — только десятая часть MAU активна ежедневно. Типично для маркетплейсов и утилитарных приложений.
- Stickiness = 3–5% — пользователи заходят редко. Нормально для сервисов бронирования или банковских приложений.
SQL
WITH daily AS (
SELECT
event_date,
COUNT(DISTINCT user_id) AS dau
FROM user_activity
WHERE event_date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY event_date
),
monthly AS (
SELECT COUNT(DISTINCT user_id) AS mau
FROM user_activity
WHERE event_date >= CURRENT_DATE - INTERVAL '30 days'
)
SELECT
d.event_date,
d.dau,
m.mau,
ROUND(d.dau::numeric / m.mau * 100, 1) AS stickiness_pct
FROM daily d
CROSS JOIN monthly m
ORDER BY d.event_dateПодводный камень
Stickiness зависит от сезонности и дня недели. В понедельник DAU выше, в субботу — ниже (для B2B-продуктов). Сравнивайте stickiness за одинаковые периоды и сглаживайте средним за 7 дней.
ARPU и ARPPU — денежные метрики
Формулы
ARPU (Average Revenue Per User) — средний доход на одного пользователя:
ARPU = Revenue / Количество активных пользователейARPPU (Average Revenue Per Paying User) — средний доход на одного платящего пользователя:
ARPPU = Revenue / Количество платящих пользователейСвязь между ними:
ARPU = ARPPU * Paying Shareгде Paying Share — доля платящих пользователей от общей аудитории.
SQL: ARPU и ARPPU за месяц
WITH revenue AS (
SELECT
DATE_TRUNC('month', payment_date) AS month,
COUNT(DISTINCT user_id) AS paying_users,
SUM(amount) AS total_revenue
FROM payments
WHERE status = 'completed'
GROUP BY DATE_TRUNC('month', payment_date)
),
active AS (
SELECT
DATE_TRUNC('month', event_date) AS month,
COUNT(DISTINCT user_id) AS active_users
FROM user_activity
GROUP BY DATE_TRUNC('month', event_date)
)
SELECT
a.month,
a.active_users,
r.paying_users,
r.total_revenue,
ROUND(r.total_revenue / a.active_users, 2) AS arpu,
ROUND(r.total_revenue / r.paying_users, 2) AS arppu,
ROUND(r.paying_users::numeric / a.active_users * 100, 1) AS paying_share_pct
FROM active a
LEFT JOIN revenue r ON a.month = r.month
ORDER BY a.monthИнтерпретация
ARPU удобен для верхнеуровневой оценки: «сколько каждый пользователь приносит бизнесу». Но для диагностики нужно раскладывать ARPU на составляющие: ARPPU и долю платящих. Если ARPU упал — стали платить меньше за транзакцию (ARPPU) или снизилась конверсия в платёж (Paying Share)?
Подводные камни
Период расчёта. ARPU за день и ARPU за месяц — принципиально разные числа. Всегда указывайте период. На собеседовании уточните: «ARPU за какой период?»
Возвраты и отмены. Если пользователь заплатил, а потом запросил возврат — учитывать ли эту сумму в revenue? Обычно считают net revenue (за вычетом возвратов), но практика различается. Уточняйте.
Выбросы. Один пользователь, заплативший миллион, перекосит средний ARPU. Для устойчивости смотрите медиану или считайте ARPU с отсечением верхнего процентиля.
LTV — пожизненная ценность клиента
Простая формула
LTV = ARPU * Средний срок жизни пользователя (в тех же периодах)Или через отток:
LTV = ARPU / Churn RateЕсли ARPU = 500 рублей в месяц, а месячный churn = 10%, то LTV = 500 / 0.1 = 5000 рублей. Это значит: в среднем один пользователь за всё время принесёт 5000 рублей.
Когортный LTV
Простая формула предполагает, что ARPU и churn постоянны. В реальности это не так — новые пользователи платят меньше, а churn снижается со временем. Более точный способ — считать LTV по когортам.
WITH cohort AS (
SELECT
user_id,
DATE_TRUNC('month', MIN(event_date)) AS cohort_month
FROM user_activity
GROUP BY user_id
),
revenue_by_month AS (
SELECT
c.cohort_month,
(DATE_TRUNC('month', p.payment_date) - c.cohort_month) AS months_since,
SUM(p.amount) AS revenue,
COUNT(DISTINCT c.user_id) AS cohort_size
FROM cohort c
JOIN payments p ON c.user_id = p.user_id
GROUP BY c.cohort_month, months_since
)
SELECT
cohort_month,
months_since,
cohort_size,
revenue,
ROUND(revenue / cohort_size, 2) AS arpu_per_period,
SUM(revenue) OVER (
PARTITION BY cohort_month
ORDER BY months_since
) / cohort_size AS cumulative_ltv
FROM revenue_by_month
ORDER BY cohort_month, months_sinceЛогика: для каждой когорты считаем, сколько денег она принесла на 0-й месяц, 1-й, 2-й и так далее. Cumulative LTV — нарастающий итог. Когда кривая выходит на плато — это и есть реальный LTV когорты.
Подробнее о работе с когортами — в статье про когортный анализ.
Подводные камни
LTV через простую формулу завышен для молодых продуктов. У вас ещё нет данных о долгосрочном churn — вы экстраполируете текущий, который может быть занижен (пользователи ещё не успели уйти). Когортный LTV честнее, но требует данных за несколько месяцев.
Дисконтирование. 1000 рублей через два года — не то же самое, что 1000 рублей сегодня. Для долгоживущих продуктов LTV корректнее считать с дисконтированием, но на собеседованиях это требуется редко.
CAC — стоимость привлечения
Формула
CAC = Расходы на привлечение / Количество привлечённых пользователейCAC считается за период: если в марте потратили 1 000 000 рублей на маркетинг и привлекли 5000 новых пользователей — CAC = 200 рублей.
Подводные камни
Что включать в расходы? Только рекламный бюджет или зарплату маркетолога тоже? Рефералов, промокоды, контент-маркетинг? Чем полнее учёт, тем точнее CAC — но тем сложнее его считать.
Каналы. Общий CAC усредняет дешёвый органический трафик и дорогой платный. Считайте CAC по каналам отдельно, чтобы понимать, какой канал эффективен.
Unit-экономика: LTV/CAC
Формула
LTV/CAC = Пожизненная ценность / Стоимость привлеченияЭто главная метрика unit-экономики. Она отвечает на вопрос: окупается ли привлечение пользователей?
- LTV/CAC > 3 — здоровый бизнес. Каждый вложенный в привлечение рубль приносит три.
- LTV/CAC = 1–3 — бизнес на грани. Возможно, окупается, но запас прочности мал.
- LTV/CAC < 1 — бизнес теряет деньги на каждом привлечённом пользователе. Нужно либо снижать CAC, либо увеличивать LTV.
Payback Period
Дополнительно считают срок окупаемости:
Payback Period = CAC / ARPU (в месяцах)Если CAC = 2000 рублей, ARPU = 500 рублей/мес — окупаемость через 4 месяца. Если средний срок жизни пользователя 10 месяцев — модель жизнеспособна.
Как метрики связаны между собой
Продуктовые метрики — не изолированные числа. Они образуют систему.
DAU/MAU определяют вовлечённость. Высокий stickiness означает, что пользователи возвращаются часто. Это напрямую влияет на LTV: чем чаще пользователь заходит, тем больше шансов, что он заплатит.
ARPU = ARPPU * Paying Share. Если ARPU падает — разложите на компоненты. Падает средний чек? Или доля платящих снижается? Это два разных диагноза с разными решениями.
LTV = f(ARPU, Retention). LTV зависит от того, сколько пользователь платит за период и сколько периодов остаётся. Улучшение retention при том же ARPU увеличивает LTV. Подробнее про retention — в отдельной статье.
LTV/CAC замыкает цепочку. Все предыдущие метрики сходятся в unit-экономике. Если LTV/CAC < 1, не важно, какой у вас DAU — бизнес убыточен.
На собеседовании по продуктовой аналитике умение связать метрики в систему — один из главных маркеров сильного кандидата.
Что спрашивают на собеседованиях
«Чем отличается ARPU от ARPPU?»
ARPU считается на всех активных пользователей, ARPPU — только на платящих. ARPU = ARPPU * доля платящих. Если продукт freemium и платит 5% аудитории, ARPU будет в 20 раз меньше ARPPU.
«DAU упал на 20%. Как будете разбираться?»
Сначала проверю, не техническая ли это проблема — сбой трекинга, недогрузка логов. Затем сегментирую: по платформе, источнику трафика, стране, когорте. Посмотрю, упал ли DAU из-за снижения привлечения новых пользователей или из-за оттока старых. Проверю, не было ли изменений в продукте или внешних факторов (праздники, действия конкурентов).
«Как посчитать LTV, если продукту три месяца?»
Простая формула через churn будет ненадёжной — слишком мало данных. Лучше считать когортный LTV и экстраполировать кривую. Но честный ответ: LTV на раннем этапе — оценка с большой погрешностью. Можно использовать бенчмарки отрасли как ориентир.
«LTV/CAC = 2. Это хорошо или плохо?»
Зависит от payback period и маржинальности. Если LTV/CAC = 2, но окупаемость 18 месяцев, бизнесу нужен большой запас капитала. Общее правило: LTV/CAC > 3 — хорошо, но это не универсально. Для венчурных компаний на стадии роста допустим LTV/CAC = 1.5–2, если есть потенциал улучшения retention и монетизации.
«Как stickiness связан с retention?»
Stickiness (DAU/MAU) показывает частоту использования в текущем периоде. Retention показывает, возвращается ли пользователь через время. Они коррелируют, но не тождественны: продукт может иметь высокий stickiness среди тех, кто остался, но низкий retention новых когорт. Это значит, что ядро вовлечено, но привлечение приводит некачественных пользователей.
Потренируйтесь решать задачи по продуктовым метрикам и аналитике в Карьернике — тренажёре для подготовки к собеседованиям аналитиков. 15 минут в день в Telegram, и метрики перестанут быть проблемой на интервью.
FAQ
Чем отличается DAU от MAU?
DAU — количество уникальных активных пользователей за один день, MAU — за 30 дней (или календарный месяц). Один пользователь, заходящий каждый день, даёт DAU = 1 каждый день и MAU = 1 за месяц. Отношение DAU/MAU (stickiness) показывает, насколько часто месячная аудитория пользуется продуктом.
Чем отличается ARPU от ARPPU?
ARPU считается на всех активных пользователей (Revenue / Active Users), а ARPPU — только на платящих (Revenue / Paying Users). Связь: ARPU = ARPPU * доля платящих. Если платит 5% аудитории, ARPU будет в 20 раз меньше ARPPU.
Как посчитать LTV, если продукту всего 3 месяца?
Простая формула LTV = ARPU / Churn будет ненадёжной из-за малого количества данных. Лучше считать когортный LTV — отслеживать, сколько денег когорта принесла за каждый месяц, и экстраполировать кривую. Но на раннем этапе любая оценка LTV имеет большую погрешность.
Что означает LTV/CAC и какое значение считается хорошим?
LTV/CAC показывает, сколько рублей приносит каждый рубль, вложенный в привлечение пользователя. LTV/CAC > 3 — здоровый бизнес с запасом прочности. LTV/CAC от 1 до 3 — серая зона. LTV/CAC < 1 — бизнес теряет деньги на каждом клиенте.