Метрики продукта: DAU, MAU, ARPU, LTV
recommendation, а не просто insight?Зачем аналитику знать продуктовые метрики
На собеседованиях аналитиков продуктовые метрики спрашивают в каждом втором интервью. Причём недостаточно просто назвать формулу 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 новых когорт. Это значит, что ядро вовлечено, но привлечение приводит некачественных пользователей.
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 — бизнес теряет деньги на каждом клиенте.