Все материалы
Продуктовая аналитикаматериалстарт

Конверсия: что это, формула и как считать без ошибок

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

КейсПрактика24 сентября 2026 г.11 мин

На планёрке маркетинг говорит, что конверсия в оплату — 3%. Продакт отвечает, что 20%. Спорят десять минут, потом выясняется: оба посчитали правильно. Один делил оплаты на визиты, другой — на зарегистрированных пользователей. Конверсия — самая простая формула в продуктовой аналитике и самая частая причина таких споров, потому что в ней три решения, которые никто не записывает: кого делить, на кого и за какой срок.

Коротко

Конверсия — это доля тех, кто совершил целевое действие, среди тех, кто мог его совершить за оговорённый срок. Её считают как отношение числа «сконвертировавшихся» к числу подходящих и записывают в процентах. По-английски — conversion rate, сокращённо CR. Пока не названы действие, знаменатель и окно, число конверсии ничего не значит.

  • Формула: CR = число совершивших действие / число тех, кто мог его совершить × 100%.
  • Знаменатель решает всё: на учебной базе одна и та же конверсия в оплату — 19,77% от пользователей и 3,18% от визитов.
  • Окно конверсии обязательно: за 7 дней после регистрации платят 4,57% пользователей, за всё время — 19,77%.
  • Сквозная конверсия воронки равна произведению конверсий шагов.
  • Конверсии сегментов нельзя усреднять простым средним — только суммой числителей, делённой на сумму знаменателей.
  • На маленьком знаменателе рядом с конверсией нужен доверительный интервал.

Как посчитать конверсию: формула

Формула одна для любого продукта: сколько объектов дошли до целевого действия, делённое на то, сколько объектов могли до него дойти. Объектом бывает пользователь, визит, сессия, заказ, показ рекламы. Важно, чтобы в числителе и знаменателе стоял один и тот же объект: пользователи к пользователям, визиты к визитам.

Возьмём учебную базу SQL-курса: сервис с регистрациями, событиями в продукте и оплатами подписки. Целевое действие — первая оплата. Подходят все, кто зарегистрировался. Из 4613 пользователей первую оплату сделали 912, конверсия в оплату — 19,77%.

Обратите внимание на left join: он оставляет в расчёте и тех, кто не заплатил. Если соединить таблицы обычным join, в знаменателе останутся только плательщики, и конверсия станет 100%.

Конверсия (CR)
CR = совершили целевое действие / могли его совершить × 100%

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

Конверсия регистрации в первую оплату: 912 из 4613, 19,77%
select
  count(*) as users,
  count(p.user_id) as payers,
  round(100.0 * count(p.user_id) / count(*), 2) as cr_pct
from users as u
left join payments as p
  on p.user_id = u.user_id
 and p.payment_type = 'first';

Конверсия из чего: почему знаменатель меняет ответ

Вернёмся к спору с планёрки. Маркетинг обычно делит на визиты: столько раз люди пришли, столько раз из визита случилась оплата. В учебной базе визит — это день, когда пользователь открыл приложение, событие app_open. Таких визитов 28 693, и 912 первых оплат дают на них 3,18%.

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

Третий вариант — ошибка, а не другой взгляд. Если взять в числитель все оплаты, включая продления, получится 1251 оплата и 27,12% от пользователей. Продление не делает человека платящим второй раз, так что число завышено: в числителе события, в знаменателе люди.

Одна и та же «конверсия в оплату» на учебной базе
ЧислительЗнаменательКонверсияНа какой вопрос отвечает
912 первых оплат4613 пользователей19,77%какая доля зарегистрированных начинает платить
912 первых оплат28 693 визита3,18%как часто визит заканчивается первой оплатой
1251 оплата всего4613 пользователей27,12%ни на какой: смешаны события и люди
Исходные числа для трёх вариантов
select
  (select count(*) from payments where payment_type = 'first') as payers,
  (select count(*) from payments) as all_payments,
  (select count(*) from users) as users,
  (select count(*) from events where event_name = 'app_open') as app_opens;

Что такое окно конверсии и почему без него числа не сравнить

Окно конверсии — срок, за который действие ещё засчитывается. «Оплатил в течение 7 дней после регистрации» и «оплатил когда-нибудь» — две разные метрики. В учебной базе первая оплата приходит через 3–20 дней после регистрации, медиана — 11 дней. За 7 дней платят 4,57% пользователей, за 14 — 12,64%, за всё время — 19,77%.

