Разберите отчёт об онбординге: конверсия в покупку за 7 дней не изменилась, но среднее время до покупки среди покупателей снизилось. Какой основной вывод следует из этого отчёта?
WITH users(period, user_id, signup_date) AS (
VALUES
('before', 1, DATE '2025-06-01'), ('before', 2, DATE '2025-06-01'),
('before', 3, DATE '2025-06-01'), ('before', 4, DATE '2025-06-01'),
('after', 5, DATE '2025-07-01'), ('after', 6, DATE '2025-07-01'),
('after', 7, DATE '2025-07-01'), ('after', 8, DATE '2025-07-01')
), purchases(period, user_id, purchase_date) AS (
VALUES
('before', 1, DATE '2025-06-04'), ('before', 2, DATE '2025-06-06'),
('after', 5, DATE '2025-07-02'), ('after', 6, DATE '2025-07-03')
)
SELECT u.period,
COUNT(DISTINCT p.user_id)::numeric / COUNT(DISTINCT u.user_id) AS conversion_7d,
AVG(p.purchase_date - u.signup_date) AS avg_days_among_buyers
FROM users u
LEFT JOIN purchases p ON p.period = u.period AND p.user_id = u.user_id
GROUP BY u.period;
Онбординг, вероятно, ускорил покупку среди уже конвертирующихся пользователей, но не увеличил долю пользователей, которые покупают за 7 дней. Среднее время рассчитано только по покупателям, поэтому это условная метрика: она не отражает пользователей, которые не совершили покупку.
Нельзя на основании такого отчёта утверждать, что выросла общая эффективность воронки. Для решения нужно отдельно анализировать конверсию и распределение времени до покупки.
По мере развития продуктовой аналитики одного показателя конверсии стало недостаточно: два варианта продукта могли приводить к одинаковой доле покупок, но один — быстрее. Поэтому в анализ воронок добавили метрики latency, то есть времени от исходного события до целевого.
Проблема возникла из-за смешения двух разных вопросов: «сколько пользователей достигло цели?» и «как быстро цель достигается теми, кто её достиг?». Разделение этих вопросов уменьшает риск принятия решения по метрике, которая описывает только часть аудитории.
В запросе конверсия за 7 дней считается по всем пользователям, а среднее время — только для пользователей с покупкой. Это разные совокупности и разные типы показателей.
Если конверсия не изменилась, а время среди покупателей уменьшилось, возможны несколько интерпретаций: онбординг ускорил путь к покупке, изменил поведение только наиболее мотивированных пользователей или повлиял на измерение даты покупки. Ни одна из этих интерпретаций не означает автоматически рост числа покупателей.
Неверный вывод особенно опасен, если команда запустит изменение, ориентируясь на сокращение времени, хотя оно, например, ухудшило опыт пользователей, которые раньше покупали позже семи дней. Также нельзя сравнивать незрелые когорты: у недавно зарегистрированных пользователей часть будущих покупок ещё не наблюдалась.
В запросе показатель conversion_7d имеет знаменателем всех пользователей, а avg_days_among_buyers вычисляется после исключения пользователей без покупки. Поэтому снижение второго показателя означает только то, что наблюдаемые покупатели стали покупать раньше.
Для корректного решения следует смотреть на набор взаимодополняющих метрик:
Минимальный вариант расчёта дневной кривой конверсии выглядит так:
Такая кривая показывает, достигается ли одинаковый итог только быстрее или же меняется доля конвертирующихся пользователей. Для неполностью наблюдаемых когорт применяют методы анализа времени до события с учётом правого цензурирования, например survival-анализ. Для продуктового решения часто достаточно сравнить полностью созревшие когорты и заранее зафиксированное окно наблюдения.
Среднее время чувствительно к редким длинным задержкам, поэтому полезно проверять медиану и 75-й или 90-й перцентиль. Сравнение должно проводиться на сопоставимых когортах, с одинаковым определением покупки, часовым поясом и правилами атрибуции.
В иллюстративном кейсе команда увидела неизменную семидневную конверсию и сокращение среднего времени до покупки после изменения онбординга. Рассматривались три варианта: сразу запустить изменение, отклонить его из-за отсутствия роста конверсии или провести дополнительный анализ кривой конверсии.
Немедленный запуск был бы быстрым, но игнорировал бы основной бизнес-результат. Полный отказ был бы слишком консервативным: ускорение покупки может улучшать денежный поток и снижать стоимость последующих коммуникаций. Дополнительный анализ требовал больше времени, зато позволял отличить ускорение от реального роста числа покупателей.
Выбрали третий вариант: сравнили конверсию по дням, медиану времени до покупки, выручку на пользователя и качество заказов на зрелых когортах. Если кривая конверсии не меняется, но покупки стабильно происходят раньше без ухудшения выручки и возвратов, изменение можно оценивать как ускорение пути к ценности, но не как рост конверсии.
1. Может ли снижение среднего времени до покупки быть вызвано составом покупателей, а не улучшением продукта?
Да. Если изменение привлекло или сохранило больше пользователей с высокой исходной мотивацией, среднее время среди покупателей уменьшится даже без улучшения самого сценария. Нужно сравнить результат по заранее определённым сегментам, каналам и исходным признакам, не выбирая сегменты постфактум.
2. Как сравнивать время до покупки у пользователей, которые ещё не успели купить?
Исключать их из анализа нельзя без оговорок: это создаёт условное сравнение только среди уже сконвертировавшихся. Для незрелых наблюдений используют фиксированное окно, например конверсию за 7 дней, либо методы survival-анализа, учитывающие, что событие пока не произошло и наблюдение ещё продолжается.
3. Почему нельзя заменить среднее время до покупки простой медианой?
Медиана устойчивее к выбросам, но также описывает только покупателей и может скрыть изменения в хвосте распределения. Например, большинство пользователей может покупать одинаково быстро, тогда как доля очень поздних покупок заметно изменится. Поэтому медиану следует рассматривать вместе с кривой накопительной конверсии, квантилями и бизнес-метриками.