Метрики продукта: 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_date

SQL: 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 / MAU

Stickiness показывает, какая доля месячной аудитории пользуется продуктом ежедневно. Чем выше — тем «липче» продукт: пользователи возвращаются каждый день, а не раз в месяц.

Интерпретация

  • 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 — бизнес теряет деньги на каждом клиенте.