Без окна конверсия зависит от того, сколько времени прошло с регистрации. Данные в базе заканчиваются 30 августа. Пользователи, пришедшие в конце августа, ещё не успели дойти до оплаты, и конверсия «за всё время» у августа — 13,51% против 27,06% у июня. Это не обязательно падение продукта: семь из десяти августовских пользователей зарегистрировались после 10 августа и провели в данных меньше 20 дней.

С фиксированным окном сравнение честнее. 7-дневная конверсия почти не меняется: 5,09%, 4,47%, 4,38%. Но и у неё в августе есть незакрытый хвост — регистрации после 23 августа; без них август даёт 5,13%. Правило простое: окно не короче, чем обычно занимает путь до действия, и в сравнение попадают только те, у кого окно уже целиком прошло. Про такие группы по дате прихода — в материале о когортах.

Конверсия в первую оплату по месяцам регистрации, %

Учебная база SQL-курса, DuckDB. Данные заканчиваются 30 августа, поэтому у августа окна 14 дней и «за всё время» ещё не закрыты.

За 7 днейЗа 14 днейЗа всё время
Конверсия в первую оплату по месяцам регистрации с тремя окнами
select
  date_trunc('month', u.signup_date) as signup_month,
  count(*) as users,
  round(100.0 * count(*) filter (where p.paid_at < u.signup_date + 7) / count(*), 2) as cr_7d,
  round(100.0 * count(*) filter (where p.paid_at < u.signup_date + 14) / count(*), 2) as cr_14d,
  round(100.0 * count(p.paid_at) / count(*), 2) as cr_ever
from users as u
left join payments as p
  on p.user_id = u.user_id
 and p.payment_type = 'first'
group by signup_month
order by signup_month;

Конверсия шага и сквозная конверсия воронки

Когда путь к цели состоит из нескольких шагов, у каждого шага своя конверсия. В учебной базе после регистрации пользователь создаёт рабочее пространство, а затем первый отчёт. Рабочее пространство создали 2750 из 4613, это 59,61%. Отчёт — 1775 из 2750, это 64,55%.

Сквозная конверсия считается от начала воронки: 1775 из 4613, 38,48%. Она же получается перемножением шагов: 0,5961 × 0,6455 = 0,3848. Это удобно для оценки: если поднять второй шаг на пять пунктов, сквозная вырастет не на пять пунктов, а примерно на три.

Конверсия шага говорит, где теряются люди. Сквозная — сколько их доходит до конца. Спорить, что «конверсия выросла», не уточнив, о какой из них речь, — ещё один способ потратить планёрку.

Воронка активации на учебной базе

Каждый шаг считается от предыдущего: 59,61% и 64,55%. Сквозная конверсия — 38,48%.

Регистрация100% от входа
Создал рабочее пространство60% от входа
Создал первый отчёт38% от входа

Конверсия по каналам и устройствам: процент и количество

Общая конверсия почти всегда собрана из сегментов, которые конвертируются по-разному. В учебной базе лучший канал — рекомендации: 26,81%. Хуже всех платный поиск: 8,47%. Разница больше чем в три раза, и общие 19,77% её полностью прячут.

Рядом с процентом держите количество. Органика конвертируется хуже рекомендаций, но приносит 410 платящих против 278, потому что пользователей там больше. Если решать, куда вкладываться, по одной только конверсии, легко выбрать маленький сегмент с красивой долей и потерять большой.

По устройствам разрыв скромнее: на десктопе 21,48%, на мобильных 17,95%. Такое различие уже стоит проверять интервалом, прежде чем объявлять мобильную версию проблемой.

Конверсия в первую оплату по каналам, учебная база
КаналПользователиПлатящиеКонверсия
referral103727826,81%
organic174741023,47%
partner81413816,95%
paid_search1015868,47%
Все каналы461391219,77%

Можно ли усреднять конверсии сегментов

Нельзя, если нужна общая конверсия. Среднее четырёх чисел из таблицы выше — 18,93%, а настоящая конверсия — 19,77%. Простое среднее даёт каждому каналу одинаковый вес, хотя в органике 1747 человек, а у партнёров 814. Правильно сложить числители, сложить знаменатели и разделить одно на другое.

Хуже, когда состав сегментов меняется во времени. 14-дневная конверсия упала с 16,03% у июньских регистраций до 13,42% у июльских. Выглядит как ухудшение продукта. Но в июле появился платный поиск: 482 новых пользователя с конверсией 5,6%. Без него июль даёт 198 оплат на 1194 пользователя, 16,58% — выше июня.

