← Назад к вопросам

Что такое Retention Rate и как его рассчитать? Какие есть виды retention?

2.0 Middle🔥 251 комментариев
#Метрики продукта#Статистика и математика

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

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 — золотые метрики для понимания реальной ценности продукта.