В профиле клиента есть два способа что-то о нём запомнить — атрибуты и теги. На первый взгляд разница не очевидна: и то, и другое можно проставить в сценарии, и то, и другое видно оператору в чат-центре, и по тому, и по другому можно собрать сегмент в аудитории. Но использовать их стоит по-разному, и если перепутать — сценарии становятся сложнее, чем должны быть. Разберёмся, что есть что.
Атрибут: ключ и значение
Атрибут — это пара «ключ + значение». В системе он хранится как attributes.profile_название — то есть у каждого атрибута есть техническое имя, по которому к нему обращаются в сценарии.
Доступные типы значений атрибутов:
- String
- Text
- Number
- Datetime
- Select
- Multiselect
- Boolean
- UUID
У любого проекта по умолчанию уже есть несколько системных атрибутов — имя, номер телефона, почта, внешний id. Они создаются автоматически. Все остальные атрибуты сначала нужно завести руками — в настройках проекта, в разделе «Атрибуты клиента», — и только после этого их можно заполнять значениями.

Тег: просто ярлык
С тегом всё проще — заводить его заранее не нужно. Присвоить профилю можно любой тег в любой момент, даже если такого тега раньше в проекте вообще не было. У тега нет значения, только его наличие или отсутствие в профиле.
Где проставляются теги и атрибуты
- в сценарии конструктора — узел записывает значение атрибута или назначает тег по ходу диалога;
- вручную — оператором прямо в карточке профиля клиента в чат-центре;
- через интеграцию — данные подтягиваются из внешней системы и автоматически записываются в профиль

Когда что использовать
На этом этапе остановимся подробнее.
Атрибут нужен, когда важно само значение — оно потом либо подставляется в текст сообщения, либо участвует в условии сценария, где сравниваются конкретные величины:
- город клиента — чтобы подставить в сообщение «Ближайший к вам магазин — на Тверской» вместо магазина в другом городе;
- дата последней покупки — чтобы сравнить с сегодняшней датой и понять, не пора ли напомнить о себе;
- тариф подписки — чтобы показывать разный контент в зависимости от уровня.
Тег нужен, когда важен сам факт — без всякого значения:
- пометить, что клиент написал жалобу, чтобы потом легко найти такие диалоги;
- проверить в сценарии «есть ли у профиля такой тег» и пустить диалог по одной или другой ветке;
- отметить принадлежность к группе (auth, waiting_for_call).
Оба варианта участвуют в сегментации аудитории, просто по-разному: сегмент можно собрать и по значению атрибута (город = Москва, дата последней покупки старше 30 дней), и по наличию тега (все, у кого стоит тег auth).
Пример на практике
Клиент оставляет в боте номер телефона и город — это ложится в атрибуты, потому что и то, и другое пригодится потом: город — для персонализации сообщений, телефон — чтобы вообще идентифицировать человека. В какой-то момент клиент пишет «хочу отменить заказ» — оператор в чат-центре присваивает тег «отмена», просто чтобы этот диалог потом было легко найти и посчитать, сколько всего было отмен за месяц. Значение тега при этом никого не интересует — важен сам факт, что он стоит.
Через неделю можно собрать сегмент «город = Москва» и отправить рассылку про акцию в московских точках, а отдельно — сегмент «есть тег отмена» и посмотреть, что вообще происходит с этими клиентами дальше.
Работа с атрибутами:
- Значения атрибутов, отображаемых в карточке профиля клиента, можно менять в Чат-центре или в разделе Аудитория
- Значения атрибутов можно менять в редакторе процедур с помощью следующих функций:
- Изменить значение атрибута:
{% set_attribute "profile_name" "value" %} - Очистить атрибут:
{% clear_attribute "profile_name" "value" %}
- Изменить значение атрибута:
- Условие с проверкой значения атрибута:
{% if attributes.profile_name == "value" %}
Работа с тегами:
- Добавление и удаление тегов доступно в карточке профиля клиента в Чат-центре или в разделе Аудитория
- Добавлять и удалять теги также можно в редакторе процедур:
- Добавить тег:
{% profile.set_tag "tag_name" %} - Удалить тег:
{% profile_clear_tag "tag_name" %}
- Добавить тег:
- Условие с проверкой наличия тега:
{% if profile.tags.tag_name %}
Коротко
Если нужно значение, с которым потом что-то делать (сравнивать, подставлять в текст) — это атрибут, и его сначала нужно завести в настройках. Если нужно просто пометить профиль без всякого значения — это тег, и его можно присвоить прямо сейчас, ничего заранее не создавая.