Переменные и функции Altcraft
Данн ые профиля
| Описание | Переменная |
|---|---|
| Email-адрес | {lead.email} |
| Список телефонов | {lead.phones} |
| Имя | {lead._fname} |
| Фамилия | {lead._lname} |
| Дата рождения | {lead._bdate} |
| Пол | {lead._sex} |
| Дата регистрации | {lead._regdate} |
| IP-адрес регистрации | {lead._regip} |
| Город регистрации | {lead._regcity} |
| Страна регистрации | {lead._regcountry} |
| URL-адрес регистрации | {lead._regurl} |
| IP-адрес | {lead._ip} |
| Город | {lead._city} |
| Страна | {lead._country} |
| Регион | {lead._region} |
| Индекс | {lead._postal_code} |
| Временная зона | {lead._tz} |
| Поставщик | {lead._vendor} |
| Идентификатор профиля | {lead._id} |
| XXM-хеш | {lead._xxm} |
| XX-хеш | {lead._xxh} |
| MD5-хеш | {lead._md5} |
| * Дополнит ельное поле | {lead.название_поля} |
Подписки
| Описание | Переменная |
|---|---|
| Email-адрес подписки | {subscription.email} |
| Домен email-адреса | {subscription.email_domain} |
| Список email-адресов подписки | {subscription.emails} |
| Телефон подписки | {subscription.phone} |
| Список телефонов подписки | {subscription.phones} |
| Список push-подписок | {subscription.pushes} |
| MD5-хеш email-адреса | {subscription.email_md5} |
| MD5-хеш телефона | {subscription.phone_md5} |
| Hash подписки | {subscription.hash_id} |
| Основное поле подписки | {subscription_field("channel" "field_name" resource_id)}channel — строка с указанием на канал ("email") field_name — имя поля для вставки ("domain") resource — идентификатор ресурса (10) |
Функция subscription_field позволяет вставлять поля из подписок, независимо от того, какой канал используется в текущем сообщении. Например, если у профиля есть SMS подписка, вы можете подставить его телефон в email версию сообщения:
{subscription_field("sms" "phone")}
Если под условия подходят несколько подписок, выбирается подписка с самым высоким приоритетом.
Доступные поля для подстановки:
| Канал | Поле | Описание |
|---|---|---|
| Email-адрес подписки | ||
| domain | Домен email-адреса подписки | |
| domain_group | Доменная группа | |
| md5 | MD5-хеш email-адреса | |
| sms | phone | Телефон подписки |
| md5 | MD5-хеш телефона | |
| push | subscription_id | Идентификатор push-подписки |
| bundle_id | Идентификатор приложения для iOS APNs | |
| provider | Push провайдер |
Аналогично в шаблон можно подставлять данные из подписок пользовательских каналов. Поля основных каналов соответствуют sid полей, которые вы указываете при создании канала.
UTM
Если у профиля в его карточке есть UTM, то их можно подставить в шаблон сообщения.
| Описание | Переменная |
|---|---|
| UTM-метка о кампании | {lead._utm_campaign} |
| UMT-метка об источнике трафика | {lead._utm_source} |
| UMT-метка о типе контента | {lead._utm_medium} |
| UMT-метка о содержании контента | {lead._utm_content} |
| UMT-метка о ключевых словах | {lead._utm_term} |
Внешний JSON
Внешний JSON-контент — это один из способов создавать динамические сообщения и автоматизировать работу. С его помощью в сообщение добавляется информация, генерируемая на вашем сервере точно в момент отправки каждого сообщения.
Подробнее о том, как работает внешний JSON можно прочесть в статье "Использование JSON-контента в сообщениях".
В тексте сообщения JSON-контент представлен переменными типа {json.variable}. Типы данных list и 'object' поддерживают циклы, для типа object также доступно обращение к элементам по ключу {json.object.key_name}.
Маркет
Чтобы использовать информацию о заказах и товарах в рассылках, вы можете добавить переменные маркета в шаблон сообщения. Более подробно использование таких переменных описано в статье "Использование переменных маркета в сообщениях".
Дата и в ремя
| Описание | Переменная | Пример |
|---|---|---|
| Форматированная дата | {format} | {format datenow "%Y-%m-%D %H:%M:%S timezone, %I am"}2018-12-25 18:56:10 +03:00, 6 pm |
| Неформатированная дата | {datenow} | 2018-12-25T18:56:10+0300 |
| Смещение даты | {adddate()} | {adddate(datenow 0 0 3)}2018-12-27T18:56:10+0300 |
| Полный год | {yearlong} | 2018 |
| Год | {year} | 18 |
| Месяц | {month} | 12 |
| День | {day} | 10 |
| Часы в 24-часовом формате | {hours} | 18 |
| Часы в 12-часовом формате | {hours12} | 06 |
| "До полудня", "После полудня" | {ampm} | PM |
| Минуты | {minutes} | 56 |
| Секунды | {seconds} | 10 |
Функции вывода
| Описание | Переменная | Пример |
|---|---|---|
| Форматирование | format | {format 1000000000 ","}1,000,000,000 |
| Длина переменной | length | {length("abc")}3 |
| Массив значений | array | {array[1 "2" 3.3]}[1 2 3.3] |
| Случайный элемент массива | randomize | {randomize(array[1 2 3])}1 Пример: в дополнительном поле профиля Favourite_genres хранится массив ["Детектив", "Юмор", "Фантастика"], выражение {randomize(lead.Favourite_genres)} выведет один случайный элемент, например "Детектив".Работает с полями Телефоны, Теги и Массив объектов, а также с массивами API-контента и внешнего JSON-контента. |
| Лимит массива | limit | {limit(array[1 2 3] 2)}[1 2] |
| Чётность числа | iseven | {iseven(2)} => true{iseven(3)} => false |
| Кодирование URL-адреса | urlencode | {urlencode(lead._regurl)}http:%2F%2Ftest.testdomain.com%2Fsomething Используется для кодирования недопустимых символов в URL параметрах. |
| Декодирование URL-адреса | urldecode | {urldecode(lead._regurl)}http://test.testdomain.com/something |
| Верхний регистр | uppercase | {uppercase("text")}TEXT |
| Первый символ в верхнем регистре | uppercasefirst | {uppercasefirst("john")}John |
Шифрование
Шифрование переменных шаблона применяется когда необходимо передать данные вместе с кликом по URL на целевой сайт, но при этом данные не должны отражаться в журналах веб серверов или каким-то образом у пользователя. Например, в некоторых случаях данные предзаполнения форм достаточно закодировать в base58, чтобы на стороне сайта их раскодировать и подставить в форму.
Чтобы передавать контент шаблона и переменные в зашифрованном или хeшированном виде, в редакторе шаблонов предусмотрена функция crypt. Чтобы получить доступ к ней, нажмите на кнопку </> в редакторе шаблонов и выберите Шифрование.
{crypt(алгоритм поле ключ)}
Можно изменить кодировку или зашифровать данные по одному из этих алгоритмов:
- base58
- base64
- sha1
- sha256
- aes
- blowfish
Для sha1, sha256, aes и Blowfish необходимо указать ключ, который будет применяться на другой стороне для дешифровки значения.
Детали шифрования AES и Blowfish:
| AES | Blowfish | |
|---|---|---|
| Вектор инициализации | Первые 16 байт строки | Первые 8 байт строки |
| Режим шифрования | CFB (Cipher Feedback) | CBC (Cipher Block Chaining) |
| Длина ключа | 128 бит — 16 символов | 64 бит — 8 символов |
| Padding | нулевой | нулевой |
Шифрование / дешифрование происходит через кодировку Base64URL.
Ниже приведены примеры синтаксиса для изменения кодировки и шифрования:
{crypt(base58 lead._fname)}
{crypt(base64 lead._lname)}
{crypt(sha256 lead.custom_field "encrypt_key")}
{crypt(sha1 lead._city "encrypt_key")}
{crypt(aes lead._fname "key1234567891234")}
{crypt(blowfish lead._fname "key12345")}
Если необходимо зашифровать строку текста, её нужно заключить в кавычки. Если число — кавычки не нужны:
{crypt(base58 "value")}
{crypt(base64 42)}
Для хеширования доступны следующие алгоритмы. Для каждого можно использовать соль:
- md5 + соль
- xxh32 + соль
- xxh64 + соль
Синтаксис такой же, как для функций шифрования:
{crypt(md5 subscription.email "salt")}
{crypt(xxh32 loyalty.new2.promocode "salt")}
{crypt(xxh64 json.text "salt")}
Обратите внимание, что за шифрованные данные уже будут закодированы в base64.
Логические выражения
Использование логических выражений описано в отдельной статье. Для составления простого условия используется:
{if lead.age gte 18}
Если 18 или старше.
{else}
Если младше 18.
{end}
Части
Части (фрагменты) сообщения
Фрагменты — это блоки сообщений, которые используются в нескольких сообщениях. Например, это может быть хедер или футер сообщения, блок со ссылками на социальные сети — любой контент, который вы будете отправлять в рамках нескольких рассылок.
Для вызова фрагмента используйте {fragment.<короткое_имя_фрагмента>}.
Для вызова случайного фрагмента из диапазона: {randomfragment[fragment.name1 fragment.name2 fragment.name3]}.
Использование частей (фрагментов) более подробно описано в этой статье.
Параметры
Параметры
| Описание | Переменная |
|---|---|
| ID отправленного сообщения (SMID) | {send_message_id} |
| Токен ресурса | {resource_token} |
| ID шаблона | {msgid} |
| ID кампании | {campid} |
| ID ресурса | {resid} |
| ID Базы данных (базы профилей) | {listid} |
| SUBID кампании | {subid} |
| Имя ресурса | {resname} |
| Имя БД | {listname} |
| Тип сообщения | {msg_type} |
| URL ресурса | {resurl} |
| Домен URL ресурса | {resdomain} |
| Имя сообщения | {msgname} |
| Имя кампании | {campname} |
| Имя отправителя SMS (SMS from name) | {from_name_sms} |
| ID сегмента | {segid} |
| Название сегмента | {segname} |
| Значение атрибута | {attribute_value("attribute")}, где вместо "attribute" — API-название атрибута |
Служебные
| Описание | Переменная |
|---|---|
| API-контент | {apicontent.field_name} |
| Отмена отправки сообщения | {cancel} |
Трекинг
| Описание | Переменная |
|---|---|
| Трекинг домен | {trkdomain} |
| Пиксель, фиксирующий открытие письма | {pixel} |
| Пиксель, фиксирующий чтение письма | {read} |
| Ссылка менеджера подписок | {preferences} |
| Ссылка отписки | {unsubscribe} |
| Ссылка глобальной отписки | {globalunsubscribe} |
| Добавление в стоп-список | {suppress} |
| Ссылка на веб-версию | {webversion} |
Сценарий
| Описание | Переменная |
|---|---|
| Название сценария | {workflow_name} |
| ID сценария | {workflow_id} |
| ID ноды (элемента) сценария | {node_id} |
| Тип ноды (элемента) сценария | {node_type} |
События
Переменные событий позволяют работать с данными о действиях пользователей (просмотры страниц, добавления в корзину, покупки и др.), которые собираются через пиксели и цели.
События привязан ы к контексту:
- В триггерных кампаниях переменная содержит только события, относящиеся к конкретному триггеру, который запустил кампанию.
- В сценариях переменная содержит список всех событий, которые произошли с профилем с момента входа в сценарий.
Эти переменные доступны только в триггерных кампаниях и сценариях, которые запускаются по триггеру "Активация пикселя".
Переменные
| Описание | Переменная | Примечания |
|---|---|---|
| Первое событие | {event.first} | Самое старое событие в текущем контексте |
| Последнее событие | {event.last} | Самое новое событие в текущем контексте |
| Все события | {event.all} | Полный список событий в порядке обратном поступлению, где в [0] самое последнее событие |
| Кол-во событий | {event.count} | Количество событий в очереди |
Как использовать в шаблонах
Чтобы получить конкретные данные события, добавьте к переменной нужный параметр через точку:
{event.first.goal} // цель первого события
{event.last.value} // значение последнего события
{event.first.geo_city} // город из первого события
{event.last.utm_source} // источник последнего события
{event.first.browser} // браузер из первого события
{event.first.categories} // категории из первого события
Чтобы перебрать все события пользователя, используйте цикл:
{for $index $event = event.all}
{if $event.goal equal "cart"}
{formatdate $event.date "%Y-%m-%D в %H:%M"} в корзину добавлены {$event.data.count}x {$event.data.product}.
{end}
{else}
<p>Нет событий...</p>
{end}
Примеры использования
Для триггерной рассылки после добавления в корзину:
Вы забыли товар: {event.first.data.product}</p>
Цена: {event.first.data.price}</p>
Купить: {event.first.data.link}</p>
Для сегментации по геолокации:
В вашем городе {event.first.geo_city} проходит распродажа!
Для анализа эффективности кампаний:
Источник: {event.last.utm_source}
Кампания: {event.last.utm_campaign}
Браузер: {event.last.browser}
Для вставки UTM-меток в ссылки:
<a href="https://site-example.ru/?utm_source={event.utm_source}&utm_medium={event.utm_medium}&utm_campaign={event.utm_campaign}&utm_content={event.utm_content}">
Перейти на сайт
</a>
Для использования в сценариях с узлом ожидания события:
Здравствуйте, {user.name}!
Вы недавно добавляли новый товар в корзину, но не оформили заказ.
Ваш товар ждёт вас:
{event.last.product_name}
Подробнее об элементе сценария "Ожидание события" можно прочесть здесь.