Блок «Случайное разделение»
Разводит клиентов по двум путям — 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`). Для сравнения по конверсии смотрите аналитику и критерий победителя, а не поле статистики блока