Conversion rate: как собрать честную воронку
Как считать conversion rate по воронке: выбрать вход, порядок событий и окно конверсии, найти настоящий drop-off и не перепутать пользователей с сессиями.

Когда конверсия падает, команда часто открывает один большой процент и начинает спорить, что чинить: лендинг, форму, цену или продукт. Воронка нужна не для красивого треугольника. Она показывает, на каком конкретном переходе люди теряют контекст, сталкиваются с ошибкой или просто не видят смысла идти дальше.
Коротко
Conversion rate — это доля пользователей, которые вошли в заданный путь и дошли до целевого действия за выбранное окно времени. Смысл метрики полностью зависит от четырёх вещей: кто вошёл, какие шаги обязательны, в каком порядке они идут и сколько времени разрешено на завершение.
- Покажи в отчёте входной шаг и знаменатель, а не только итоговый процент.
- Считай уникальных пользователей, если вопрос про опыт человека; сессии — если вопрос про конкретную попытку.
- Выбирай окно по реальному циклу: 20 минут для checkout и несколько дней для B2B onboarding — это разные задачи.
- Разбирай переходы между шагами, а не только общий conversion rate.
Сначала сформулируй путь словами
До настройки событий полезно произнести воронку обычной фразой. Например: “Новый пользователь увидел pricing, начал регистрацию, создал workspace и открыл первый отчёт в течение семи дней”. Если фразу нельзя сказать без оговорок, воронку ещё рано собирать: скорее всего, вы смешали два разных маршрута.
Один и тот же итоговый event может жить в разных путях. Покупка после повторного визита и покупка в первой сессии — не одна конверсия. Первая больше говорит про весь спрос и маркетинг, вторая — про ясность предложения и friction в checkout.
| Настройка | Вопрос, на который отвечает |
|---|---|
| Единица | Считаем людей, аккаунты, устройства или сессии? |
| Вход | Кто попадает в знаменатель: все визиты, новые пользователи, пользователи с намерением? |
| Порядок | Шаги должны идти строго друг за другом или между ними допустимы другие действия? |
| Окно | Сколько времени пользователю нормально нужно, чтобы закончить путь? |
| Цель | Какой event доказывает результат: payment_succeeded, report_viewed, lead_qualified? |
Воронка должна показывать количество и переход
Итоговая конверсия здесь 11,5%, но для решения важнее не сам процент, а форма пути. Между первым визитом и началом регистрации теряется 71% входа. Потом до первого отчёта доходит заметная часть тех, кто уже создал workspace. Значит, начинать расследование с финального экрана нельзя: сначала нужно понять, почему люди не решаются начать путь.
Значения условные. Под каждым шагом видно долю от входа; именно переходы дают гипотезы для проверки.
Closed funnel, open funnel и порядок событий
Closed funnel считает только тех, кто вошёл с первого шага. Он хорош для диагностики конкретного сценария: например, pricing → registration → first report. Open funnel разрешает пользователю появиться на любом шаге, поэтому удобен для проверки целого процесса и качества данных, но не отвечает на тот же вопрос.
Порядок тоже меняет смысл. Для onboarding чаще нужен порядок “сначала это, потом то”: иначе пользователь мог создать workspace вчера, а открыть pricing сегодня, и система назовёт это одним успешным путём. В продукте между основными шагами обычно допустимы другие действия; требовать exact order стоит только для действительно жёсткого технического процесса.
Если в прошлом месяце в BI считали уникальных пользователей за 7 дней, а в новом отчёте сессии за 24 часа, цифры могут разойтись без единого изменения в продукте. В названии графика лучше сразу писать единицу, окно и режим.
SQL для последовательной onboarding-воронки
Ниже один из прозрачных способов посчитать closed funnel по пользователям. Каждый следующий CTE присоединяется к предыдущему шагу и проверяет окно в семь дней от первого входного события. Это важнее, чем просто проверить наличие всех четырёх events у одного user_id: порядок и срок здесь часть определения метрики.
with pricing as (
select user_id, min(occurred_at) as pricing_at
from events
where event_name = 'pricing_viewed'
and occurred_at >= current_date - interval '30 days'
and occurred_at < current_date
group by 1
),
registration as (
select p.user_id, p.pricing_at, min(e.occurred_at) as registration_at
from pricing p
join events e on e.user_id = p.user_id
and e.event_name = 'registration_completed'
and e.occurred_at >= p.pricing_at
and e.occurred_at < p.pricing_at + interval '7 days'
group by 1, 2
),
workspace as (
select r.user_id, r.pricing_at, min(e.occurred_at) as workspace_at
from registration r
join events e on e.user_id = r.user_id
and e.event_name = 'workspace_created'
and e.occurred_at >= r.registration_at
and e.occurred_at < r.pricing_at + interval '7 days'
group by 1, 2
),
first_report as (
select distinct w.user_id
from workspace w
join events e on e.user_id = w.user_id
and e.event_name = 'report_viewed'
and e.occurred_at >= w.workspace_at
and e.occurred_at < w.pricing_at + interval '7 days'
)
select 'pricing_viewed' as step, count(*) as users from pricing
union all select 'registration_completed', count(*) from registration
union all select 'workspace_created', count(*) from workspace
union all select 'report_viewed', count(*) from first_report;Как найти причину drop-off
Большой drop-off — это место для вопроса, а не готовый диагноз. Сравни тех, кто прошёл переход, с теми, кто остановился: канал, платформа, браузер, тариф, скорость загрузки, ошибки, время между шагами. Если конверсия просела только на Android после релиза, она уже не похожа на общую проблему смысла pricing-страницы.
Не забывай про размер базы. Переход с 8% до 4% в сегменте из 30 пользователей может быть шумом. Падение с 29% до 24% на десятках тысяч пользователей уже стоит разложить по версии приложения и источнику трафика, а затем подтвердить гипотезу экспериментом или качественным исследованием.
- Сравни переходы по каналам, платформам и новым когортам.
- Посмотри медианное время между шагами, а не только факт прохождения.
- Проверь ошибки и технические события рядом с проблемным шагом.
- Узнай, что делают пользователи вместо следующего шага: уходят, возвращаются назад, ищут помощь или идут другим маршрутом.
- Не называй корреляцию причиной без дополнительной проверки.
Что почитать дальше
Воронка часто начинается ещё до продукта: пользователь должен получить первую ценность, а команда — убедиться, что её определение не подменено удобным кликом. После прохождения воронки следующий вопрос — какие сегменты приносят деньги и не маскирует ли средняя выручка потерю качества.