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

Что такое engagement rate и как его измерять для разных типов продуктов?

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

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

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

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

Engagement Rate: определение, измерение, типы

Engagement rate (уровень вовлёченности) — это метрика, которая показывает, насколько активно пользователи взаимодействуют с продуктом. Это один из ключевых показателей здоровья продукта, потому что высокая вовлечённость часто коррелирует с удержанием и выручкой.

Определение Engagement Rate

Engagement rate — это доля активных пользователей, которые совершают целевые действия за определённый период.

Формула:

Engagement Rate (%) = (Количество вовлечённых пользователей / Активные пользователи) * 100

Но "вовлечённый" и "активный" определяются по-разному для разных продуктов.

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

1. Social Media (Instagram, TikTok)

Целевые действия:

  • Like (лайк)
  • Comment (комментарий)
  • Share (поделиться)
  • Save (сохранить)
SELECT 
    DATE(created_at) as day,
    COUNT(DISTINCT user_id) as dau,
    COUNT(DISTINCT CASE WHEN action IN ('like', 'comment', 'share') THEN user_id END) as engaged_users,
    ROUND(100.0 * COUNT(DISTINCT CASE WHEN action IN ('like', 'comment', 'share') THEN user_id END) / NULLIF(COUNT(DISTINCT user_id), 0), 2) as engagement_rate,
    COUNT(CASE WHEN action = 'like' THEN 1 END) as likes,
    COUNT(CASE WHEN action = 'comment' THEN 1 END) as comments,
    ROUND(COUNT(CASE WHEN action IN ('like', 'comment') THEN 1 END) * 1.0 / COUNT(DISTINCT user_id), 2) as actions_per_user
FROM events
WHERE created_at >= CURRENT_DATE - INTERVAL 30 DAY
GROUP BY DATE(created_at)
ORDER BY day DESC

Оптимальный диапазон: 3-5% для feed-based приложений (Instagram), 10-15% для algorithmic feeds (TikTok)


2. E-commerce (Amazon, Shopify)

Целевые действия:

  • Добавление в корзину (add to cart)
  • Добавление в wishlist
  • Просмотр товара (view)
  • Рейтинг или комментарий
SELECT 
    DATE(created_at) as day,
    COUNT(DISTINCT user_id) as daily_visitors,
    COUNT(DISTINCT CASE WHEN action IN ('add_to_cart', 'wishlist_add', 'product_review') THEN user_id END) as engaged_users,
    ROUND(100.0 * COUNT(DISTINCT CASE WHEN action IN ('add_to_cart', 'wishlist_add', 'product_review') THEN user_id END) / NULLIF(COUNT(DISTINCT user_id), 0), 2) as engagement_rate,
    ROUND(COUNT(CASE WHEN action = 'product_view' THEN 1 END) * 1.0 / COUNT(DISTINCT user_id), 2) as views_per_user,
    ROUND(COUNT(CASE WHEN action = 'add_to_cart' THEN 1 END) * 1.0 / COUNT(DISTINCT user_id), 2) as adds_per_user
FROM events
WHERE created_at >= CURRENT_DATE - INTERVAL 30 DAY
GROUP BY DATE(created_at)
ORDER BY day DESC

Оптимальный диапазон: 15-30% (зависит от категории товаров)


3. SaaS / Productivity (Notion, Figma, Slack)

Целевые действия:

  • Создание документа / проекта
  • Редактирование
  • Сотрудничество (комментарий, упоминание)
  • Использование ключевой feature
SELECT 
    DATE(created_at) as day,
    COUNT(DISTINCT user_id) as dau,
    COUNT(DISTINCT CASE WHEN action IN ('create', 'edit', 'comment', 'collaborate') THEN user_id END) as engaged_users,
    ROUND(100.0 * COUNT(DISTINCT CASE WHEN action IN ('create', 'edit', 'comment') THEN user_id END) / NULLIF(COUNT(DISTINCT user_id), 0), 2) as engagement_rate,
    COUNT(DISTINCT CASE WHEN action = 'create' THEN user_id END) as creators,
    COUNT(DISTINCT CASE WHEN action = 'edit' THEN user_id END) as editors,
    ROUND(COUNT(CASE WHEN action IN ('create', 'edit') THEN 1 END) * 1.0 / COUNT(DISTINCT user_id), 2) as actions_per_user
