В Carrot quest вы можете использовать данные из атрибутов событий пользователя, чтобы персонализировать содержание вашего сообщения на основе данных и действий конкретного пользователя. Можно подставлять в текст переменные, которые заменяются данными из карточки пользователя при отправке сообщения. или отображать в письме только контент по условию, которое тоже строится на основе данных из событий пользователя.
На данный момент выполнять персонализацию по атрибутам события можно в теле триггерных / ручных поп-апов и чатов, в теме и теле емейлов, в чат-ботах.
Про персонализацию на основе свойств пользователя - в сообщениях и ботах.
• В нашей системе выделены два типа событий: системные и пользовательские. При этом атрибуты событий также бывают системные и пользовательские. Весь список системных событий и атрибутов можно посмотреть здесь. Если какого-либо события, которое записывается в вашем проекте, нет в этом списке, оно является пользовательским.
• Настраивать персонализацию можно по атрибуту любого события. При этом данное событие не обязательно должно являться триггером для сообщения. Для отображения нужных данных в тексте сообщения в содержание поп-апа, письма и т.п. нужно разместить специальный скрипт.
Например, мы настроили сообщение, в котором триггером используется системное событие "Зашёл на сайт". У этого события есть системные атрибуты:

Чтобы подставить какое-то из этих атрибутов в сообщение, используйте конструкцию:
{{event['Название атрибута события']}}Если вы создали сообщение с триггером "Зашел на сайт" и в содержании написали "Скачайте приложение для {{event['$os']}}", то пользователь увидит "Скачайте приложение для Windows 10".
• При настройке коммуникаций также может потребоваться использование атрибутов события, которое не установлено в качестве триггера. Чтобы дать системе понять, из какого события должны подтягиваться атрибуты, мы указываем название события в первой строчке:
{% set lastEvent = get_last_events('Название события')[0] %}В этой строке 0 означает, что использоваться будут данные самого последнего события в карточке. Если указать 1 - будут использоваться атрибуты предпоследнего события, и так далее.
Следующей строкой мы указываем, какие атрибуты событий должны использоваться при подстановке в письме:
{% set lastEventProp = lastEvent.props['Название атрибута'] %}Вместо lastEventProp нужно указать название переменной для того, чтобы на его место в сообщении подставлялось значение атрибута события.
💡Разберемся, как это работает, на примере. В нашей системе по завершении периода подписки в карточку лида отправляется событие, в атрибутах которого указывается номер проекта в Carrot quest и его название:

В этот момент мы отправляем пользователям сообщение, в котором напоминаем, что в проекте закончилась подписка. Для этого мы используем такой код:
{% set lastEvent = get_last_events('Завершен период подписки')[0] %}
{% set name = lastEvent.props['app_name'] %}
{% set id = lastEvent.props['app'] %}
Привет!
Появился новый счет для сайта {{ name }}.
Сформированный счет вы можете найти в разделе Оплата, и оплатить в течение 7 дней любым удобным способом ...Размещаем скрипт и текст сообщения:

По тому же принципу можно добавлять код в емейл или сообщение типа "Чат".
На своей стороне пользователь получит поп-ап с текстом, в который будут подставлены значения из атрибутов использованного события.
Допустим, при просмотре квартир на сайте вы передаете в карточку лида такое событие:

Теперь вы хотите отправить персонализированный поп-ап пользователю с приглашением на консультацию по выбору недвижимости. В сообщении можно разместить следующий текст и код:
{% set lastEvent = get_last_events('Просмотрел квартиру')[0] %}
{% set name = lastEvent.props['Название ЖК'] %}
{% set area = lastEvent.props['Площадь квартиры'] %}
{% set rooms = lastEvent.props['Количество комнат'] %}
Здравствуйте, {{ user['$name'] }}
Я консультант в агентстве недвижимости. Вижу, что вы интересовались квартирой в ЖК {{ name }} площадью {{ area }}. Эта квартира еще доступна к покупке.
...Если вы работаете в сфере EdTech, наверняка на вашем сайте настроен сбор данных о том, на какое занятие записывается ученик. Например, таким образом:

Вы можете отправить ученику сообщение с напоминанием о предстоящем занятии:
{% set lastEvent = get_last_events('Записался на занятие')[0] %}
{% set name = lastEvent.props['Преподаватель'] %}
{% set date = lastEvent.props['Дата занятия'] %}
{% set time = lastEvent.props['Время занятия'] %}
Здравствуйте, {{ user['$name'] }}
Напоминаем, что {{ date }} в {{ time }} состоится ваше следующее занятие, преподаватель - {{ name }}
Ждем с нетерпением :)Обратите внимание: если вы записываете дату в свойство пользователя, то с использованием цепочек сообщений вы также можете настроить отправку оповещения в определенное время, ориентируясь на передаваемую дату и время. Подробнее о таком сценарии настройки читайте в этой статье.
Используя атрибуты события "Посмотрел товар", вы можете вывести в тексте письма сумму стоимости этих товаров.
set total = [0] %}
{% for e in get_last_events('Посмотрел товар') %}
{% set amount = e.props['Название атрибута события с числами для сложения'] | int %}
{% if total.append(total.pop()+ amount) %} {% endif %}
{% endfor %}
<span>{{total[0]}}</span>Если вы хотели бы ограничить количество последних событий, числа из которых нужно сложить, строку
{% for e in get_last_events('Посмотрел товар') %}нужно заменить на
{% for e in get_last_events('Посмотрел товар') [:10] %}где 10 – количество событий (до 20 включительно).
Обратите внимание: если вы записываете стоимость и названия товаров в свойства лида, инструкцию по персонализации можно найти в этой статье.
Если вы хотите использовать разные варианты текста в сообщении в зависимости от того, совершал ли лид определенное событие, используйте следующий код:
{% if get_last_events('Название события') is defined %} Первый вариант текста
{% else %} Второй вариант текста {% endif %}Чтобы вывести определенный вариант сообщения в зависимости от того, какое значение атрибута содержится в карточке лида, используйте такую конструкцию:
{% set lastEvent = get_last_events('Название события')[0] %}
{% if lastEvent.props['Название атрибута'] == 'значение атрибута 1' %} Первый вариант текста
{% elif lastEvent.props['Название атрибута'] == 'значение атрибута 2' %} Второй вариант текста
{% else %} Третий вариант текста {% endif %}