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

Расскажите о Sticky Factor (коэффициент "липкости"). Как его рассчитать и что считается хорошим показателем?

2.0 Middle🔥 201 комментариев
#Ratio-метрики#Метрики продукта

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

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

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

Sticky Factor (Коэффициент "Липкости")

Определение

Sticky Factor (коэффициент прилипаемости) — это показатель, который измеряет, какая доля ежедневных активных пользователей (DAU) составляет ежемесячных активных пользователей (MAU). По сути, это показывает, насколько "липкий" (addictive) продукт: как часто пользователи возвращаются?

Формула:

Sticky Factor = DAU / MAU × 100%

Где:

  • DAU (Daily Active Users) — уникальные пользователи, активные в день
  • MAU (Monthly Active Users) — уникальные пользователи, активные в месяц

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

Sticky Factor = 50% 
Означает: из пользователей, которые заходили хоть раз за месяц,
в среднем 50% заходят КАЖДЫЙ день

Примеры по индустриям

Сервис              | DAU | MAU    | Sticky Factor
--------------------|-----|--------|----------------
WhatsApp            | 5M  | 10M    | 50%
TikTok              | 8M  | 15M    | 53%
Instagram           | 4M  | 10M    | 40%
LinkedIn            | 1M  | 8M     | 12% (не ежедневный)
Netflix             | 0.5M| 3M     | 17% (просмотры не каждый день)
YouTube             | 10M | 20M    | 50%
Telegram            | 3M  | 6M     | 50%
Fitness App         | 0.2M| 1M     | 20% (сезонное)

Почему это важно?

Sticky Factor показывает:

  1. Привыкание — стал ли продукт привычкой?
  2. Здоровье пользовательской базы — реальная активность, не "мертвые" аккаунты
  3. Монетизационный потенциал — частые пользователи = больше монетизации
  4. Качество продукта — если Sticky падает → есть проблемы

Диапазоны оценки (benchmarks)

Sticky Factor < 10%
Статус: ⚠️ ПЛОХО
Описание: Пользователи забывают про вас
Примеры: RSS reader, погодное приложение (сезонное)

Sticky Factor 10-20%
Статус: ⚠️ НИЖЕ СРЕДНЕГО
Описание: Используют, но не ежедневно
Примеры: Fitness app, читалка электронных книг, банковское приложение

Sticky Factor 20-30%
Статус: 📊 СРЕДНЕЕ
Описание: Норма для многих сервисов
Примеры: Slack (рабочее ПО), Twitter/X

Sticky Factor 30-40%
Статус: 👍 ХОРОШО
Описание: Пользователи возвращаются регулярно
Примеры: Uber, Grab, Яндекс.Карты

Sticky Factor > 40%
Статус: 🔥 ОТЛИЧНО
Описание: Высокая "липкость", привычный сервис
Примеры: WhatsApp, Telegram, TikTok, YouTube

Как рассчитать Sticky Factor?

Методология 1: Месячное сравнение (самая частая)

WITH daily_actives AS (
    SELECT 
        DATE(event_date) as date,
        COUNT(DISTINCT user_id) as dau
    FROM events
    WHERE event_date >= CURRENT_DATE - INTERVAL 30 DAY
    GROUP BY DATE(event_date)
),

monthly_actives AS (
    SELECT 
        COUNT(DISTINCT user_id) as mau
    FROM events
    WHERE event_date >= CURRENT_DATE - INTERVAL 30 DAY
)

SELECT 
    (SELECT AVG(dau) FROM daily_actives) as avg_dau,
    (SELECT mau FROM monthly_actives) as mau,
    ROUND(100.0 * (SELECT AVG(dau) FROM daily_actives) / (SELECT mau FROM monthly_actives), 2) as sticky_factor_pct

Методология 2: День за днём (более точная)

Вычисляем для каждого дня за месяц:

SELECT 
    DATE(event_date) as date,
    COUNT(DISTINCT user_id) as dau,
    (
        SELECT COUNT(DISTINCT user_id) 
        FROM events e2
        WHERE DATE_TRUNC('month', e2.event_date) = DATE_TRUNC('month', e.event_date)
    ) as mau,
    ROUND(100.0 * COUNT(DISTINCT user_id) / (
        SELECT COUNT(DISTINCT user_id) 
        FROM events e2
        WHERE DATE_TRUNC('month', e2.event_date) = DATE_TRUNC('month', e.event_date)
    ), 2) as sticky_factor
FROM events e
WHERE event_date >= CURRENT_DATE - INTERVAL 30 DAY
GROUP BY DATE(event_date)
ORDER BY date;

Результат:

date       | dau   | mau    | sticky_factor
-----------|-------|--------|----------------
2024-01-01 | 5000  | 15000  | 33.33%
2024-01-02 | 4800  | 15000  | 32.00%
2024-01-03 | 5200  | 15000  | 34.67%
...
2024-01-31 | 5100  | 15000  | 34.00%

Средний Sticky Factor за месяц = 33%

Методология 3: Когортный анализ Sticky

Видим, как Sticky меняется по когортам:

WITH cohorts AS (
    SELECT 
        DATE_TRUNC('week', user_created_date) as cohort_week,
        COUNT(DISTINCT user_id) as cohort_size
    FROM users
    GROUP BY cohort_week
),

dau_counts AS (
    SELECT 
        DATE_TRUNC('week', u.user_created_date) as cohort_week,
        COUNT(DISTINCT u.user_id) as week_dau
    FROM users u
    JOIN events e ON u.user_id = e.user_id
    WHERE e.event_date >= CURRENT_DATE - INTERVAL 30 DAY
    GROUP BY cohort_week
)

