Воронка конверсии: как строить и анализировать

Что такое воронка конверсии

Воронка конверсии — последовательность шагов, которые пользователь проходит от первого контакта с продуктом до целевого действия. На каждом шаге часть пользователей отсеивается, и визуально это напоминает воронку: вверху широко, внизу узко.

Примеры воронок:

  • E-commerce: посещение сайта > просмотр товара > добавление в корзину > оформление заказа > оплата
  • SaaS: регистрация > активация > первая оплата > продление подписки
  • Мобильное приложение: установка > онбординг > первое целевое действие > возврат на следующий день

На собеседованиях аналитиков воронки спрашивают в двух форматах: «постройте воронку для X» (продуктовый кейс) и «напишите SQL для расчёта конверсии по шагам» (технический кейс). Обе ситуации разберём ниже.

Типы воронок

Маркетинговая воронка

Классическая модель AIDA: Awareness > Interest > Desire > Action. Используется для описания пути от знакомства с брендом до покупки. В чистом виде на собеседованиях аналитиков встречается редко — это больше маркетинговый фреймворк, чем аналитический инструмент. Но понимать стоит: если вас спросят «как оценить эффективность рекламной кампании», AIDA задаёт структуру ответа.

Продуктовая воронка

Привязана к конкретным действиям пользователя в продукте. Каждый шаг — это событие, которое можно залогировать и посчитать. Именно с такими воронками работает аналитик ежедневно.

Пример для интернет-магазина:

Шаг Пользователей Конверсия в шаг Конверсия от входа
Визит на сайт 100 000 100%
Просмотр товара 60 000 60% 60%
Добавление в корзину 15 000 25% 15%
Начало оформления 9 000 60% 9%
Оплата 4 500 50% 4.5%

Два типа конверсии:

  • Step-to-step (конверсия в шаг) — доля пользователей, перешедших с предыдущего шага на текущий
  • End-to-end (конверсия от входа) — доля от общего числа пользователей на первом шаге

Оба показателя нужны. Step-to-step показывает, где именно проблема. End-to-end показывает кумулятивный эффект.

AARRR (Pirate Metrics)

Фреймворк Дейва Макклюра для стартапов. Пять этапов жизненного цикла пользователя:

  • Acquisition — привлечение. Откуда приходят пользователи и сколько их.
  • Activation — активация. Получил ли пользователь первую ценность от продукта. Для мессенджера — отправил первое сообщение, для сервиса доставки — оформил первый заказ.
  • Retention — удержание. Возвращается ли пользователь. Подробнее — в статье про retention.
  • Revenue — монетизация. Платит ли пользователь.
  • Referral — рекомендации. Приводит ли пользователь других.

AARRR — не воронка в строгом смысле (пользователь не обязан проходить шаги последовательно), но она задаёт структуру для анализа продукта в целом. На собеседованиях по продуктовой аналитике AARRR спрашивают часто: «Какие метрики вы бы отслеживали для нового продукта?»

Строим воронку в SQL

Допустим, у вас есть таблица событий events с колонками user_id, event_name, event_time. Нужно построить воронку: visit > view_product > add_to_cart > checkout > payment.

Шаг 1: определяем попадание пользователя на каждый шаг

WITH funnel AS (
    SELECT
        user_id,
        MAX(CASE WHEN event_name = 'visit' THEN 1 ELSE 0 END) AS step_visit,
        MAX(CASE WHEN event_name = 'view_product' THEN 1 ELSE 0 END) AS step_view,
        MAX(CASE WHEN event_name = 'add_to_cart' THEN 1 ELSE 0 END) AS step_cart,
        MAX(CASE WHEN event_name = 'checkout' THEN 1 ELSE 0 END) AS step_checkout,
        MAX(CASE WHEN event_name = 'payment' THEN 1 ELSE 0 END) AS step_payment
    FROM events
    WHERE event_time >= '2026-03-01'
      AND event_time < '2026-04-01'
    GROUP BY user_id
)
SELECT
    COUNT(*) FILTER (WHERE step_visit = 1) AS visit,
    COUNT(*) FILTER (WHERE step_view = 1) AS view_product,
    COUNT(*) FILTER (WHERE step_cart = 1) AS add_to_cart,
    COUNT(*) FILTER (WHERE step_checkout = 1) AS checkout,
    COUNT(*) FILTER (WHERE step_payment = 1) AS payment