FROM events
WHERE created_at >= CURRENT_DATE - INTERVAL 30 DAY
GROUP BY DATE(created_at)
ORDER BY day DESC

Оптимальный диапазон: 30-60% (SaaS требует высокой вовлечённости)


4. Video Streaming (YouTube, Netflix)

Целевые действия:

  • Просмотр видео (watch)
  • Like (лайк)
  • Playlist (добавить в плейлист)
  • Комментарий
  • Часов просмотра (watch hours)
SELECT 
    DATE(created_at) as day,
    COUNT(DISTINCT user_id) as dau,
    COUNT(DISTINCT CASE WHEN action IN ('watch', 'like', 'comment') THEN user_id END) as engaged_users,
    ROUND(100.0 * COUNT(DISTINCT CASE WHEN action IN ('watch', 'like', 'comment') THEN user_id END) / NULLIF(COUNT(DISTINCT user_id), 0), 2) as engagement_rate,
    SUM(CASE WHEN action = 'watch' THEN watch_duration_minutes ELSE 0 END) as total_watch_minutes,
    ROUND(SUM(CASE WHEN action = 'watch' THEN watch_duration_minutes ELSE 0 END) / NULLIF(COUNT(DISTINCT user_id), 0), 2) as avg_watch_minutes,
    COUNT(DISTINCT CASE WHEN action = 'watch' AND watch_duration_minutes >= 60 THEN user_id END) as heavy_viewers
FROM events
WHERE created_at >= CURRENT_DATE - INTERVAL 30 DAY
GROUP BY DATE(created_at)
ORDER BY day DESC

Оптимальный диапазон: 40-70% (зависит от контента)


5. Gaming (Mobile Game, Console)

Целевые действия:

  • Игра (play / session)
  • Уровень (level completion)
  • Социальное взаимодействие (invite, challenge)
  • Покупка (in-app purchase)
SELECT 
    DATE(created_at) as day,
    COUNT(DISTINCT user_id) as dau,
    COUNT(DISTINCT CASE WHEN action = 'session' THEN user_id END) as players,
    COUNT(CASE WHEN action = 'session' THEN 1 END) as sessions,
    SUM(CASE WHEN action = 'session' THEN session_duration_minutes ELSE 0 END) as total_play_time,
    ROUND(100.0 * COUNT(DISTINCT CASE WHEN action IN ('level_complete', 'achievement') THEN user_id END) / NULLIF(COUNT(DISTINCT user_id), 0), 2) as engagement_rate,
    ROUND(COUNT(CASE WHEN action = 'session' THEN 1 END) * 1.0 / COUNT(DISTINCT user_id), 2) as sessions_per_user
FROM events
WHERE created_at >= CURRENT_DATE - INTERVAL 30 DAY
GROUP BY DATE(created_at)
ORDER BY day DESC

Оптимальный диапазон: 30-50% (сильно зависит от жанра)


6. Маркетплейс / Sharing Economy (Airbnb, Uber)

Целевые действия:

  • Поиск (search)
  • Просмотр листинга (view listing)
  • Бронирование (booking)
  • Рейтинг (rating)
SELECT 
    DATE(created_at) as day,
    COUNT(DISTINCT user_id) as dau,
    COUNT(DISTINCT CASE WHEN action = 'search' THEN user_id END) as searchers,
    COUNT(DISTINCT CASE WHEN action = 'view_listing' THEN user_id END) as viewers,
    COUNT(DISTINCT CASE WHEN action = 'booking' THEN user_id END) as bookers,
    ROUND(100.0 * COUNT(DISTINCT CASE WHEN action = 'booking' THEN user_id END) / NULLIF(COUNT(DISTINCT CASE WHEN action = 'search' THEN user_id END), 0), 2) as search_to_booking_rate,
    ROUND(100.0 * COUNT(DISTINCT CASE WHEN action IN ('rating', 'review') THEN user_id END) / NULLIF(COUNT(DISTINCT CASE WHEN action = 'booking' THEN user_id END), 0), 2) as post_booking_engagement
