Первые шаги
Пользовательские данные
- Обзор адаптивного email-редактора
- Создание оформления для письма
- Создание сквозных модулей
- Настройка адаптивности
- Настройка smart-контейнеров
- Оформление промовкладки для Gmail
- Добавление Ролловера
- Добавление анкорных ссылок
- Библиотека модулей
- Добавление таблицы в письмо
- Работа с блоком "Баннер"
- Добавление пользовательских шрифтов
- Создание кнопки CTA
- Работа с блоком "Картинка"
- Работа с блоком “Таймер"
- Использование ИИ в email-редакторе
- Поддержка мессенджер-протоколов почтовыми клиентами и платформами
Омниканальность
- SDK для мобильных приложений
- Управление ключами доступа к мобильному SDK
- Подключение мобильного приложения
- Создание и загрузка ключа Firebase
- Создание мобильных push-сообщений
- Настройка аналитики доставляемости и кликов
- Планирование мобильных push-уведомлений
- Типы диплинков
- Отправка тестовых сообщений из отладки запросов
- Настройка виджетов для сайта
- Геймификация виджетов
- Вызов виджета
- Настройка геоданных для правил вызова виджетов
- Сохранение данных из виджетов в поля контактов
- Защита от раздражения
- Действия после заполнения формы
- Замена системного сценария Double Opt-In
- Создание pop-up-форм с помощью Google Tag Manager или WordPress
- Отправка событий из форм подписки в Google Analytics
- A/B-тестирование виджетов
- Сбор контактных данных с помощью форм запросов
Автоматизация
- Настройка и редактирование сценариев
- Настройка условий запуска и остановки сценария
- Блок “Старт”
- Группа блоков “Популярные”
- Группа блоков “Сообщения”
- Использование блока сообщений "Одно из многих"
- Группа блоков “Контакт”
- Группа блоков "Условия"
- Группа блоков “Другое”
- Группа блоков “Сообщение на группу”
- Группа блоков “Время”
- Расширенные параметры блоков сценариев
- Разрешенное время отправки
- Вебхуки в сценариях
- Отслеживание истории запусков сценария
- Если сценарий не работает
- Двойное подтверждение подписки
- Приветственная серия
- Приветственная серия с сегментацией по категориям
- Запуск сценария после импорта контактов
- Регулярный сценарий для группы
- Поздравление с днем рождения
- Привязка сценария к кнопке
- Использование переменных из заказа в сценарии
- Сбор отзывов о заказе
- Реактивация клиентов и подписчиков
- Отправка рассылки непрочитавшим
- Настройка дополнительных рассылок
- Отправка напоминаний в заданное пользователем время
- А/B-тестирование в сценариях
Персонализация
- Подстановка промокода из файла
- Подстановка промокода с использованием API
- Принципы генерации промокодов с помощью PHP/JAVA
- Подстановка промокода с помощью персонализации
- Загрузка промокодов для использования в сценарии
- Генерация промокодов в сценарии
- Отправка промокода с помощью препроцессора
- HTTP-запрос для передачи промокода из сообщения в карточку контакта
Аналитика
- Отчёт по email-рассылке
- Отчет по SMS-рассылке
- Отчет по рассылке Web Push
- Отчет по Viber-рассылке
- Отчет по рассылке Mob Push
- Отчет по рассылке App Inbox
- Отчет по Telegram-рассылке
- Отчет по взаимодействию с In-App
- Отчет по взаимодействию с виджетами
- Отчет по триггерной рассылке
- Отчет по AMP-рассылке
- Отчет по мультиязычной рассылке
- Настройка передачи UTM-меток
- Визуализация дохода
- Отслеживание эффективности кампаний в Google Analytics 4
- Статистика сообщений
Мультиязычность
Отслеживание событий и поведения
- События для запуска триггерных рассылок
- Именование пользовательских событий
- Валидация параметров события
- Отслеживание активности на сайте при помощи Generate event
- Подстановка данных из событий в сообщения
- Разветвление сценария в зависимости от параметров события
- Отслеживание активности клиентов в мобильных приложениях
- Вебхуки для отслеживания активности
- Аналитика событий
Товарные рекомендации
API
Смена системы
Документы
Интеграция
Переменные в профиле контакта и возможности Velocity
Самый простой и широко используемый пример персонализации – во время отправки автоматически производится замена переменной %FIRSTNAME% на имя клиента. Имя подставляется только в том случае, если соответствующее поле заполнено в карточке контакта.
По такому же принципу при помощи переменных можно автоматически подставлять следующие значения:
- фамилия получателя;
- город или страна;
- обращение к получателю, например, “уважаемая” или ”уважаемый” и комбинировать его с именем клиента;
- промокод или ссылку на qr код;
- имя закрепленного менеджера, адрес, емейл и контактный телефон магазина или заведения;
- кол-во активных бонусов на карте клиента.
Сообщения, содержащие переменные персонализации, используются как для автоматических, так и для массовых ручных рассылок.
Больше вариантов персонализации для использования в письмах можно найти в Личном кабинете → Настройки → Дополнительные поля. В дополнительных полях может содержаться абсолютно любая информация о клиенте, которую вы передаете в eSputnik по API.
Все указанные в допполях переменные можно использовать во всех доступных каналах (email, SMS и т.д.).
Данные из любого поля контакта могут быть добавлены в тело сообщения при помощи специального меню в редакторе eSputnik.
Подробнее об использовании переменных профиля >
Оптимизация использования переменных с функциями Velocity
Использование переменных из профиля контакта может быть сопряжено с некоторыми трудностями. Например, вам может понадобиться отображать разные блоки сообщений в зависимости от контактных данных. Или скрыть определенные блоки, если данные отсутствуют. Решить эту задачу помогут возможности velocity.
Пример использования
Персонализация сообщения в зависимости от данных о местоположении
Задача
В профиле контакта имеется дополнительное поле PERSONAL.LOCATION. В зависимости от данных в этом поле в письме нужно выводить разные блоки:
- Если PERSONAL.LOCATION = Мальдивы — показывать блок с описанием этой локации и не показывать блок с описанием Тосканы.
- Если PERSONAL.LOCATION = Тоскана — показывать блок с описанием этой локации и не показывать блок с описанием Мальдив.
- Если PERSONAL.LOCATION ≠ Мальдивы или Тоскана — не показывать ни один из этих блоков.
Решение
1. Нажмите на первую структуру в письме, в которой вы хотите отобразить динамический контент (Тоскана), и откройте редактор кода.
2. Найдите первый тег tr в коде структуры.
3. Над тегом tr объявите переменные, которые будут использоваться в письме. В нашем случае это
<!--%PERSONAL.LOCATION%-->
4. Добавьте в код структуры условный оператор, отвечающий за отображение этой структуры. Используйте следующий формат:
<!--#if($data.get('parameter name')=='value1')-->
В нашем случае оператор будет таким:
<!--#if($data.get('PERSONAL.LOCATION')=='Tuscany')-->
5. Кликните на вторую структуру в шаблоне, в которой нужно отобразить динамический контент (Мальдивы). Код этой структуры будет показан в редакторе кода.
6. Найдите первый тег tr в коде структуры.
7. Добавьте условный оператор, отвечающий за отображение этой структуры, в код структуры над тегом tr. Используйте следующий формат:
<!--##elseif($data.get('parameter name')=='value2')-->
В нашем случае оператор будет таким:
<!--#elseif($data.get('PERSONAL.LOCATION')=='Maldives')-->
8. Добавьте <!--#end--> оператор после закрывающего структуру тега /tr.
Результат
Контакты с разными параметрами PERSONAL.LOCATION увидят такие варианты сообщения:
1) Пользователь с параметром Тоскана:
2) Пользователь с параметром Мальдивы:
3) Пользователь с пустым параметром PERSONAL.LOCATION:
Персонализация с Velocity-кодом
Использование переменных в теле сообщения позволит во многом унифицировать, если не все письмо, то его отдельные блоки.
Но у такого способа есть и недостатки. Он лишен вариативности: подстановка либо происходит, либо нет, без каких-то дополнительных возможностей управлять контентом.
Иногда из-за отсутствия нескольких параметров в письме теряется ценность целого блока. Если сведений о контакте не хватает, то подстановка данных не произойдет. Например, в блоке, где должен быть выведен промокод и QR-код, могут быть пропуски:
Выходом будет скрыть целый блок сообщения и выводить его лишь в том случае, когда доступны все необходимые компоненты.
Для этого вам необходимо использовать Velocity. Это язык, с помощью которого можно подставлять данные в письмо, если они не хранятся в карточке клиента, а передаются в событии.
В рамках нашего примера потребуется разобраться в применении оператора выбора if else и операторов сравнения.
Нужно объявить использование дополнительных полей внутри тега комментария либо в начале письма, либо непосредственно в блоке, где вы будете задавать условия.
В нашем случае блок будет выводится, только если в полях контакта есть и QR-код, и персональный промокод. Если нет хотя бы одного из двух составляющих, то этот блок вообще не выведется в письме. Для этого необходимо обратиться к дополнительным полям и проверить их значения. Выделите нужную структуру и перейдите в режим редактирования кода письма:
В примере нужно проверить дополнительные поля PERSONAL.PROMOCODE и PERSONAL.QRCODE. Их и необходимо вывести в письмо в закомментированном виде, таким образом проверяя, что в карточке контакта эти поля заполнены.
<!--//Объявление использования дополнительных полей PERSONAL.PROMOCODE и PERSONAL.QRCODE-->
<!--%PERSONAL.PROMOCODE%-->
<!--%PERSONAL.QRCODE%-->
<!--//Проверяем, что значения проверяемых полей не равняются пустой строке-->
<!--#if($!data.get('PERSONAL.PROMOCODE')!='' and $!data.get('PERSONAL.QRCODE')!='')-->
… html код структуры
<!--#end-->
Затем добавляем наше условие, чтобы получилось так, как показано на скриншоте:
#end ставится для того, чтобы указать, где заканчивается проверка условия.
Скрывать блоки в случае отсутствия данных – не единственное применение оператора if else.
Рассмотрим несколько примеров взаимодействия переменных персонализации и Velocity:
-
Чтобы проверить, заполнено ли поле контакта с именем.
<!-- для вывода имени при помощи персонализации -->
<!--%FIRSTNAME%-->
<!--//Проверяем, что значения поле FIRSTNAME не равняются пустой строке-->
#if($data.get('FIRSTNAME') and $data.get('FIRSTNAME')!='')
<!--//Если поле не пустое, выводим: Здравствуйте, Имя-->
Здравствуйте, $!data.get('FIRSTNAME').
#else
<!--//Если поле не содержит данных, выводим только: Здравствуйте. -->
Здравствуйте.
#end
-
Осуществляем проверку принадлежности email адреса к домену @gmail.com и отображает соответствующий контент в письме.
<!--%EMAIL%-->
<!--#if($!data.get('EMAIL').contains('@gmail.com'))-->
<!--//html код для получателей, у кого почта в доменной зоне gmail.com-->
<!--#else-->
<!-//html код для остальных получателей-->
<!--#end-->
- Проверить пол контакта и сформировать корректное обращение к получателю.
<!-- //Объявляем использование поля, где указан пол контакта -->
<!-- %PERSONAL.GENDER% -->
<!-- //Проверяем, не пустое ли поле -->
<!--#if($data.get('PERSONAL.GENDER').equals(''))-->
<!--//Если пол не указан, не используем обращение-->
<!--#set($refBy='. ')-->
<!--//Проверяем, если получатель мужчина-->
<!--#elseif($data.get('PERSONAL.GENDER').equalsIgnoreCase('м'))-->
<!--//Подставляем: уважаемый-->
<!--#set($refBy=', уважаемый')-->
<!-- //Проверяем, если получатель женщина-->
<!--#elseif($data.get('PERSONAL.GENDER').equalsIgnoreCase('ж'))-->
<!--//Подставляем: уважаемая-->
<!--#set($refBy=', уважаемая')-->
<!--#end-->
В письме будет так:
Персонализация: | Здравствуйте$!refBy %FIRSTNAME% |
Результаты подстановки в письме: | |
для мужчины: | Здравствуйте, уважаемый Алексей |
для женщины: | Здравствуйте, уважаемая Виктория |
пол не указан: | Здравствуйте. |
Таким образом, комбинируя данные пользователя из карточки контакта и применяя оператор выбора if else, можно гибко управлять содержимым отправляемого сообщения.
Более высокого уровня персонализации писем можно добиться, используя товарные рекомендации. Что это и как их настроить, читайте здесь.