FROM funnel

Это простая воронка без учёта порядка шагов. Пользователь считается на шаге, если совершил это событие хотя бы раз за период. Для многих задач такого подхода достаточно.

Шаг 2: строгая воронка с учётом порядка событий

Если нужно учитывать последовательность — пользователь должен пройти шаги именно в заданном порядке:

WITH user_steps AS (
    SELECT
        user_id,
        MIN(event_time) FILTER (WHERE event_name = 'visit') AS t_visit,
        MIN(event_time) FILTER (WHERE event_name = 'view_product') AS t_view,
        MIN(event_time) FILTER (WHERE event_name = 'add_to_cart') AS t_cart,
        MIN(event_time) FILTER (WHERE event_name = 'checkout') AS t_checkout,
        MIN(event_time) FILTER (WHERE event_name = 'payment') AS t_payment
    FROM events
    WHERE event_time >= '2026-03-01'
      AND event_time < '2026-04-01'
    GROUP BY user_id
),
strict_funnel AS (
    SELECT
        user_id,
        t_visit IS NOT NULL AS reached_visit,
        t_visit IS NOT NULL
            AND t_view > t_visit AS reached_view,
        t_visit IS NOT NULL
            AND t_view > t_visit
            AND t_cart > t_view AS reached_cart,
        t_visit IS NOT NULL
            AND t_view > t_visit
            AND t_cart > t_view
            AND t_checkout > t_cart AS reached_checkout,
        t_visit IS NOT NULL
            AND t_view > t_visit
            AND t_cart > t_view
            AND t_checkout > t_cart
            AND t_payment > t_checkout AS reached_payment
    FROM user_steps
)
SELECT
    COUNT(*) FILTER (WHERE reached_visit) AS visit,
    COUNT(*) FILTER (WHERE reached_view) AS view_product,
    COUNT(*) FILTER (WHERE reached_cart) AS add_to_cart,
    COUNT(*) FILTER (WHERE reached_checkout) AS checkout,
    COUNT(*) FILTER (WHERE reached_payment) AS payment
FROM strict_funnel

Здесь для каждого пользователя берём время первого вхождения каждого события и проверяем, что каждый следующий шаг произошёл строго после предыдущего. Этот подход точнее, но сложнее — на собеседовании уточните у интервьюера, нужна ли строгая последовательность.

Шаг 3: конверсии между шагами

WITH funnel_counts AS (
    -- подставьте любой из запросов выше
    SELECT
        COUNT(*) FILTER (WHERE step_visit = 1) AS visit,
        COUNT(*) FILTER (WHERE step_view = 1) AS view_product,
        COUNT(*) FILTER (WHERE step_cart = 1) AS add_to_cart,
        COUNT(*) FILTER (WHERE step_checkout = 1) AS checkout,
        COUNT(*) FILTER (WHERE step_payment = 1) AS payment
    FROM funnel
)
SELECT
    visit,
    view_product,
    ROUND(100.0 * view_product / NULLIF(visit, 0), 1) AS visit_to_view_pct,
    add_to_cart,
    ROUND(100.0 * add_to_cart / NULLIF(view_product, 0), 1) AS view_to_cart_pct,
    checkout,
    ROUND(100.0 * checkout / NULLIF(add_to_cart, 0), 1) AS cart_to_checkout_pct,
    payment,
    ROUND(100.0 * payment / NULLIF(checkout, 0), 1) AS checkout_to_payment_pct,
    ROUND(100.0 * payment / NULLIF(visit, 0), 1) AS overall_conversion_pct
