Merging Contacts
Fold duplicate contacts into one person without losing any history
The same human often reaches you more than once - WhatsApp today, Instagram next month, the website widget after that. Each arrival creates its own contact, so your People list ends up with several rows for one person.
Merging folds those rows into a single contact. Nothing is thrown away: every conversation, message and field value is kept, and the merge can be undone.

Merging and splitting contacts require a Pro or Enterprise plan, and the Owner, Admin or Editor role.
Possible Duplicates
Wexio looks for rows that are probably the same person and collects them under Possible duplicates. Nothing is merged until you say so.

Each suggestion shows why Wexio thinks these rows match:
| Signal | Meaning |
|---|---|
| Same verified email | Both contacts have the same confirmed email address. |
| Same verified phone | Both have the same confirmed phone number. |
| Shares a field | They hold the same value in one of your contact fields. |
| Same name on a channel | The channel reports the same display name. |
Verified email and verified phone are the strong signals - a shared field or a matching channel name is weaker, and worth a look before you accept it.
On a busy account the first pass takes a moment. An empty panel on first load means Wexio is still looking, not that there are no duplicates.
Dismissing a Suggestion
Not every match is real - two people genuinely can share a name.
| Action | Effect |
|---|---|
| Dismiss | Hides this suggestion for now. |
| Dismiss permanently | Wexio never suggests this combination again. |
| Remind me later | Hides it for a number of days, or until a date you pick. |
Use Dismiss permanently for a pair you have checked and know are different people. Use Remind me later when you need to ask the customer before deciding.
Merging
You can merge from a suggestion, or by selecting rows in the People list yourself.

The dialog asks one question: which contact survives. Mark it with Keep - it keeps its ID, and everything else folds into it. Use Include in the merge to control exactly which of the selected rows take part.
Then confirm with Merge.
What Survives
| What happens | |
|---|---|
| Conversations and messages | All of them move to the surviving contact. Nothing is deleted. |
| Channel identities | All kept. The merged contact can be reached on every channel its parts could. |
| Field values | Every value is kept. Each channel identity keeps its own answers - the merge only decides which one the contact displays. |
| The contact ID | The survivor's ID is the one that lives on. Retired IDs become aliases. |
This is the part people expect to lose data at, and it does not. If two identities give different answers for "preferred language", both answers are still stored - see choosing which value shows.
Limits
- There is a cap on how many identities you can merge in one go, and only one already-merged contact can take part in a merge. If you hit it, merge in two passes.
- A contact that already holds several identities shows how many it will end up with before you confirm.
Undo
Right after a merge, an Undo prompt appears - available until you leave the page. After that, undo it from the contact's merge history: see Splitting contacts.
Choosing Which Value Shows
A merged contact displays one value per field, but keeps them all. Open Which values this contact shows to pick the source per field.

- Every channel keeps its own answers.
- The picker only says which one the contact displays.
- It changes as soon as you pick, and you can change it again later.
Fields with no value on a given identity show as Empty.
The Merged Contact
After a merge the People list shows one row. The contact profile lists the channel identities behind it, each with its own conversations.
One identity is the primary one. You can change which, and you can take a single channel back out without undoing the whole merge - both covered in Splitting contacts.
What External Systems See
If you have an outbound webhook or an API integration mirroring contacts, a merge is not a deletion:
- It emits
contact.mergedwith a{ from, into }forwarding pointer. - It does not emit
contact.deletedfor the retired rows.
An integration that only listens for contact.deleted will silently drift out of sync after a merge. Subscribe to contact.merged and contact.split too, and key your records on the merge-winner contact ID.
Related
- Splitting contacts - undoing a merge, in whole or in part
- Erasing a contact - permanent deletion for a data-deletion request
- People - the contact list itself
contact.mergedwebhook