FROM events
WHERE created_at >= CURRENT_DATE - INTERVAL 30 DAY
GROUP BY DATE(created_at)
ORDER BY day DESC

Оптимальный диапазон: 5-15% (search to booking)

Как мониторить Engagement Rate

1. По времени (тренд)

SELECT 
    DATE(created_at) as day,
    COUNT(DISTINCT user_id) as dau,
    COUNT(DISTINCT CASE WHEN action = 'target_action' THEN user_id END) as engaged,
    ROUND(100.0 * COUNT(DISTINCT CASE WHEN action = 'target_action' THEN user_id END) / NULLIF(COUNT(DISTINCT user_id), 0), 2) as engagement_rate,
    LAG(ROUND(100.0 * COUNT(DISTINCT CASE WHEN action = 'target_action' THEN user_id END) / NULLIF(COUNT(DISTINCT user_id), 0), 2)) OVER (ORDER BY DATE(created_at)) as prev_day_rate
FROM events
WHERE created_at >= CURRENT_DATE - INTERVAL 90 DAY
GROUP BY DATE(created_at)
ORDER BY day DESC

2. По сегментам пользователей

SELECT 
    DATE(e.created_at) as day,
    u.cohort,
    COUNT(DISTINCT e.user_id) as dau,
    ROUND(100.0 * COUNT(DISTINCT CASE WHEN e.action = 'target' THEN e.user_id END) / NULLIF(COUNT(DISTINCT e.user_id), 0), 2) as engagement_rate
FROM events e
JOIN (
    SELECT user_id, 'new_30d' as cohort FROM users WHERE created_at >= CURRENT_DATE - INTERVAL 30 DAY
    UNION ALL
    SELECT user_id, 'established' as cohort FROM users WHERE created_at < CURRENT_DATE - INTERVAL 30 DAY
) u ON e.user_id = u.user_id
WHERE e.created_at >= CURRENT_DATE - INTERVAL 30 DAY
GROUP BY DATE(e.created_at), u.cohort
ORDER BY day DESC, cohort

3. По платформам / девайсам

SELECT 
    DATE(e.created_at) as day,
    u.platform,
    COUNT(DISTINCT e.user_id) as dau,
    ROUND(100.0 * COUNT(DISTINCT CASE WHEN e.action = 'target' THEN e.user_id END) / NULLIF(COUNT(DISTINCT e.user_id), 0), 2) as engagement_rate
FROM events e
JOIN users u ON e.user_id = u.user_id
WHERE e.created_at >= CURRENT_DATE - INTERVAL 30 DAY
GROUP BY DATE(e.created_at), u.platform
ORDER BY day DESC, platform

Ключевые подметрики Engagement

  1. Daily Engagement Rate (DAU-based) — процент активных юзеров, совершивших действие в день

  2. Weekly Engagement Rate (WAU-based) — процент, который совершили действие за неделю

  3. Intensity — среднее количество действий на пользователя

    Intensity = Всего действий / Вовлечённые пользователи
    
  4. Depth — сколько разных типов действий совершили

    SELECT 
        user_id,
        COUNT(DISTINCT action) as depth
    FROM events
    WHERE created_at >= CURRENT_DATE - INTERVAL 30 DAY
    GROUP BY user_id
    
  5. Breadth — сколько разных feature использовали

    SELECT 
        user_id,
        COUNT(DISTINCT feature) as feature_breadth
    FROM events
    WHERE created_at >= CURRENT_DATE - INTERVAL 30 DAY
    GROUP BY user_id
    

Когда низкий Engagement Rate критичен

  • Результат падения на 20%+ — срочно разбирайся
  • Новые когорты имеют низкий engagement — проблема с onboarding
  • Engagement падает, но DAU растёт — набираешь низкокачественных пользователей
  • Engagement выше на мобиле, но DAU ниже — проблема с акквизицией на мобиле

Практический совет

Создай дашборд с тремя строками:

  1. Общий engagement rate (по всему продукту)
  2. By cohort (новые vs старые)
  3. By platform (web vs mobile)

Следи за трендом. Если общий не меняется, но разные сегменты разнонаправлены — копай конкретный сегмент.

Главное правило: Engagement Rate = здоровье продукта. Низкий engagement = скоро будет низкий retention и revenue.