Что такое Retention Rate и как его рассчитать? Какие есть виды retention?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Retention Rate: Ключевая метрика удержания пользователей
Определение
Retention Rate (RR) — это процент пользователей, которые вернулись в приложение/сервис и совершили какое-либо действие через определённый период времени после первого посещения. Это показатель "липкости" продукта — насколько хорошо вы удерживаете пользователей.
Простыми словами: из 100 пользователей, которые установили приложение в день X, сколько ещё используют его на день X+7, X+30, X+365?
Базовая формула
Retention Rate = (Активные пользователи на день N / Пользователи, активные на день 0) × 100%
Пример:
- День 0 (установка): 10,000 новых пользователей
- День 7: 3,000 из них вернулись (активны)
- Day 7 Retention = 3,000 / 10,000 × 100% = 30%
Виды Retention
1. По времени (Day-based Retention)
Day 1 Retention (D1)
- Скорее всего, пользователь вернулся на следующий день
- Первый тест качества продукта
- Хороший D1 = 20-40% для мобильных приложений
Day 7 Retention (D7)
- Пользователь вернулся неделю спустя
- Показывает, прошел ли продукт "испытание временем"
- Сильно коррелирует с долгосрочным успехом
- Хороший D7 = 30-50%
Day 30 Retention (D30)
- Месячный retention
- Показывает укоренился ли продукт в жизни пользователя
- Хороший D30 = 15-30%
Day 365 Retention (D365)
- Годовой retention
- Максимальное удержание активного ядра пользователей
- Хороший D365 = 5-15%
2. Cohort Retention (Когортный анализ)
Отслеживаем группы пользователей, присоединившихся в один день:
Когорта D0 D1 D7 D30 D90
Jan 1 10000 4000 2500 1500 1000
Jan 2 8000 3200 2000 1200 800
Jan 3 9500 3800 2375 1425 950
Видим, как каждая когорта "сжимается" со временем. Это правильно показывает тренд удержания.
3. Rolling Retention
Показывает, остаются ли пользователи активны хоть как-то за период:
- Active in last 7 days
- Active in last 30 days
SELECT
DATE(user_created_date) as cohort,
COUNT(DISTINCT user_id) as cohort_size,
COUNT(DISTINCT CASE WHEN active_last_7_days THEN user_id END) as D7_active,
COUNT(DISTINCT CASE WHEN active_last_30_days THEN user_id END) as D30_active
FROM users
GROUP BY cohort;
4. Feature Retention (MAU/WAU)
Изменение использования конкретной функции:
- Пользователи, использовавшие функцию на неделе 1 и снова используют на неделе 2
- Feature Retention = Пересекающиеся пользователи / Пользователи неделю 1
5. Revenue Retention (Финансовое удержание)
Для B2B SaaS - сколько доходов вернулось:
Net Revenue Retention = (ARR на конец периода + уапселл - чёрн) / ARR на начало периода × 100%
NRR > 100% означает рост выручки от существующих клиентов (положительно)
NRR < 100% означает чёрн больше, чем апселл (негативно)
Типы пользователей при расчёте Retention
Важно: нужно правильно определить "активного пользователя"
Вариант 1: Любое действие в день
- Даже просто открыть приложение
Вариант 2: Целевое действие
- Только покупка, только платёж, только загрузка
Вариант 3: Минимум активности
- Минимум 5 минут в приложении
- Минимум 2 действия
Выбор влияет на результат!
SQL для расчёта Day-based Retention
-- День установки каждого пользователя
WITH user_install_date AS (
SELECT
user_id,
DATE(MIN(event_date)) as install_date
FROM events
GROUP BY user_id
),
-- Какой день активности для каждого пользователя
active_dates AS (
SELECT DISTINCT
e.user_id,
DATE(e.event_date) as active_date,
u.install_date,
DATE_DIFF(day, u.install_date, DATE(e.event_date)) as days_since_install
FROM events e
JOIN user_install_date u ON e.user_id = u.user_id
WHERE e.event_type = 'app_open' -- или любое целевое действие
)
-- Retention по дням
SELECT
days_since_install,
COUNT(DISTINCT user_id) as active_users,
(SELECT COUNT(DISTINCT user_id) FROM user_install_date) as cohort_size,
ROUND(100.0 * COUNT(DISTINCT user_id) / (SELECT COUNT(DISTINCT user_id) FROM user_install_date), 2) as retention_rate
FROM active_dates
WHERE days_since_install > 0
GROUP BY days_since_install
ORDER BY days_since_install;
Когортный анализ Retention (классический)
WITH cohorts AS (
SELECT
user_id,
DATE_TRUNC('week', MIN(event_date)) as cohort_week,
DATE_TRUNC('week', event_date) as active_week
FROM events
GROUP BY user_id, DATE_TRUNC('week', event_date)
)
SELECT
cohort_week,
DATE_DIFF(week, cohort_week, active_week) as weeks_since_join,
COUNT(DISTINCT user_id) as active_users
FROM cohorts
WHERE DATE_DIFF(week, cohort_week, active_week) >= 0
GROUP BY cohort_week, weeks_since_join
ORDER BY cohort_week, weeks_since_join;
Практические интерпретации
D1 = 5% → Очень плохо. Пользователи не видят ценности с первого дня D1 = 20% → Нормально. Среднее значение для большинства приложений D1 = 50%+ → Отлично. Очень "липкий" продукт с хорошим onboarding
D7 -> D1 Ratio = 50-60% → Нормально (D7 примерно половина от D1) D7 -> D1 Ratio > 80% → Исключительно - плато, люди не уходят D7 -> D1 Ratio < 30% → Быстрая потеря - нужна переработка
Когда Retention падает?
Причины падения:
1. Плохой onboarding - пользователи не понимают, как пользоваться
2. Баги и крахи - приложение нестабильно
3. Спама или раздражающих уведомлений
4. Слишком рано монетизация - платит надо рано
5. Нет персонализации - скучно
6. Конкуренты лучше
7. Сезонность - приложение работает только в сезон
Python для анализа Retention
import pandas as pd
# Данные: user_id, install_date, active_date
df = pd.read_csv('events.csv')
df['install_date'] = pd.to_datetime(df['install_date'])
df['active_date'] = pd.to_datetime(df['active_date'])
# Дни с момента установки
df['days_since_install'] = (df['active_date'] - df['install_date']).dt.days
# Retention по дням
cohort_size = df['user_id'].nunique()
retention = df.groupby('days_since_install')['user_id'].nunique() / cohort_size * 100
print(retention)
Применение для Product Analyst
Мониторинг здоровья:
- Еженедельно отслеживайте D1, D7, D30 по когортам
- Сравнивайте неделю к неделе
Тестирование:
- A/B тест нового onboarding → сравнить D1 между группами
- Новая фича → падает ли Retention или растёт?
Прогнозирование:
- Если средний пользователь удерживается 30 дней → LTV = 30 × ARPU
Итог
Retention Rate показывает долгосрочное здоровье продукта. Можно нарастить много пользователей, но если они не возвращаются, это не работает. D7 и D30 — золотые метрики для понимания реальной ценности продукта.