Блок «Случайное разделение»

Разводит клиентов по двум путям — A и B — в заданной пропорции. Например, 50/50 или 70/30. Один и тот же клиент всегда попадает в одну и ту же ветку: распределение детерминированное (считается по ID клиента), а не «бросок монеты» при каждом проходе. Поэтому человек не «перепрыгнет» между вариантами при повторном входе в воронку.

Блок попутно копит статистику — сколько клиентов ушло в ветку A и сколько в B, — чтобы потом сравнить эффективность путей.

Когда использовать

  • Сравнить две версии сценария (разные тексты, офферы, порядок шагов) на живых клиентах
  • Раскатать новую ветку постепенно — например, отправить туда только 10% аудитории
  • Разделить нагрузку или аудиторию на два потока для разной обработки
  • Закрепить за клиентом стабильный вариант, чтобы он не менялся между сессиями

Настройки

Блок настраивается на вкладке «A/B Тест» (она общая с блоком «A/B тест»). Поля, которые задаёт пользователь:

  • Варианты (ветки) — список путей. У каждого варианта своё название и вес. Минимум один вариант обязателен, иначе блок не пройдёт валидацию и не сохранится корректно
  • Название варианта — подпись ветки (например, «Старый оффер» / «Новый оффер»), нужна только для удобства в редакторе
  • Вес (%) — ползунок от 1 до 99. Доля клиентов, которая попадёт в этот вариант. Веса автоматически пересчитываются так, чтобы в сумме давать 100% (индикатор «Итого» зелёный при 100%, оранжевый — если не сходится)
  • Критерий победителя — по чему сравнивать ветки: следующий клик по кнопке или завершение текущей воронки. Поле относится к A/B-тестовому режиму вкладки
  • Длительность теста (часы) — от 1 до 720, по умолчанию 24. Это окно атрибуции и момент, после которого лаборатория оценивает статистическую значимость

Сами ветки на холсте подключаются перетаскиванием стрелок от блока к следующим шагам — это и есть пути A и B.

Как работает

  • Из настроек берётся процент ветки A (поле `splitA`); если он не задан — используется 50
  • По ID клиента считается стабильное число от 0 до 99. Если оно меньше процента A — клиент идёт в ветку A, иначе в ветку B
  • Дальше блок ищет исходящую стрелку, помеченную как ветка `a` или `b`. Если помеченной стрелки нет — берётся первая стрелка для ветки A и вторая для ветки B (если второй нет — снова первая)
  • После выбора ветки асинхронно увеличивается счётчик показов: `statsA.sent` или `statsB.sent` прямо в данных блока. Считаются только показы (`sent`), конверсии этим счётчиком не пишутся
  • Запись статистики не блокирует прохождение воронки: если БД недоступна, ошибка молча проглатывается, и клиент всё равно идёт дальше
  • Блок не пишет результат в переменные клиента — он только направляет дальше по выбранной ветке

Пример

Нужно проверить, какой приветственный текст лучше удерживает людей. Ставим блок «Случайное разделение» после старта воронки, задаём 50/50. От ветки A ведём стрелку к блоку «Сообщение» со старым текстом, от ветки B — к блоку с новым. Через неделю смотрим счётчики показов A и B и аналитику, чтобы решить, какой текст оставить на всех.

Если хотим раскатывать новую версию осторожно — ставим A = 90 (старый сценарий), B = 10 (новый), и только каждый десятый клиент попадает в эксперимент.

Частые ошибки

  • Не подключены обе ветки. Если от блока выходит только одна стрелка, часть клиентов попадёт в пустую ветку и упрётся в тупик — рисуйте стрелки и для A, и для B
  • Ждёте, что клиент «перетасуется». Распределение детерминированное по ID: один и тот же человек всегда идёт в ту же ветку. Это не баг — так задумано, чтобы вариант не «прыгал» между сессиями
  • Пустой список вариантов. Без хотя бы одного варианта блок не проходит валидацию — добавьте ветки и убедитесь, что «Итого» равно 100%
  • Ищете конверсию в счётчике. Встроенный счётчик ветки пишет только показы (`sent`). Для сравнения по конверсии смотрите аналитику и критерий победителя, а не поле статистики блока