📈 API: Удержание

Когортный анализ, метрики возвращаемости и жизненный цикл клиентов

💡 Что такое удержание?

Удержание (Retention) показывает, какой процент пользователей возвращается в ваш продукт после первого визита. Это ключевая метрика для оценки качества продукта и долгосрочной ценности клиентов.

Основные понятия

Когорта

Группа пользователей, объединенных по времени первого визита (например, все пользователи, пришедшие 1 марта 2026).

Retention (Удержание)

Процент пользователей из когорты, которые вернулись в определенный день. Например, Retention Day 7 показывает, сколько пользователей вернулись на 7-й день после первого визита.

LTV (Lifetime Value)

Прогнозируемая прибыль, которую принесет клиент за все время использования продукта. Рассчитывается на основе удержания и среднего чека.

Визуализация удержания

График удержания

График показывает динамику удержания для ключевых дней (1, 7, 30) по последним когортам:

Day 1
42%
Day 7
28%
Day 30
18%

Когортная таблица

Классическое представление удержания, где каждая строка — когорта, а столбцы — дни жизни:

Когорта
Day 0
Day 1
Day 2
Day 3
Day 4
Day 5
Day 6
Day 7
01.03.2026
100%
42%
35%
32%
30%
28%
27%
26%
02.03.2026
100%
45%
38%
34%
31%
29%
27%
25%

🟢 Высокое (>40%) 🟡 Среднее (20-40%) 🔴 Низкое (<20%)

Эндпоинты

1. Получение данных удержания

GET /api/retention?cohort_from=...&cohort_to=... — данные для построения когортной таблицы и графика удержания.

Параметры запроса

Параметр Описание По умолчанию
cohort_from Начальная дата для когорт (YYYY-MM-DD) -30 дней
cohort_to Конечная дата для когорт (YYYY-MM-DD) сегодня
app_id Фильтр по приложению все приложения

Пример запроса

bash
curl -X GET "https://api.instantbase.online/api/retention?cohort_from=2026-03-01&cohort_to=2026-03-19" \
  -H "Cookie: session_id=ваша_сессия"

Пример ответа

{
  "cohorts": {
    "2026-03-01": {
      "total": 245,
      "days": {
        "0": 100,
        "1": 42.5,
        "2": 35.2,
        "3": 32.1,
        "4": 30.0,
        "5": 28.4,
        "6": 27.1,
        "7": 26.3,
        "14": 21.5,
        "30": 18.2
      }
    },
    "2026-03-02": {
      "total": 312,
      "days": {
        "0": 100,
        "1": 45.1,
        "2": 38.4,
        "3": 34.2,
        "4": 31.5,
        "5": 29.8,
        "6": 27.6,
        "7": 25.9
      }
    }
  },
  "period": {
    "from": "2026-03-01",
    "to": "2026-03-19"
  }
}

Структура ответа

Поле Описание
cohorts[date].total Общее количество пользователей в когорте
cohorts[date].days[day] Процент удержания в указанный день

2. Получение агрегированных метрик удержания

GET /api/retention/summary?from=...&to=... — сводные метрики удержания за период.

Пример ответа

{
  "success": true,
  "retention_day1": 43.2,
  "retention_day7": 26.5,
  "retention_day30": 17.8,
  "retention_day90": 9.3,
  "average_lifetime_days": 24.5,
  "ltv": 3240.50
}
Поле Описание
retention_day1 Среднее удержание на следующий день
retention_day7 Среднее удержание через неделю
retention_day30 Среднее удержание через месяц
average_lifetime_days Средняя продолжительность жизни клиента
ltv Прогнозируемая пожизненная ценность

Интерпретация метрик удержания

Показатель Отлично Хорошо Средне Плохо
Retention Day 1 >50% 40-50% 30-40% <30%
Retention Day 7 >30% 20-30% 15-20% <15%
Retention Day 30 >20% 15-20% 10-15% <10%

Фильтрация по приложениям

Ко всем эндпоинтам можно добавить параметр app_id для фильтрации данных по конкретному приложению:

GET /api/retention?cohort_from=2026-03-01&cohort_to=2026-03-19&app_id=13

Это позволяет сравнивать удержание в разных приложениях или версиях.

Расчет LTV (Lifetime Value)

LTV рассчитывается по формуле:

LTV = (Средний чек × Частота покупок) × (1 / Отток) × Маржинальность

Или на основе когорт:

LTV = Сумма(Выручка_по_когорте) / Размер_когорты

Примеры использования

Получение данных для графика удержания

async function getRetentionData() {
  const response = await fetch('/api/retention?cohort_from=2026-03-01&cohort_to=2026-03-19', {
    credentials: 'include'
  });
  const data = await response.json();
  
  // Подготовка данных для графика
  const cohorts = Object.keys(data.cohorts).sort();
  const day1Data = cohorts.map(date => data.cohorts[date].days[1] || 0);
  const day7Data = cohorts.map(date => data.cohorts[date].days[7] || 0);
  const day30Data = cohorts.map(date => data.cohorts[date].days[30] || 0);
  
  return { cohorts, day1Data, day7Data, day30Data };
}

Сравнение удержания двух приложений

async function compareRetention(app1, app2) {
  const [data1, data2] = await Promise.all([
    fetch(`/api/retention?app_id=${app1}`).then(r => r.json()),
    fetch(`/api/retention?app_id=${app2}`).then(r => r.json())
  ]);
  
  const avgRetention1 = calculateAverageRetention(data1);
  const avgRetention2 = calculateAverageRetention(data2);
  
  console.log(`Приложение 1: ${avgRetention1}%`);
  console.log(`Приложение 2: ${avgRetention2}%`);
}

Рекомендации по улучшению удержания

  • Анализируйте "точки отвала" — дни, когда удержание резко падает
  • Сравнивайте когорты — улучшается ли удержание со временем?
  • Сегментируйте пользователей — удержание может сильно отличаться по каналам трафика
  • Используйте метаданные — отмечайте активации и ключевые события
  • Запускайте реактивационные кампании — для пользователей, которые перестали возвращаться

Когортный анализ по неделям и месяцам

Для долгосрочного анализа можно группировать когорты по неделям или месяцам:

Тип периода Когда использовать
Дневные когорты Для высокочастотных продуктов (соцсети, игры, мессенджеры)
Недельные когорты Для регулярных сервисов (доставка еды, фитнес-приложения)
Месячные когорты Для подписочных сервисов, B2B, интернет-магазинов

В текущей версии API поддерживаются дневные когорты. Для недельных и месячных используйте агрегацию на стороне клиента.

Коды ошибок

Код Описание Решение
400 Invalid date format Проверьте формат дат (YYYY-MM-DD)
400 Application not found Проверьте переданный app_id
401 Unauthorized Требуется авторизация через сессию
500 Internal server error Повторите запрос позже

Примеры для разных типов бизнеса

Интернет-магазин

Хорошее удержание: Day 1 → 30%, Day 7 → 15%, Day 30 → 8%

SaaS-сервис

Хорошее удержание: Day 1 → 50%, Day 7 → 35%, Day 30 → 25%

Мобильная игра

Хорошее удержание: Day 1 → 45%, Day 7 → 25%, Day 30 → 12%

Что дальше?

💰 Выручка

Аналитика по доходам и заказам

Перейти →

👥 Клиенты

Профили и атрибуты пользователей

Перейти →

Нужна помощь с анализом удержания?

Напишите нам, и мы поможем интерпретировать метрики

support@instantbase.online Telegram