Contacts & companies
Identity resolution
Every channel identity (Messenger PSID, WhatsApp number, Telegram id, …) is stored in externalIds. A new conversation looks for a contact by that id, then email, then phone, and creates one if none matches.
Custom fields
Define fields for contacts, companies and tickets under Contacts → Custom fields. Types: text, number, date, select, boolean, URL.
Duplicate merging
The Duplicates tab groups contacts sharing an email, phone or full name. Choose the record to keep; conversations, tickets, ratings and the timeline of the others move onto it and missing fields are filled in. Merged records are hidden but retained.
CSV import
Import up to 7,500 rows per file. Columns are mapped automatically:
| Column | Mapped to | |
|---|---|---|
| name, first name, full name | First name (split into last name when needed) | |
| last name, surname | Last name | |
| Email (used to update existing contacts) | ||
| phone, mobile | Phone (normalised) | |
| company | Company (created if new) | |
| tags | Tags, separated by ; , or ` | ` |
| anything else | A custom field |
Existing contacts are updated by email or phone; new ones are created.
Activity timeline
Every contact has a timeline: conversations, tickets, notes, imports, field changes, merges, CSAT ratings and AI agent interactions.