Что такое engagement rate и как его измерять для разных типов продуктов?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
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
-
Daily Engagement Rate (DAU-based) — процент активных юзеров, совершивших действие в день
-
Weekly Engagement Rate (WAU-based) — процент, который совершили действие за неделю
-
Intensity — среднее количество действий на пользователя
Intensity = Всего действий / Вовлечённые пользователи -
Depth — сколько разных типов действий совершили
SELECT user_id, COUNT(DISTINCT action) as depth FROM events WHERE created_at >= CURRENT_DATE - INTERVAL 30 DAY GROUP BY user_id -
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 ниже — проблема с акквизицией на мобиле
Практический совет
Создай дашборд с тремя строками:
- Общий engagement rate (по всему продукту)
- By cohort (новые vs старые)
- By platform (web vs mobile)
Следи за трендом. Если общий не меняется, но разные сегменты разнонаправлены — копай конкретный сегмент.
Главное правило: Engagement Rate = здоровье продукта. Низкий engagement = скоро будет низкий retention и revenue.