Contacts
Every customer of the project in one list: where contacts come from, how to find one, what the card shows and what you can do with a contact.
A contact is a support customer: their name, their addresses on the channels and all their tickets. Contacts is in the sidebar for every member of the project. The list is shared by the whole project: departments don't split it, and everyone sees every customer.
Where contacts come from
A contact appears by itself — usually the first time a customer writes to a connected channel:
- Telegram, VK and WhatsApp — the first message to the bot, the community or the number. The name comes from the customer's profile in the messenger. Without a name, a VK contact is called “VK User” and the ID, and a WhatsApp contact goes by the number. A WhatsApp group chat is one contact, “Группа” and the group's ID.
- Email — a message from a new address to the email channel. The name comes from the From field or, without one there, the part of the address before the @.
- The website widget — a visitor starts a conversation. If they didn't give a name, the contact is called “Гость” or “Guest”, by the widget's language, and a real name from the pre-chat form replaces the guest name. If the site passes a name, email or phone through identify, the contact is created as soon as the page opens, even if the person never writes. A customer has one contact across all devices only if the site passes a signed user ID (visitor_token, see identify): a name and email on their own don't join devices. A contact also appears when an operator writes to a visitor first: Inbox → the On site tab → Message first (see Visitors on the site). Such a contact gets the guest name in the project's main language.
- BILLmanager — a customer's ticket from the panel.
- The API —
POST /api/v1/contactsfinds a contact by telegram_id or email or creates a new one. A ticket created through the API creates its contact too (see Contacts).
You can't create a contact by hand or upload a list from a file. A contact's name and addresses aren't edited in the dashboard — they come from the channels, the site and the API. The name updates by itself: messages from Telegram, VK and WhatsApp (from the customer's profile), emails, BILLmanager and API requests with a name overwrite it, and the widget's pre-chat form replaces the guest name. A contact can't be deleted either: duplicates are cleared away by merging.
The list
- Contact — the avatar and name, with the @username, internal ID or Telegram/VK ID under it.
- Channels — Telegram, WhatsApp, VK and email icons: where the customer has an address. The widget and BILLmanager have no icons of their own, so a site visitor without an email shows a dash here.
- Contact info — the email or, without one, the WhatsApp number, the @username or the Telegram/VK ID.
- Created — when the contact appeared.
On a narrow screen the last columns hide, and on a phone contacts come as cards. Next to the title is how many contacts match the search and filter. A page holds 20, with page switching below. The row's Actions menu has View Tickets, Copy UUID and Merge.
Search, filter and sorting
- Search — the Search contacts... field. It matches part of the name, username, internal ID, the user ID on your site (from a signed visitor_token) and the Telegram or VK ID. Case doesn't matter, and an @username or a t.me/… link can be pasted as is. An email is only found in full: addresses are stored encrypted, so searching by part of one is impossible. A phone or WhatsApp number is also only found in full — with or without the “+”, with spaces, brackets and dashes, and a Russian number starting with 8 finds the same number with +7. Numbers of older contacts reach the search with a delay: a background task adds them.
- Channel filter — the All, Telegram, WhatsApp, VK and email switches. It shows customers with an address on that channel, and a customer with several channels shows under each of them. Clicking again clears the filter.
- Sorting — the button with a list: Newest first (the default), Oldest first or By name.
When you switch projects, the search, filter and sorting stay, and the list opens on its first page.
The contact card
Clicking a contact opens a panel on the right. Close it with the cross, the Esc key or a click outside it. Links to a customer from other sections — from the comments on “Not helpful” for a knowledge base article and on “Dislike” for an announcement — open their card right here, looking the same. At the top of the panel:
- View Tickets opens the Inbox with this customer's tickets only, including those moved to your own sections (an operator sees the ones their departments open to them). The tab counts are for this customer too. A chip with their name appears next to the Inbox heading — clicking it clears the filter. In streamer mode the name on the chip is blurred: the first click on the name reveals it, the next one clears the filter, and a click on the icon or the cross clears it at once.
- The button with the start of the ID copies the contact's UUID — you need it, for example, for API requests.
- Export chats and PDF statement — for the owner and admins: the customer's conversations as CSV and an official statement of all their tickets. The statement is capped at 200 tickets and 5000 messages, the CSV export isn't. With more tickets or messages, a message says what to do: statements of single tickets from the More menu, or for one huge ticket, the chats export as CSV. A view-only link to a ticket longer than 5000 messages won't show the conversation either. More in Data export.
Below are three blocks:
- Contact Info — Email, Telegram (@username or ID), WhatsApp (the number or, when WhatsApp hides it, “number hidden”), VK, Internal ID, External ID and Created. An empty field shows a dash.
- Extra Data — what the channels and your systems recorded. The widget writes IP address with its location and provider, and Last visit, when a visitor starts a new conversation (replies in an open one don't change them), and Widget language with every message. IP address and Last visit are also written by emails that come through the email webhook and by API requests that send a message. Then it's the address of the service that sent the request, and the location and provider aren't updated. Phone comes from the widget's pre-chat form, from identify, from BILLmanager and from the API when the contact is created. A Telegram ID the site passed through identify unsigned shows as “Telegram ID from the website (unverified)”. Fields of your own can only be passed in extra_data when the contact is created through
POST /api/v1/contacts, and they show under their own keys (underscores become spaces). A date (a key ending in _at with a time) is shown in your time, yes and no as words, and empty fields are left out. With nothing to show, the block isn't there. - Emails — what SupportHub sent the customer by email: replies from operators and the AI assistant, emails from the project's email templates, the bot's emails. Newest first, the panel shows the last 20 with the total next to the heading, and times are in your time zone. A click opens the email's text. Each email is labelled with its type: “Operator reply”, “AI assistant reply”, a template email by its name (“Ticket acknowledgement”, “Ticket resolved”, “Ticket reopened”, “Operator assigned”, “Rating request”), the bot's emails as “Inactivity warning” and “Closing on a ‘solved’ reply”, and also “Reply to a blocked customer”. The acknowledgement sent to a widget visitor is here too. Older template emails carry the common “Ticket notification” label, and an unknown type shows as “Other email”. The open email shows the same type next to the address and date. Emails that couldn't be sent aren't in the list, and neither are broadcasts.
What's done in a ticket
Some of the customer's data and actions aren't here but on the contact card in the ticket sidebar:
- Mute and Block — see Contact moderation.
- Segment — for separate SLA targets, see SLA & business hours.
- Data from your own system and action buttons — set up in the contact card settings, and the BILLmanager details in the integration.
Merging duplicates
The Merge button above the list turns on picking: tick at least two contacts and click Merge (N). The row's Actions menu has the same item, with that contact already ticked. In the Merge Contacts window pick the primary contact: the others' tickets and channel addresses move to it, and the others are deleted. A merge can't be undone. What carries over and when a merge is refused is in Contact merging.
Exporting all contacts
The whole list is exported from the Export menu on the Analytics page, the Contacts item: CSV or XLSX with the start of the ID, name, email, Telegram ID, internal ID and created date (date and time in UTC, with no zone). The owner and admins have the menu, more in Data export. The export is part of the plan's Analytics export feature — see Modules and plan features.
Who can do what
| Action | Operator | Owner and admins |
|---|---|---|
| The list and contact cards | every contact of the project | every contact of the project |
| View Tickets and Emails on the card | tickets with no department, those assigned to them and their departments' (an operator with no department works in the default one) — and the emails on them | all |
| Merging contacts | yes | yes |
| Mute and Block (in a ticket) | yes | yes |
| Export chats and PDF statement | no | yes |
| Exporting all contacts as CSV and XLSX | no | yes |
If the plan has no departments, tickets aren't split and an operator sees all of them. How departments limit access is in Departments.