Каналы при этом двигались по-разному: органика выросла с 14,85% до 16,58%, партнёры — с 11,03% до 12,65%, рекомендации упали с 22,6% до 19,32%. Это эффект смены состава, а не чистый парадокс Симпсона, при котором все сегменты растут, а общее число падает. Вывод тот же: прежде чем объяснять движение общей конверсии, разложите его на сегменты и их доли.

Взвешенная конверсия и простое среднее по каналам: 19,77 и 18,93
with by_channel as (
  select
    u.channel,
    count(*) as users,
    count(p.user_id) as payers
  from users as u
  left join payments as p
    on p.user_id = u.user_id
   and p.payment_type = 'first'
  group by u.channel
)
select
  round(100.0 * sum(payers) / sum(users), 2) as weighted_cr,
  round(avg(100.0 * payers / users), 2) as simple_avg_cr
from by_channel;

Что делать с конверсией на маленьком знаменателе

У 55 пользователей учебной базы не указана страна. Из них платят 7, конверсия 12,73%. На дашборде это выглядит как проблемный сегмент: в среднем по базе 19,77%.

Доверительный интервал показывает, насколько число шаткое. Для 7 из 55 95-процентный интервал Уилсона — от 6,3% до 24,0%. В него попадает и общая конверсия, и заметно более высокие значения. Для всей базы, 912 из 4613, интервал — от 18,6% до 20,9%. Одна и та же формула, но во втором случае за числом стоит в 84 раза больше людей.

Практическое правило: если в знаменателе десятки, а не тысячи, показывайте интервал рядом с процентом или хотя бы абсолютные числа. Одна лишняя оплата из 55 сдвигает конверсию почти на два пункта.

Как сравнивают конверсию в A/B-тесте

В A/B-тесте конверсия — самая частая основная метрика, и все предыдущие вопросы там решаются заранее: целевое действие, знаменатель и окно фиксируются до запуска. В учебной базе есть эксперимент onboarding_checklist: у пользователей с чеклистом онбординга конверсия 30,3% (467 из 1541), в контроле — 20,04% (306 из 1527).

Интервалы для вариантов — 28,1–32,6% и 18,1–22,1% — не пересекаются, разница велика для такого объёма. Но проверка значимости не единственная: до вывода смотрят, не разъехались ли группы по размеру, одинаково ли считается конверсия в обеих и не остановили ли тест, увидев красивое число.

Конверсия по вариантам эксперимента
select
  variant,
  count(*) as users,
  count(*) filter (where converted) as converted,
  round(100.0 * count(*) filter (where converted) / count(*), 2) as cr_pct
from experiment_exposures
where experiment_name = 'onboarding_checklist'
group by variant
order by variant;

Почему конверсия в SQL получается нулём

Частая жалоба новичка: запрос конверсии возвращает 0. Причина — целочисленное деление. count(*) возвращает целое число, и в PostgreSQL деление целого на целое отбрасывает дробную часть: select 912 / 4613 возвращает 0. Лечится одним символом: 100.0 * 912 / 4613 даёт 19,77, потому что умножение на дробное число стоит до деления.

В DuckDB, на котором работает песочница курса, оператор / всегда делит дробно, и ловушка не срабатывает. Целочисленное деление там пишется отдельно: 912 // 4613 тоже даёт 0. Запрос, проверенный в песочнице, может вернуть нули на рабочей базе, поэтому привычка писать 100.0 * полезна везде.

Как записать определение конверсии, чтобы о нём не спорили

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

  • Целевое действие: какое событие и с какими условиями. «Первая оплата», а не «оплата».
  • Объект: пользователь, визит, заказ. Один и тот же в числителе и знаменателе.
  • Кто в знаменателе: все зарегистрированные, только увидевшие экран, только новые.
  • Окно: за сколько дней от какой точки действие засчитывается, и кто исключается, пока окно не закрыто.
  • Разрезы: по каким сегментам конверсию смотрят всегда, и что в отчёте стоит рядом с процентом — абсолютные числа или интервал.

Что почитать дальше

Все запросы из материала можно выполнить в песочнице SQL-курса: там та же учебная база. Попробуйте посчитать 14-дневную конверсию по каналам и устройствам одновременно и найти сегмент, где интервал шире всего.

Продолжить чтение
Вся библиотека