FROM funnel_counts

NULLIF нужен, чтобы избежать деления на ноль. Подробнее о работе с SQL на собеседованиях — в отдельной статье.

Где искать потери

Воронка построена — дальше нужно понять, где она «протекает» сильнее всего. Здесь есть ловушка: интуитивно хочется смотреть на шаг с самым низким процентом конверсии, но это не всегда правильно.

Абсолютный drop vs. относительный

Допустим, воронка выглядит так:

Шаг Пользователей Step-to-step Потеряно
Визит 100 000
Просмотр 60 000 60% 40 000
Корзина 15 000 25% 45 000
Оформление 9 000 60% 6 000
Оплата 4 500 50% 4 500

По относительной конверсии хуже всего шаг «просмотр > корзина» (25%). По абсолютным потерям тоже — 45 000 человек. Здесь выводы совпадают, но так бывает не всегда.

Правило: начинайте с шага, который даёт наибольшее абсолютное число потерь. Именно там скрыт наибольший потенциал роста. Если вы улучшите конверсию «просмотр > корзина» с 25% до 30%, это +3000 пользователей в корзине. Если улучшите «оформление > оплата» с 50% до 60%, это +900 пользователей. Даже при меньшем процентном улучшении верхний шаг даёт больше в абсолюте.

Сравнение с бенчмарками

Если у вас нет исторических данных, сравнивайте с отраслевыми бенчмарками. Средние значения для e-commerce:

  • Просмотр > корзина: 5–15%
  • Корзина > оплата: 30–70% (зависит от ниши и устройства)

Если ваша конверсия «корзина > оплата» составляет 20% при среднем по рынку 40% — это красный флаг, даже если абсолютные потери на этом шаге невелики.

Сегментация воронки

Общая воронка показывает среднюю картину. Чтобы найти причину потерь, нужна сегментация.

По источнику трафика

Пользователи из органического поиска, платной рекламы и реферальных программ ведут себя по-разному. Если конверсия «просмотр > корзина» упала — возможно, проблема не в продукте, а в том, что вырос трафик из источника с низким intent (например, баннерная реклама).

По устройству

