Главная ошибка A/B в B2C: вы меряете не эффект фичи, а то, что в группы приехал разный трафик

Сценарий узнаваемый: запускаете эксперимент, видите “рост” конверсии или выручки, релизите. Через неделю метрика откатывается, а спор начинается заново. Цена ошибки не в том, что тест “неправильный”. Цена в том, что продукт и маркетинг принимают решение на шуме, а вы закрепляете ложную причинность.

Почему так происходит: рандомизация работает только если группы получают сопоставимый поток пользователей и событий. В B2C поток постоянно перетасовывается: платные каналы то включили, то выкрутили; промо и пуши меняют состав аудитории; сезонность и день недели подменяют эффект; пользователь может пересекать аудитории и попадать в разные условия через разные поверхности. Итог: различия в метриках объясняются не изменением поведения, а изменением состава.

Красные флаги и что проверять до вывода “есть эффект”:

  1. Дрейф каналов: в разрезе source medium campaign доля трафика и доля выручки в группах заметно разные. Смотрите не только визиты, но и первых покупающих.
  2. Промо и коммуникации: письма, пуши, in-app баннеры, промокоды. В логах экспозиций проверьте, что кампании одинаково “достали” группы, или явно исключены.
  3. Сезонность и календарь: эффекты, которые появляются ровно в конкретные дни и исчезают в другие. Разрез по дню недели, часу, праздничным датам часто разбивает “чудо” на куски.
  4. Пересечения аудиторий и повторные входы: один и тот же человек видит разные условия на разных девайсах, в разных сессиях, через разные точки входа. Сверьте стабильность assignment по user_id, долю мультидевайса, долю “переоблучений”.
  5. Странности в распределении: SRM, резкие провалы событий в одной группе, отличия в доле новых пользователей, гео, версии приложения. Это чаще баг трекинга или раскатки, чем продуктовый эффект.

Правильная практика выглядит скучно: перед анализом результата вы делаете “паспорт трафика” по группам и фиксируете, что отличия укладываются в ожидаемый шум. Если трафик управляемый и качается промо, честнее либо замораживать маркетинг на время теста, либо переключаться на дизайн, устойчивый к внешним шокам (гео, switchback, holdout). Обычно спорят про статистику, но чаще ломается именно причинность.