Эксперименты и атрибуция
Эксперимент – общий способ сравнивать варианты поп-апов, ветки кампаний и другой совместимый контент. На этапе миграции поп-апы и split-узлы кампаний сохраняют прежнее детерминированное распределение; общий эксперимент даёт им надёжную отчётность и постоянную ссылку на отчёт.
Настройка версии
В эксперименте от двух до пяти вариантов, ровно 10 000 базисных пунктов распределения и не более одной контрольной группы. Контроль может означать отсутствие сообщения или контента. Выберите единицу назначения:
- Пользователь – один человек остаётся в одном варианте.
- Путь – один запуск кампании остаётся в ветке, а следующий путь может получить независимое назначение.
Назначение детерминированно и сохраняется. Оно опирается на неизменяемую версию эксперимента и ID назначения, поэтому повтор callback не переводит пользователя в другой вариант.
До запуска задайте аудиторию, основную и дополнительные цели, источник значения и окно атрибуции. Версия может ссылаться на совместимый контент и цели, включая константу, свойство события, платёж или сделку CRM, где это настроено.
Версии и жизненный цикл
Статусы: черновик, запущен, приостановлен, завершён, отменён, архивирован. Запуск использует текущую неизменяемую версию; приостановка не меняет её назначение. Завершённый или отменённый эксперимент можно архивировать.
После первого exposure изменение контента или распределения создаёт новую версию, а не меняет уже показанную. При сравнении результатов смотрите на выбранную версию. Победитель выбирается вручную один раз, остаётся виден после архивации и не является автоматическим выводом о значимости.
Факты и атрибуция
В отчёте доступны назначения, exposure, доставка, открытие, клик, ответ,
конверсия, отписка и жалоба. У факта есть устойчивый ID исходного события,
поэтому повторные callback идемпотентны. Доход хранится отдельно в знаковых
64-битных минимальных денежных единицах с ISO 4217 валютой: например,
1250 и EUR означают €12,50.
Доход группируется по валютам. EUR, RSD и USD никогда не складываются молча. Для межвалютного сравнения нужен отдельный процесс с курсом на конкретный момент времени.
Для отчёта выберите одну модель атрибуции:
- Первое касание относит подходящую конверсию к первому касанию.
- Последнее касание относит её к последнему подходящему касанию.
- Назначение эксперимента относит её к назначению варианта.
В интерфейсе и ответе явно указаны выбранная модель и окно атрибуции неизменяемой версии. Модели не смешиваются в одном итоге.
Предупреждения и когорты
Предупреждения – детерминированные проверки качества данных, а не заявления о статистической значимости. Они сообщают о незавершённом эксперименте, менее 30 exposure у варианта, назначениях без exposure, заметном отклонении распределения при достаточном числе назначений и количестве кликов или конверсий больше exposure. Перед выбором победителя проверьте доставку и инструментацию.
В когорте можно листать назначения варианта курсором. Сегментный фильтр отчёта использует текущую опубликованную принадлежность к выбранному сегменту.
Совместимость поп-апов и кампаний
Многовариантный поп-ап получает общий эксперимент только после переноса устаревших фактов. Для возвращающегося пользователя ранее показанный вариант остаётся приоритетным, поэтому контент не меняется посреди пути. Статистика поп-апа сохраняет старую форму ответа и возвращается к старым счётчикам, если паритет не доказан.
У split-узла кампании хранится время cutover. Пути, начавшиеся раньше, остаются на прежнем детерминированном распределении. Общий отчёт становится готовым лишь после завершения этих путей, поэтому система не выдумывает исторические назначения веток.
Примеры API и MCP
REST-отчёт требует PAT с experiments:read и правом бота «Аналитика».
Диапазон – ограниченный RFC3339 UTC, в JSON нет реального токена или данных
клиента.
curl -X POST "$BASE_URL/api/bots/$BOT_ID/experiments/$EXPERIMENT_ID/report" \
-H "Authorization: Bearer $PAT" \
-H "Content-Type: application/json" \
-d '{
"version": 2,
"attribution_model": "assignment",
"from": "2026-07-01T00:00:00Z",
"to": "2026-08-01T00:00:00Z",
"segment_id": "00000000-0000-4000-8000-000000000000"
}'
400 означает неверный запрос отчёта. 404 означает, что эксперимент или
явно запрошенная версия недоступны в этом боте. 409 относится к конфликту
оптимистичного обновления или выбору победителя, но не к отсутствующей версии
отчёта. Когорту назначений читают с query-параметрами version, необязательным
variant, limit и курсором из предыдущей страницы.
MCP публикует только read-only инструменты общего эксперимента с тем же scope
experiments:read:
{"name":"get_experiment_report","arguments":{"bot_id":"<bot-id>","experiment_id":"<experiment-id>","version":2}}
Также доступны list_experiments и get_experiment. MCP не запускает и не
приостанавливает эксперимент, не редактирует его, не выбирает победителя, не
создаёт назначения и не записывает факты.