Jinja позволяет вам персонализировать сообщения разных типов (чат, письма, поп-апы, Telegram, Webhook) и сообщения чат-ботов, используя свойства пользователей и атрибуты событий. Также используя синтаксис Jinja можно задать более сложные условия для фильтров вашей аудитории в Триггерных сообщениях и Цепочках.
Наиболее часто используются выражения Jinja, которые вызываются с помощью тегов {{ ... }}, и операторы, которые вызываются с помощью тегов {% ... %} .
Для персонализации текстов сообщений и фильтров аудитории
{{ user['$название свойства'] }} — системное свойство пользователя. Например, имя пользователя.
{{ user['название свойства'] }} — ваши собственные свойства пользователя, которые вы создали вручную или автоматически передаёте в Carrot quest.
{{ event['название атрибута'] }} — атрибут события, которое выступило триггером сообщения.
get_last_events('название события')[0] — функция, которая используется для получения хронологического списка определенного события. Когда мы добавляем [0] в конце, это означает, что мы берём самое последнее (или недавнее) событие. Если мы используем, например, [2] , это значит, что мы выбираем третье событие с конца. Таким образом, число в квадратных скобках указывает, насколько далеко назад по списку событий мы заглядываем.
{{ current_date() }} — автоматически подставляет актуальную дату в текст сообщения. Формат отображения даты соответствует привычному виду: [18 сентября 2025].
Дополнительно для вебхуков
{{ event.as_json }} — полное событие (все атрибуты), которое стриггерило вебхук
{{ user.as_json }} — все данные пользователя из его карточки (все записанные свойства и события)
Персонализация сообщения на основе атрибутов выполненного события
{% set lastEvent = get_last_events('Название события')[0] %}
{% set name = lastEvent.props['название атрибута 1'] %}
{% set site = lastEvent.props['название атрибута 2'] %}
Здравствуйте, {{ name }}! Вы оставили заявку на аудит сайта {{ site }}. Мы позвоним.Этот пример кода на Jinja выполняет следующие действия:
1. Получение последнего события:
{% set lastEvent = get_last_events('Название события')[0] %}Здесь вызывается функция get_last_events с аргументом 'Название события'. Эта функция получает список событий, и [0] берёт последний элемент из этого списка. Этот элемент сохраняется в переменную lastEvent. lastEvent — это объект, содержащий информацию о последнем событии.
2. Извлечение атрибутов из события:
{% set name = lastEvent.props['название атрибута 1'] %}
{% set site = lastEvent.props['название атрибута 2'] %}Здесь из объекта lastEvent извлекаются значения двух атрибутов. Эти значения сохраняются в переменные name и site. Атрибуты название атрибута 1 и название атрибута 2 замените на фактические названия, которые записываются для вашего события.
3. Формирование текста сообщения:
Здравствуйте, {{ name }}! Вы оставили заявку на аудит сайта {{ site }}. Скоро позвонимЭто строка, в которой используется подстановка переменных name и site. В результате формируется персонализированный текст сообщения, в котором мы приветствуем пользователя по имени и сообщаем, что он оставил заявку на аудит определенного сайта.
Подобная статья о персонализации с использованием атрибутов событий
Текст сообщения с условиями
{% if user['$name'] is defined %}
Здравствуйте, {{ user['$name'] }}! Спасибо за вашу заявку.
{% else %}
Спасибо за вашу заявку.
{% endif %}Этот пример кода на Jinja выполняет следующие действия:
1. Проверка наличия имени пользователя:
{% if user['$name'] is defined %}Здесь проверяется, определено ли свойство '$name' в объекте user. Это означает, что код проверяет, существует ли ключ '$name' и имеет ли он значение.
2. Формирование персонализированного текста:
Здравствуйте, {{ user['$name'] }}! Спасибо за вашу заявку.Если '$name' существует и имеет значение, то выводится персонализированное приветствие, где {{ user['$name'] }} заменяется на фактическое имя пользователя. Например, если '$name' равно "Иван", то сообщение будет: "Здравствуйте, Иван! Спасибо за вашу заявку."
3. Альтернативный текст:
{% else %}
Спасибо за вашу заявку.
{% endif %}Если '$name' не определено или не имеет значения, выводится общее сообщение: "Спасибо за вашу заявку."
Другие статьи про Jinja:
Базовый синтаксис Jinja
Структура данных в Jinja
Фильтры в Jinja
Полезные заготовки Jinja-кода