Мобильный трафик часто показывает конверсию в 2–3 раза ниже десктопного. Если доля мобильного трафика растёт, общая конверсия падает — даже если на каждом устройстве ничего не изменилось. Это эффект Симпсона (Simpson's paradox), и на собеседованиях его спрашивают регулярно.

По когортам

Разрезайте воронку по неделе регистрации. Если новые когорты конвертируются хуже — проблема в привлечении (изменился состав аудитории) или в онбординге. Если хуже конвертируются все когорты — проблема в продукте. Подробнее о когортном подходе — в статье про retention.

По географии, тарифу, сегменту

Любой атрибут пользователя может быть разрезом. Задача аналитика — не строить 50 разрезов, а выбрать 3–5 гипотез и проверить их через сегментацию. Начните с тех, которые объясняют наибольшую дисперсию.

A/B-тесты на шагах воронки

Когда вы нашли проблемный шаг, следующий вопрос — как его улучшить. Здесь начинаются A/B-тесты.

Ключевые принципы тестирования воронки:

Одна гипотеза — один тест. Если вы одновременно меняете форму оформления и добавляете новый способ оплаты, невозможно понять, что именно повлияло на конверсию.

Primary metric — конверсия конкретного шага. Если тестируете редизайн страницы оформления, primary metric — конверсия «оформление > оплата», а не общая конверсия от визита до оплаты. Общая конверсия будет secondary metric.

Следите за каннибализацией. Улучшение одного шага может ухудшить следующий. Пример: агрессивная кнопка «Добавить в корзину» увеличивает конверсию в корзину, но пользователи добавляют не думая и потом не покупают. Конверсия «корзина > оплата» падает. Поэтому всегда смотрите на end-to-end.

Размер выборки считайте для конкретного шага. Если на этап «оформление > оплата» попадает 9 000 пользователей в месяц, а текущая конверсия 50%, рассчитайте, сколько времени нужно для детекции минимального значимого эффекта. Может оказаться, что тест придётся держать 2–3 месяца.

Что спрашивают на собеседованиях

«Конверсия упала на 20%. Как будете разбираться?»

Это самый частый кейс по воронкам на собеседовании. Структура ответа:

  1. Уточните контекст. Какая именно конверсия: step-to-step или end-to-end? За какой период? По сравнению с чем (прошлая неделя, прошлый месяц)?

  2. Проверьте данные. Нет ли бага в логировании? Не изменилось ли определение события? Не было ли технического сбоя (падение сервера, ошибка платёжного шлюза)? 20% падение чаще вызвано техническими причинами, чем продуктовыми.

  3. Локализуйте шаг. На каком этапе воронки произошло падение? Если «визит > просмотр» — проблема на входе (трафик, лендинг). Если «корзина > оплата» — проблема в чекауте или оплате.

  4. Сегментируйте. Падение равномерное или сконцентрировано в одном сегменте? Проверьте: источник трафика, устройство, географию, новых vs. старых пользователей.

  5. Найдите причину. Совпадает ли падение по времени с каким-то событием: релиз, изменение рекламной кампании, действия конкурента, сезонность?

  6. Предложите действие. Если причина техническая — починить. Если продуктовая — сформулируйте гипотезу и предложите A/B-тест.

«Постройте воронку для [продукт X]»

Определите целевое действие продукта. Разложите путь пользователя на 4–6 шагов. Для каждого шага назовите событие, которое логируется. Не усложняйте — на собеседовании ценят ясность, а не количество шагов.

«Напишите SQL для расчёта конверсии»

Используйте запрос из раздела выше. Уточните у интервьюера: нужна ли строгая последовательность или достаточно «хотя бы раз совершил действие». Упомяните NULLIF для деления — это показывает внимание к краевым случаям.

«Чем отличается воронка от retention?»

Воронка — про путь к целевому действию (горизонтальное движение по шагам). Retention — про возврат к продукту после первого визита (вертикальное движение по времени). Воронка отвечает на вопрос «где теряем?», retention — «надолго ли остаются?». Оба инструмента дополняют друг друга: хорошая воронка без retention означает, что пользователи конвертируются, но не возвращаются.

Читайте также

FAQ

Что такое воронка конверсии?

Воронка конверсии — последовательность шагов, которые пользователь проходит от первого контакта с продуктом до целевого действия. На каждом шаге часть пользователей отсеивается. Задача аналитика — найти, где теряется больше всего пользователей, и понять почему.

Чем отличается step-to-step конверсия от end-to-end?

Step-to-step — доля пользователей, перешедших с одного шага на следующий (например, из корзины в оплату). End-to-end — доля от общего числа на первом шаге (например, от визита до оплаты). Оба показателя нужны: step-to-step показывает, где проблема, end-to-end — кумулятивный эффект.

Как найти самый проблемный шаг воронки?

Начинайте с шага, который даёт наибольшее абсолютное число потерь — там скрыт наибольший потенциал роста. Улучшение верхнего шага воронки даёт больше в абсолюте, даже при меньшем процентном улучшении, чем оптимизация нижнего шага.

Чем воронка конверсии отличается от retention?

Воронка — про путь к целевому действию (горизонтальное движение по шагам), retention — про возврат пользователя к продукту со временем (вертикальное движение по дням). Воронка отвечает на вопрос «где теряем?», retention — «надолго ли остаются?». Оба инструмента дополняют друг друга.


Потренируйтесь решать задачи по продуктовым метрикам и SQL в Карьернике — тренажёре для подготовки к собеседованиям аналитиков. 15 минут в день в Telegram, и воронки перестанут быть проблемой на интервью.