# 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}) и заменить параметры.

# Связанные страницы