Contacts & Companies
A contact is a person. A company is the organization they belong to. Together theyβre the spine of customer context β every conversation, ticket, and call links to a contact, and every contact can roll up to a company for B2B accounts.
Contact record
| Section | What it holds |
|---|---|
| Identity | Name, email, phone, language, timezone. |
| Channels | Every channel the customer can be reached on (email, SMS, Slack ID, social handle). |
| Custom fields | Anything your workspace defines β account_tier, signup_date, lifetime_value. |
| Conversations | Every thread, in every channel, in chronological order. |
| Tickets | Every ticket attached to this contact. |
| Notes | Internal team notes about the customer. |
| Activity timeline | Unified feed: conversations, tickets, custom events. |
Where contacts come from
| Source | How |
|---|---|
| Inbound conversations | Auto-created on first contact. |
| CRM sync | Pulled from Salesforce, HubSpot, etc. via integrations. |
| CSV import | Bulk upload from Contacts β Import. |
| API | POST /api/v1/contacts. |
| Manual | Click New contact and type. |
Contacts created from inbound conversations are deliberately minimal β just the channel handle and a placeholder name. CRM sync or manual edits fill in the rest.
Merging duplicates
Duplicates are inevitable β same person on email and SMS, different display names from your CRM and your widget. Omniflow detects likely duplicates and offers a merge.
To merge:
- Open one of the contacts.
- Click Merge and pick the other.
- Choose which fields to keep when they conflict.
- All conversations, tickets, and channel handles consolidate onto the survivor.
Merges are auditable and reversible within 30 days.
Companies
For B2B workflows, group contacts under a company:
| Company field | What it does |
|---|---|
| Name & domain | Drives auto-association β new contact at @acme.com rolls up to Acme. |
| Account tier | Drives SLA, routing, and prioritization. |
| Account owner | The internal owner β sales, CS, or an AM. |
| Custom fields | arr, industry, region, etc. |
The company view shows every contact, every conversation across all of them, and aggregate metrics β useful for a quarterly account review.
360Β° view in practice
A typical agent flow:
- Inbound voice call comes in.
- Omniflow looks up the caller by phone number.
- The contact panel opens with their identity, last 5 conversations, open tickets, and custom fields.
- Agent assist surfaces relevant knowledge based on the customerβs segment and history.
If the caller is unknown, the panel asks for an email so it can build the record on the fly.
Custom fields
Add custom fields under Settings β Contact fields:
| Type | Example |
|---|---|
| Text | external_id |
| Number | lifetime_value |
| Date | signup_date |
| Boolean | vip |
| Select | tier β {free, pro, enterprise} |
| URL | linkedin_url |
Custom fields are queryable in routing rules and reports.
Custom fields are workspace-wide. Adding a field affects every contact and creates a column in every CSV export. Audit before you ship.
Open in Omniflow
Related
| If you want to⦠| Go to |
|---|---|
| Sync from a CRM | CRM integrations |
| Trigger off custom fields | Routing Rules |
| Use contact data in templates | Canned Responses & Templates |