# Profil odwiedzającego, tagi i działania

> Przekazuj plan, firmę, własne pola, tagi i działania odwiedzającego ze swojej strony. Zespół widzi je obok rozmowy. Limity i prywatność.

Twoja strona może powiedzieć zespołowi, kto pisze i co właśnie robił. Zespół widzi to w skrzynce odbiorczej obok rozmowy i na stronie kontaktu.

![Pasek boczny kontaktu z firmą, planem, tagami i ostatnimi działaniami](https://hrc.lt/screens/pl/inbox-contact-profile.desktop.1600.be2479a6.webp)

## Czym jest profil odwiedzającego

- **Profil:** imię, telefon, awatar, firma, tagi i do 50 własnych pól z typami.
- **Działania:** krótka historia tego, co robił odwiedzający (`track`).
- **Wartości sesji:** co jest ważne dla tej rozmowy, wysyłane z każdą wiadomością (`setContext`).

Profil należy do kontaktu i zostaje między rozmowami. Wartości sesji należą do wiadomości. Nie mieszają się.

```js
// Po zalogowaniu, z podpisem obliczonym przez twój serwer
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'] : [],
});

// Później, na dowolnej stronie
HrcWidget('update', { attributes: { cart_items: 3, cart_total: 129.5 } });
HrcWidget('track', 'order-placed', { order_id: 'o-1042', total: 129.5 });
```

## Własne pola

| Zasada       | Wartość                                                                                                   |
| ------------ | --------------------------------------------------------------------------------------------------------- |
| Klucz        | Małe litery, cyfry, `_` i `-`, zaczyna się od litery, do 40 znaków. Wielkie litery są zamieniane na małe. |
| Typy         | Tekst (od 1 do 255 znaków), liczba, `true`/`false`, data.                                                 |
| Data         | JS `Date` albo tekst ISO 8601 (`2026-11-02`) w kluczu kończącym się na `_at` lub `_date`.                 |
| Liczba       | Do 50 pól na kontakt.                                                                                     |
| Usuwanie     | `null` albo `''`.                                                                                         |
| Niedozwolone | Obiekty i tablice (firma to osobne pole).                                                                 |

Klucze zarezerwowane (`id`, `email`, `name`, `phone`, `company`, `tags`, `language`, `user_hash`, wszystko, co zaczyna się od `hrc_`, i inne) oraz klucze wyglądające na sekrety (`password`, `secret`, `token`, `cvv`, `card_number`, `iban`, `api_key`) są odrzucane.

## Imię, telefon, awatar i firma

- `name` do 120 znaków.
- `phone` do 32 znaków, co najmniej 5 cyfr. Tylko wyświetlany zespołowi, nigdy nie służy do kontaktu.
- `avatarUrl` tylko `https:`, do 500 znaków. Gdy się nie wczyta, widać inicjały.
- `company`: `{ id?, name, website?, plan? }`, jedna firma na kontakt, `null` usuwa.

## Tagi i działania

Tagi (`setTags`): do 20 na kontakt, małe litery, cyfry i myślnik, do 32 znaków.

Działania (`track`): nazwa z małych liter, cyfr, `_`, `.` i `-`, do 64 znaków. Najlepiej czyta się czas przeszły: `plan-upgraded`, `checkout.failed`. Do 10 właściwości. Przechowywanych jest 100 najnowszych działań, nie dłużej niż 180 dni. Pasek boczny pokazuje 5 najnowszych, strona kontaktu wszystkie.

![Strona kontaktu z polami profilu, ich źródłami i działaniami](https://hrc.lt/screens/pl/contact-events.desktop.1600.78d18ccb.webp)

Działania służą obsłudze klienta („co właśnie robił”), a nie analityce.

## Kto co może zmieniać

Każda wartość ma źródło. Niższe źródło nie nadpisuje wyższego: pole jest pomijane, a widżet zapisuje jedno ostrzeżenie w konsoli.

| Źródło       | Kto zapisuje                                                 | W aplikacji                        |
| ------------ | ------------------------------------------------------------ | ---------------------------------- |
| Zespół       | Członek zespołu w aplikacji, agent AI przez MCP lub REST API | „ustawione przez zespół”           |
| Twoja strona | SDK, gdy sesja jest rozpoznana z poprawnym `userHash`        | „z twojej strony”                  |
| Przeglądarka | SDK w anonimowej sesji                                       | „z przeglądarki, niezweryfikowane” |

```js
// Bez logowania: wartości mają źródło „z przeglądarki, niezweryfikowane”
HrcWidget('update', {
  attributes: { landing_page: 'pricing', utm_source: 'newsletter' },
});
```

`userHash` potwierdza tylko ID i e-mail. Wartości, od których coś zależy (plan, saldo, uprawnienia), wysyłaj ze swojego serwera przez [REST API](https://hrc.lt/pl/docs/ai-agents/rest-api#trusted-profile): wtedy ich źródłem jest zespół i przeglądarka nie może ich zmienić.

## Kiedy dane są zapisywane

Dopóki odwiedzający nie wyśle wiadomości, nie prześle pliku i nie zostanie rozpoznany, nic nie jest zapisywane ani w jego przeglądarce, ani na serwerze. Do tego czasu zmiany profilu i do 20 działań czekają w pamięci widżetu i są wysyłane zaraz po powstaniu sesji. Przeładowanie strony je usuwa.

## Prywatność

Wartości profilu, tagi i działania to dane osobowe kontaktu, a ich administratorem jest twoja firma. Nigdy nie wysyłaj haseł, danych kart płatniczych, danych o zdrowiu ani innych szczególnych kategorii danych. Usunięcie kontaktu usuwa też jego działania.
