Как заменить стандартную страницу отписки

Можно сделать такую прекрасную страницу отписки:

Снимок экрана 2022-04-07 в 19.11.58.png

Стандартная страница отписки для клиента выглядит так:

Снимок экрана 2022-03-05 в 18.08.41.png

Создание встроенного блока для отписки с помощью персонализации сайта

Для настройки страницы отписки с помощью встроенных блоков в качестве страницы отписки потребуется:

1. Подключить модуль "Персонализация сайта";
2. Создать страницу (пустую или с заголовком), встроить блок на страницу, ссылку на эту страницу вставить в письмо с тикетом:

Для изменения подписок воспользуйтесь <a href=”страничка_сайта?direct-crm-ticket=${Ticket.EmailAuthenticationTicket}”>ссылкой.</a> 

3. Создать операцию для отписки клиента от рассылок. Для этого в кампании создаем операцию с шагом редактирования авторизованного клиента как на скрине ниже:

operation_definition1

Сохраняем системное имя операции, оно нам понадобится чуть позже.

4. Настроить встроенный блок, в котором клиент может выбирать подписку на механики или отписываться от всех рассылок.

Можно выбрать этот шаблон:

Снимок экрана 2022-04-06 в 17.31.53.png

Далее в редактировании шаблона задаем название переменной для каждого варианта ответа:

Снимок экрана 2022-04-07 в 15.39.38.png

Далее в настройке "Дополнительные поля" копируем системное имя переменной и подставляем его в код как на скрине ниже.

Для этого в "Действия после заполнения формы клиентом" нужно выбрать "Вызывать пользовательский JS" - "Отправка контактов".

Снимок экрана 2022-04-07 в 18.07.10.png

Обратите внимание, что здесь нужно заполнить название операции, которое сохранили в пункте 3.

Пример кода:

function getTicket(name) {
    name = name.replace (/[\[\]]/g, '\\$&');
    var regex = new RegExp(name+'(=[a-z0-9-]+)', 'i');
    var results = window.location.href.match(regex);
    if (!results) return null;
    if (!results[0]) return '';
    return results[0].split('=')[1];
}
var ticket = getTicket('direct-crm-ticket');
mindbox("async", {
 operation: "Название операции для отписки",
 data: {
  customer: {
    authenticationTicket: ticket,
    subscriptions: [
      {
        pointOfContact: "Email",
        topic: "children clothes",
        isSubscribed: !!parseInt('%customs.children_clothes%')
      },
      {
        pointOfContact: "Email",
        topic: "sport",
        isSubscribed: !!parseInt('%customs.sport%')
      },
      {
        pointOfContact: "Email",
        topic: "children footwear",
        isSubscribed: !!parseInt('%customs.children_footwear%')
      }
    ]
  }
}});

Вы также можете сделать одно из полей для интеграции отпиской от всех тематик. Пример обработки такого поля в коде:

{
    pointOfContact: "Email",
    isSubscribed: !parseInt('%Имя для интеграции варианта%')
}

Далее нажимаем "Запустить".