Что такое воронка конверсии и как её анализировать?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Воронка конверсии: Определение и анализ
Воронка конверсии (Conversion Funnel) — это последовательность этапов, через которые должен пройти пользователь для достижения целевого действия (покупка, подписка, скачивание). Она визуализирует, сколько пользователей теряется на каждом этапе пути к конверсии.
Структура типичной воронки
Для e-commerce:
- Visit — посещение сайта (100%)
- Browse — просмотр товаров (70%)
- Add to Cart — добавление в корзину (30%)
- Checkout — начало оформления (15%)
- Payment — завершение покупки (8%)
Для SaaS:
- Landing Page Visit (100%)
- Signup Form View (65%)
- Account Created (40%)
- Product Setup (25%)
- First Active Use (18%)
- Subscription (12%)
Ключевые метрики воронки
1. Conversion Rate между этапами (Step Conversion) Процент пользователей, переходящих с этапа i на этап i+1.
Step Conversion = (Users at Step N / Users at Step N-1) × 100%
Например, если 100 посетителей, 30 добавили в корзину, 15 начали оформление, то:
- Browse → Add to Cart: 30 / 100 = 30%
- Add to Cart → Checkout: 15 / 30 = 50%
2. Overall Conversion Rate (сквозная конверсия) Процент пользователей от первого этапа, достигших целевого действия.
Overall Conversion = (Users who Converted / Initial Users) × 100%
3. Drop-off Rate (процент отсева) Процент пользователей, не прошедших дальше этапа.
Drop-off = 100% - Conversion%
Анализ воронки конверсии
1. Выявление узких мест (Bottlenecks)
Найти этапы с наибольшим отсевом пользователей:
WITH funnel_data AS (
SELECT
'visit' as stage,
COUNT(DISTINCT user_id) as users
FROM events
WHERE event_type = 'visit'
UNION ALL
SELECT
'add_to_cart' as stage,
COUNT(DISTINCT user_id)
FROM events
WHERE event_type = 'add_to_cart'
UNION ALL
SELECT
'checkout' as stage,
COUNT(DISTINCT user_id)
FROM events
WHERE event_type = 'checkout'
UNION ALL
SELECT
'purchase' as stage,
COUNT(DISTINCT user_id)
FROM events
WHERE event_type = 'purchase'
)
SELECT
stage,
users,
LAG(users) OVER (ORDER BY CASE stage
WHEN 'visit' THEN 1
WHEN 'add_to_cart' THEN 2
WHEN 'checkout' THEN 3
WHEN 'purchase' THEN 4 END) as prev_stage_users,
ROUND(100.0 * users / LAG(users) OVER (ORDER BY CASE stage WHEN 'visit' THEN 1 WHEN 'add_to_cart' THEN 2 WHEN 'checkout' THEN 3 WHEN 'purchase' THEN 4 END), 2) as conversion_rate_pct
FROM funnel_data
ORDER BY CASE stage WHEN 'visit' THEN 1 WHEN 'add_to_cart' THEN 2 WHEN 'checkout' THEN 3 WHEN 'purchase' THEN 4 END;
2. Сегментированный анализ
Сравнить конверсию по разным сегментам (источник трафика, устройство, регион):
WITH funnel AS (
SELECT
traffic_source,
COUNT(CASE WHEN event_type = 'visit' THEN 1 END) as visits,
COUNT(CASE WHEN event_type = 'add_to_cart' THEN 1 END) as add_to_cart,
COUNT(CASE WHEN event_type = 'purchase' THEN 1 END) as purchases
FROM events
GROUP BY traffic_source
)
SELECT
traffic_source,
visits,
add_to_cart,
purchases,
ROUND(100.0 * add_to_cart / visits, 2) as add_to_cart_rate,
ROUND(100.0 * purchases / visits, 2) as overall_conversion_rate
FROM funnel
ORDER BY overall_conversion_rate DESC;
3. Анализ времени между этапами
Выявить, где пользователи задерживаются:
WITH user_journey AS (
SELECT
user_id,
event_type,
created_at,
LEAD(created_at) OVER (PARTITION BY user_id ORDER BY created_at) as next_event_time
FROM events
)
SELECT
event_type,
COUNT(DISTINCT user_id) as users,
ROUND(AVG(EXTRACT(EPOCH FROM (next_event_time - created_at)) / 3600), 2) as avg_hours_to_next,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY EXTRACT(EPOCH FROM (next_event_time - created_at)) / 3600) as median_hours
FROM user_journey
GROUP BY event_type
ORDER BY event_type;
Python-анализ воронки
import pandas as pd
import matplotlib.pyplot as plt
# Загрузка данных событий
events = pd.read_csv('events.csv')
# Создание воронки
funnel_data = {
'Stage': ['Landing Page', 'Signup', 'Profile Setup', 'First Purchase', 'Repeat Purchase'],
'Users': [10000, 6500, 4200, 1680, 840]
}
df_funnel = pd.DataFrame(funnel_data)
# Расчёт метрик
df_funnel['Conversion_Rate'] = (df_funnel['Users'] / df_funnel['Users'].iloc[0] * 100).round(2)
df_funnel['Step_Conversion'] = (df_funnel['Users'] / df_funnel['Users'].shift() * 100).round(2)
df_funnel['Dropoff'] = 100 - df_funnel['Conversion_Rate']
print(df_funnel)
# Output:
# Stage Users Conversion_Rate Step_Conversion Dropoff
# 0 Landing Page 10000 100.0 NaN 0.0
# 1 Signup 6500 65.0 65.0 35.0
# 2 Profile Setup 4200 42.0 64.6 58.0
# 3 First Purchase 1680 16.8 40.0 83.2
# 4 Repeat Purchase 840 8.4 50.0 91.6
# Визуализация воронки
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 6))
# График 1: Количество пользователей
ax1.bar(df_funnel['Stage'], df_funnel['Users'], color='steelblue', edgecolor='black')
ax1.set_ylabel('Количество пользователей')
ax1.set_title('Воронка конверсии: Количество')
ax1.tick_params(axis='x', rotation=45)
for i, v in enumerate(df_funnel['Users']):
ax1.text(i, v + 200, str(v), ha='center', va='bottom')
# График 2: Процент конверсии
ax2.plot(df_funnel['Stage'], df_funnel['Conversion_Rate'],
marker='o', linewidth=2, markersize=8, color='steelblue')
ax2.set_ylabel('Сквозная конверсия (%)')
ax2.set_title('Тренд сквозной конверсии')
ax2.set_ylim(0, 105)
ax2.grid(axis='y', alpha=0.3)
ax2.tick_params(axis='x', rotation=45)
for i, v in enumerate(df_funnel['Conversion_Rate']):
ax2.text(i, v + 2, f"{v}%", ha='center', va='bottom')
plt.tight_layout()
plt.show()
Санкей-диаграмма (Sankey Diagram)
Отличный способ визуализации потоков пользователей между этапами:
import plotly.graph_objects as go
fig = go.Figure(data=[go.Sankey(
node=dict(
pad=15,
line=dict(color='black', width=0.5),
label=['Landing Page', 'Signup', 'Profile Setup', 'Purchase', 'Bounced'],
color=['steelblue', 'steelblue', 'steelblue', 'green', 'red']
),
link=dict(
source=[0, 0, 1, 1, 2, 2],
target=[1, 4, 2, 4, 3, 4],
value=[6500, 3500, 4200, 2300, 1680, 2520]
)
)])
fig.update_layout(title_text='Санкей-диаграмма пути пользователей', font_size=10)
fig.show()
Рекомендации по оптимизации
Для каждого узкого места:
- Выявить причину — провести UX-тестирование, опросы, сессионные записи
- Гипотезировать решение — часто проблемы с clarity, friction, trust
- Тестировать улучшения — A/B тесты для валидации гипотез
- Мониторить результаты — отслеживать изменение метрик
Частые проблемы:
- Непонятный CTА
- Медленная загрузка страницы
- Отсутствие социального доказательства
- Слишком много полей в форме
- Неожиданные затраты (shipping, tax)
Инструменты анализа
- Google Analytics: встроенная Funnel Visualization
- Mixpanel: детальные воронки с фильтрацией
- Amplitude: когортный анализ в воронках
- Tableau/Looker: кастомные визуализации
Анализ воронки конверсии — ключ к систематическому улучшению пути пользователя и увеличению доходов компании.