One customer. One timeline. Every channel.
Contacts are created automatically from inbound messages, resolved across channels by identity, and never duplicated without you knowing about it.
How it works
A contact is created automatically
The first time someone texts or messages you, a contact is created and linked to that identity - no manual data entry.
The same person stays one contact everywhere
The same phone number on SMS and WhatsApp resolves to the same contact, with one shared timeline, not two separate threads.
You import what you already have
Upload a CSV, map the columns, preview exactly what will be created versus what already matches an existing contact, then confirm.
One real timeline
Messages and staff actions merged into one feed, not scattered across channel-specific views.
Tags and custom fields
Organize contacts your way, with fields you define - not a fixed schema.
Duplicate-aware merge
Possible duplicates are flagged automatically; merging keeps everything from both, deduped.
- Cross-channel identity resolution: the same phone number always means the same contact
- A merged timeline of every message and every staff action, newest first
- Notes, tags, lifecycle stage (lead, prospect, customer, lapsed), and custom fields
- Merge with one click when a duplicate slips in, with a possible-duplicate flag shown automatically, and a day to undo it
- Saved segments: name a filter once (lapsed customers, anybody tagged implant) and reuse it on the contact list or as a campaign audience
- CSV import with column mapping and a preview that matches exactly what commits - no surprises
- CSV export, permission-gated
Frequently asked questions
I merged the wrong two contacts. Can I get them back?
Yes, for a day. Undoing a merge puts back exactly what the merge moved and leaves anything that arrived since where it is, so a conversation that came in this morning is not handed to the wrong record on the way back. Two things are never undone: a do-not-contact flag stays set, because somebody who asked not to be contacted should not have to ask twice, and a customer's texting permission is left exactly as they last left it.
Is a saved segment a list of people?
No, it is a saved question, which is why it is always current. “Customers tagged implant” means whoever matches that today, so somebody tagged this morning is in it without you touching anything. A campaign built from a segment takes a copy of the filter on purpose: editing the segment next month must not change who last month's campaign went to.
If someone texts and later WhatsApps me, is that two contacts?
No. Phone-based channels resolve to the same contact by the underlying phone number, so it's one contact with one timeline regardless of which channel they used.
What's on the timeline?
Every message across every linked conversation, plus staff and system actions - notes added, tags changed, lifecycle stage changed, a lead created or won - all in one newest-first feed.
How does CSV import handle duplicates?
It checks phone and email against your existing contacts, and against other rows in the same file, before creating anything. The preview you see is exactly what commits - nothing changes between preview and import.
Can I add my own fields?
Yes. Define a custom field (text, number, date, select, multi-select, or boolean) once, and it's available on every contact.
Where to go next
Start free. Be live this week.
Built for dental, med spa, home services, and the businesses that live on the phone.