The Customers directory is your CRM: one record per person, stitched together from everything they do across your site. A visitor who chats with the widget, fills in a form, triggers a conversion, and comes back next week is one contact — not four scattered traces. Comerix Flow resolves them automatically through a shared identity graph, so you always look at the whole person, not a single session.
Menu: Customers → Contacts
Route: /admin/customers (admin_customers)
Permission: comerix.crm.view
The Customers section has three surfaces:
- Contacts — the directory of people, searchable and filterable.
- Activity — a cross-customer inbox of everything happening right now.
- Matching — the Identity rules that extract identity from your event stream, and the merge-review queue.
Identified vs. anonymousA contact is anonymous until an email or phone is known, and identified the moment one appears. An anonymous chat session is kept as its own contact and merges automatically into a known person as soon as a shared identifier (an email from a form, a customer id from a conversion) ties them together. See Concepts for the identity vocabulary.
The Contacts list (/admin/customers) is paginated at 25 per page and ordered by most recent activity first. Three metric tiles head the page:
| Metric | Meaning |
|---|
| Total contacts | Every contact (merged-away records excluded) |
| Identified | Contacts with a known email or phone, plus their share of the total |
| Anonymous | Contacts with no email or phone yet, plus their share |
The list itself defaults to the Identified audience, so the directory shows real people first.
Use the toolbar to narrow it down:
| Filter | What it does |
|---|
Search (q) | Matches against display name, email, or phone |
| Source | Limit to where the contact originated: Any source, Chat, Form, Conversion, Manual, or Import |
Columns in the list:
| Column | Meaning |
|---|
| Customer | Display name and avatar — links to the contact detail |
| Email | The contact’s primary email, denormalised from the identity graph |
| Phone | The primary phone |
| Company | The company, if set |
| Source | A badge showing where the contact first appeared |
| Last seen | The most recent activity timestamp |
Contacts appear here automatically from chats, forms, conversions, and telemetry — you rarely create them by hand. To add one anyway (for example, importing a known lead), click Add customer and fill in name, email, phone, and company. Creating a contact with an email or phone makes it identified straight away and lets future traces stitch onto it.
Open any row to reach the contact detail (/admin/customers/{id}, admin_customers_show). The header shows the display name with a source badge and an identity pill (Identified or Anonymous). A left column holds the profile and identity facts; a wide right column holds the activity timeline.
Profile
The Profile panel lists the display name, email, phone, company, source, and the first / last seen dates. Click Edit to update the editable fields. Identifiers and activity are managed automatically and aren’t edited here.
If the contact is still anonymous, a note explains that it will merge into a known person the moment an email or phone appears.
Identity graph
The Known identifiers panel is the contact’s identity graph — the set of values that all resolve to this one person. Each node is an identifier the system has seen for them:
| Identifier type | What it is |
|---|
email | An email address |
phone | A phone number |
customer_id | Your integrator-supplied customer id |
conversation_id | A chat conversation id (stitches anonymous sessions) |
visitor_id | A widget visitor id |
external_ref | Any other external reference you map in |
Each identifier shows its value, a verified badge when the value is trusted, and when it was first seen. This panel answers the question “why do all these traces resolve to one person?” — every value listed here is a key that pointed at this contact. Identity is governed by the Identity rules you configure.
TraitsIf identity rules have extracted free-form attributes onto the contact, they appear in a Traits panel (stored on contact.traits). Traits are descriptive only — they’re never used to match or merge contacts.
Summary & linked records
The Summary panel tallies the contact’s footprint and deep-links to the underlying records (ContactLink edges keep these counts merge-safe):
| Tile | Links to |
|---|
| Conversations | The contact’s chats, filtered in Transcripts |
| Forms submitted | The contact’s form submissions, filtered in the Forms inbox |
| Conversions | The contact’s total conversion value |
| Telemetry | The number of telemetry events recorded |
Conversations and Forms tiles are clickable when there are records to show; the others are display-only.
Activity timeline
The Activity timeline is the contact’s unified history, grouped by day, newest first. It folds every touch into one stream — chats, form submissions, telemetry events, conversions, manual notes, and merges. Each row links through to the source record where one exists (a conversation opens in Transcripts), so you can jump from “they did X” to the full detail.
The Activity inbox
The Activity inbox (/admin/customers/activity, admin_activity) is the live, cross-customer feed — everything happening across all contacts in one place. Use it to spot new identified customers, fresh conversions, and incoming forms as they land.
Three metric tiles summarise today: Events today, New contacts today, and Conversions today.
The inbox is a two-pane layout: the stream on the left, a customer preview on the right. Click any event in the stream and the right pane swaps to that customer — their identity pill, identifiers, and recent activity — with Open contact and Merge buttons. Selection anchors on the clicked event row, so even a customer with many events highlights only the one you clicked.
Filter by type
A row of filter chips narrows the stream by activity type: All, Conversations, Forms, Conversions, Telemetry, and Merges. The stream loads the 100 most recent matching events.
Show anonymous
On the right of the filter row is the Show anonymous toggle.
Anonymous activity is hidden by defaultBy default the inbox hides activity from anonymous (unidentified) contacts — only identified people show, so the stream stays focused on real customers. Click Show anonymous to widen the stream back to everyone, including unidentified sessions.
The toggle flips the ?anon=1 query parameter and persists across the type filters — switching between Conversations, Forms, Conversions, and so on keeps your anonymous setting, so you don’t have to re-enable it each time you change the type.
If the same person ended up as two contacts, merge them. From a contact detail or the Activity preview, click Merge (/admin/customers/{id}/merge, admin_customers_merge). Search for the other contact, then Merge into this. Merging reassigns the loser’s identifiers, activity, and linked records to the surviving contact.
Merging is hard to undoIdentifiers and timeline are reassigned permanently. Verified claims auto-merge on their own; ambiguous, unverified collisions wait in the merge-review queue under Matching → Merge review instead of merging silently.
Delete & forget (GDPR erasure)
When someone exercises their right to be forgotten, use Delete & forget from the contact detail (/admin/customers/{id}/delete, admin_customers_delete). This requires the separate comerix.crm.pii.delete permission.
The erasure page summarises exactly what will be removed — the linked identifiers, the timeline activities, and the conversion history that will be detached from reporting. To proceed you must type the contact’s email, or the word DELETE, into the confirmation box; a mismatch deletes nothing.
Confirming permanently:
- Deletes the contact, all linked identifiers, and the full activity timeline.
- Fans erasure out to the modules that hold the actual personal data (chat transcripts, form submissions, node outputs), so the real PII is erased at the source too.
- Records the action in the tamper-evident audit log — but only non-identifying counts (how many conversations and submissions), never the erased values themselves.
This cannot be undoneDelete & forget is a true GDPR erasure, not an archive. Once confirmed, the contact and the personal data behind it are gone.
Where the data comes from
- In: contacts and their activity are created automatically from chats, form submissions, telemetry, and conversions, resolved through the identity graph. The rules that drive resolution live in Identity rules.
- Conversations open in Transcripts — the full chat thread and run history behind a contact’s activity.
- Conversions on a contact are the same outcomes your Goals define and that the Analytics Hub reports on.
Permissions
| Action | Permission |
|---|
| View customers, the identity graph, timelines, and the Activity inbox | comerix.crm.view |
| Create, edit, and merge customers | comerix.crm.manage |
| Delete & forget a customer (GDPR erasure) | comerix.crm.pii.delete |
Everything under Customers requires comerix.crm.view. Creating, editing, and merging additionally require comerix.crm.manage; the irreversible Delete & forget flow requires comerix.crm.pii.delete on top of view access. Users without these leaves won’t see the matching entries in the Customers menu.