SELECT 
    c.cohort_week,
    c.cohort_size,
    d.week_dau,
    ROUND(100.0 * d.week_dau / c.cohort_size, 2) as sticky_factor_pct
FROM cohorts c
LEFT JOIN dau_counts d ON c.cohort_week = d.cohort_week
ORDER BY c.cohort_week DESC;

Видим: старые когорты имеют НИЗКИЙ sticky (забыли), новые — ВЫСОКИЙ (еще в медовом месяце).

Почему Sticky может быть низким?

1. Новые пользователи

  • Новички часто пробуют продукт нерегулярно
  • Нужно смотреть Sticky отдельно по возрасту когорты

2. Сезонность

  • Fitness app: летом выше, зимой ниже
  • Игры про новый год: Sticky выше 31 декабря

3. Категория продукта

  • Utility (утилиты): низкий Sticky (используют по необходимости)
  • Social/Entertainment: высокий Sticky (ежедневные привычки)

4. Проблемы в продукте

  • Баги → Sticky падает
  • Скучный контент → Sticky падает
  • Монетизация раздражает → Sticky падает

Как улучшить Sticky Factor?

1. Улучшить onboarding

Новый пользователь понимает ценность → возвращается
День 1 Retention растёт → Sticky растёт

2. Notifications & Engagement

Уведомления о новом контенте → пользователь возвращается
Но осторожно: спам → Sticky падает

3. Персонализация

Рекомендации → пользователю интересно
Каждый раз разное → возвращается

4. Привычка & Rituals

Daily challenge (как в Duolingo)
Streak counter (горячая серия)
Social features (конкурс с друзьями)

5. Убрать friction

Слишком много шагов для открытия app → Sticky падает
Слишком долгая загрузка → Sticky падает
Ошибки → Sticky падает

Практический пример: отслеживание Sticky

-- Создаём метрику для дашборда
WITH params AS (
    SELECT 
        CURRENT_DATE - INTERVAL 30 DAY as month_start,
        CURRENT_DATE as month_end
),

daily_actives AS (
    SELECT 
        DATE(event_date) as date,
        COUNT(DISTINCT user_id) as dau
    FROM events
    WHERE event_date >= (SELECT month_start FROM params)
        AND event_date <= (SELECT month_end FROM params)
    GROUP BY DATE(event_date)
),

monthly_total AS (
    SELECT COUNT(DISTINCT user_id) as mau
    FROM events
    WHERE event_date >= (SELECT month_start FROM params)
        AND event_date <= (SELECT month_end FROM params)
)

SELECT 
    (SELECT AVG(dau) FROM daily_actives)::INTEGER as avg_dau,
    (SELECT mau FROM monthly_total)::INTEGER as mau,
    ROUND(100.0 * (SELECT AVG(dau) FROM daily_actives) / (SELECT mau FROM monthly_total), 2) as sticky_factor_pct,
    CASE 
        WHEN 100.0 * (SELECT AVG(dau) FROM daily_actives) / (SELECT mau FROM monthly_total) > 40 THEN 'Отлично'
        WHEN 100.0 * (SELECT AVG(dau) FROM daily_actives) / (SELECT mau FROM monthly_total) > 30 THEN 'Хорошо'
        WHEN 100.0 * (SELECT AVG(dau) FROM daily_actives) / (SELECT mau FROM monthly_total) > 20 THEN 'Норма'
        ELSE 'Нужна работа'
    END as health_status;

Sticky Factor vs Retention Rate

Это разные метрики!

Sticky Factor = DAU / MAU (% месячного использования)
Retention Rate = Users on Day N / Users on Day 0 (% возврата из когорты)

Пример:
App с 10k MAU и 3k DAU:
- Sticky = 30%
- D7 Retention: 40% (из пользователей дня 0, 40% вернулись на день 7)

Это совместимо: люди могут иметь 40% D7 retention но 30% Sticky
(вернулись не каждый день, но все ещё вернулись)

SQL для анализа Sticky тренда

-- Видим, растёт ли Sticky месяц за месяцем
WITH monthly_actives AS (
    SELECT 
        DATE_TRUNC('month', event_date)::DATE as month,
        COUNT(DISTINCT user_id) as mau,
        COUNT(DISTINCT CASE 
            WHEN event_date = DATE_TRUNC('day', event_date) 
            THEN user_id 
        END) as dau_in_month
    FROM events
    GROUP BY DATE_TRUNC('month', event_date)
)

SELECT 
    month,
    mau,
    ROUND(100.0 * dau_in_month / mau, 2) as sticky_factor_pct,
    LAG(ROUND(100.0 * dau_in_month / mau, 2)) OVER (ORDER BY month) as prev_month_sticky,
    ROUND(ROUND(100.0 * dau_in_month / mau, 2) - 
          LAG(ROUND(100.0 * dau_in_month / mau, 2)) OVER (ORDER BY month), 2) as monthly_change
FROM monthly_actives
ORDER BY month DESC;

Итог

Sticky Factor — это key health metric продукта:

  • Что показывает: Как часто пользователи возвращаются?
  • Как считать: DAU / MAU × 100%
  • Хорошие значения: 30%+ считается нормой, 40%+ — отлично
  • Почему важно: Предсказывает долгосрочный успех и монетизацию
  • Как улучшить: Onboarding, notifications, персонализация, привычки

Высокий Sticky Factor = пользователи полюбили ваш продукт = долгосрочный успех.