# Профиль посетителя, метки и действия

> Передавайте тариф, компанию, свои поля, метки и действия посетителя со своего сайта. Команда видит их рядом с диалогом. Ограничения и приватность.

Ваш сайт может сообщить команде, кто пишет и что он только что делал. Команда видит это во входящих рядом с диалогом и на странице контакта.

![Боковая панель контакта с компанией, тарифом, метками и последними действиями](https://hrc.lt/screens/ru/inbox-contact-profile.desktop.1600.724f56d1.webp)

## Что такое профиль посетителя

- **Профиль:** имя, телефон, аватар, компания, метки и до 50 своих полей с типами.
- **Действия:** короткая история того, что делал посетитель (`track`).
- **Значения сессии:** что важно для этого диалога, отправляется с каждым сообщением (`setContext`).

Профиль принадлежит контакту и сохраняется между диалогами. Значения сессии принадлежат сообщениям. Они не смешиваются.

```js
// После входа, с подписью, которую вычислил ваш сервер
HrcWidget('identify', {
  externalId: String(customer.id),
  email: customer.email,
  name: customer.name,
  userHash: customer.supportHash,
  attributes: {
    plan: 'pro',
    signed_up_at: customer.createdAt,
    orders: customer.orderCount,
  },
  tags: customer.isVip ? ['vip'] : [],
});

// Позже, на любой странице
HrcWidget('update', { attributes: { cart_items: 3, cart_total: 129.5 } });
HrcWidget('track', 'order-placed', { order_id: 'o-1042', total: 129.5 });
```

## Свои поля

| Правило    | Значение                                                                                                    |
| ---------- | ----------------------------------------------------------------------------------------------------------- |
| Ключ       | Строчные буквы, цифры, `_` и `-`, начинается с буквы, до 40 символов. Заглавные буквы становятся строчными. |
| Типы       | Текст (от 1 до 255 символов), число, `true`/`false`, дата.                                                  |
| Дата       | JS `Date` или строка ISO 8601 (`2026-11-02`) в ключе, который заканчивается на `_at` или `_date`.           |
| Количество | До 50 полей на контакт.                                                                                     |
| Удалить    | `null` или `''`.                                                                                            |
| Нельзя     | Объекты и массивы (компания это отдельное поле).                                                            |

Зарезервированные ключи (`id`, `email`, `name`, `phone`, `company`, `tags`, `language`, `user_hash`, всё, что начинается с `hrc_`, и другие) и ключи, похожие на секреты (`password`, `secret`, `token`, `cvv`, `card_number`, `iban`, `api_key`), отклоняются.

## Имя, телефон, аватар и компания

- `name` до 120 символов.
- `phone` до 32 символов, не меньше 5 цифр. Только показывается команде, никогда не используется для связи.
- `avatarUrl` только `https:`, до 500 символов. Если не загружается, показываются инициалы.
- `company`: `{ id?, name, website?, plan? }`, одна компания на контакт, `null` удаляет.

## Метки и действия

Метки (`setTags`): до 20 на контакт, строчные буквы, цифры и дефис, до 32 символов.

Действия (`track`): название из строчных букв, цифр, `_`, `.` и `-`, до 64 символов. Лучше всего читается прошедшее время: `plan-upgraded`, `checkout.failed`. До 10 свойств. Хранятся последние 100 действий, не дольше 180 дней. На боковой панели видны последние 5, на странице контакта все.

![Страница контакта с полями профиля, их источниками и действиями](https://hrc.lt/screens/ru/contact-events.desktop.1600.cc4f4966.webp)

Действия нужны для поддержки («что он только что делал»), а не для аналитики.

## Кто что может менять

У каждого значения есть источник. Более низкий источник не перезаписывает более высокий: поле пропускается, а виджет пишет одно предупреждение в консоли.

| Источник | Кто пишет                                                | В приложении                   |
| -------- | -------------------------------------------------------- | ------------------------------ |
| Команда  | Участник в приложении, AI-агент через MCP или REST API   | «задано командой»              |
| Ваш сайт | SDK, когда сессия распознана с действительным `userHash` | «с вашего сайта»               |
| Браузер  | SDK в анонимной сессии                                   | «из браузера, не подтверждено» |

```js
// Без входа: значения сохраняются как «из браузера, не подтверждено»
HrcWidget('update', {
  attributes: { landing_page: 'pricing', utm_source: 'newsletter' },
});
```

`userHash` подтверждает только ID и эл. почту. Значения, от которых что-то зависит (тариф, баланс, права), отправляйте со своего сервера через [REST API](https://hrc.lt/ru/docs/ai-agents/rest-api#trusted-profile): тогда их источник команда, и браузер не может их изменить.

## Когда данные сохраняются

Пока посетитель не отправил сообщение, не загрузил файл и не распознан, ничего не сохраняется ни в его браузере, ни на сервере. До этого изменения профиля и до 20 действий ждут в памяти виджета и отправляются сразу, как появится сессия. При перезагрузке страницы они пропадают.

## Приватность

Значения профиля, метки и действия это персональные данные контакта, а ваша компания их контролёр. Никогда не отправляйте пароли, данные платёжных карт, данные о здоровье и другие особые категории данных. При удалении контакта удаляются и его действия.
