# JS-действия в персонализациях и A/B-тестах
Один контур на сайте
Персонализация, A/B-тест и rule-based действие в админке — разные продукты, но на сайте применяются через общий pipeline. Реагировать в своём коде: onPersonalization. Запустить вручную: applyPersonalization.
В редакторе варианта персонализации, A/B-теста или rule-based действия вам доступен набор «JS-действий» — шаги, которые срабатывают в момент показа варианта на сайте, дополнительно к изменению DOM. Часть из них — нативные (изменить HTML, поменять стиль, передать кастомный параметр, выставить cookie, сделать редирект), часть — интеграционные: вызвать функцию внешнего сервиса.
Интеграционные JS-действия не требуют проектной интеграции — достаточно, чтобы соответствующий сервис был установлен на сайте через свой обычный скрипт. Sales Ninja просто вызывает его API в момент применения варианта.
# Список интеграционных JS-действий
# Yandex Metrika {#yandex-metrika}
Вызов ym(<counterId>, 'reachGoal', '<targetName>', <params?>) в момент применения варианта. Полезно, чтобы
поведенческие события в Метрике автоматически появлялись, когда персонализация сработала.
Параметры в редакторе: counter ID, target name, опционально — JSON-параметры события.
Связано: подключённая интеграция Яндекс.Метрики на уровне проекта не требуется для этого действия — но если она подключена, вы дополнительно увидите эту цель в отчётах Sales Ninja по проекту, что упростит атрибуцию.
# Mindbox {#mindbox}
Вызов SDK Mindbox (метод mindbox() с произвольным operation и параметрами). Срабатывает, если на сайте
установлен SDK Mindbox.
Параметры в редакторе: operation name + JSON-параметры.
Проектной интеграции с Mindbox нет — Sales Ninja только инициирует вызов SDK, не общается с Mindbox со своей стороны. Но Mindbox может быть источником ML-сигнала.
# Carrot Quest {#carrot-quest}
Вызов SDK Carrot Quest: трекинг события, идентификация пользователя, отправка кастомного свойства.
См. также: Carrot Quest как ML-сигнал.
# Jivo {#jivo}
Управление виджетом чата Jivo: открыть, закрыть, передать кастомное сообщение.
См. также: Jivo как ML-сигнал.
# RoiStat {#roistat}
Установка кастомного поля сделки в RoiStat в момент применения варианта (для последующего сквозного отчёта).
См. также: RoiStat как ML-сигнал.
# CallTouch {#calltouch}
Вызов функции подмены номера CallTouch или фиксация кастомного события подмены при применении варианта.
Можно использовать вместе с проектной интеграцией CallTouch — тогда звонки и события автоматически появятся в Sales Ninja как конверсии.
# Нативные действия (без интеграций)
html— изменить HTML/текст элемента, добавить/удалить класс, вставить блок.cookie— выставить cookie, прочитать cookie.url— редирект.params— записать custom-параметр в user-scope params или page-scope params.
# Где задаётся в API
В теле POST /public/api/v1/manage/personalizations
и аналогах для A/B / rule-based действий — в массиве variants[].modifications[]:
{
"type": "mindbox",
"actionJson": {
"mindbox": {
"operation": "Website.Viewed.Product",
"data": { "productId": "{{productId}}" }
}
}
}
Конкретный JSON под каждым типом действия проще скопировать из существующего варианта (через
GET /manage/personalizations/{id}) и заменить
параметры.