The thing that surprises people first
The same person messaging you on two channels arrives as two contacts.DMLY does not link contacts across channels automatically. An inbound message is matched
against the identities on the channel it came in on, and nothing else — so the customer who
WhatsApps you and later texts your SMS number lands as two contacts, and an Instagram DM
from your best WhatsApp customer lands as a third. Same phone number or not, it makes no
difference here.This is not something you can change from the app. The fix is to merge them — see
When one person becomes two contacts below.
One contact, many identities
Every channel a person reaches you on adds an identity to their contact — one row saying “this person, on this channel, is this id”. A contact can hold several. The contact page lists them under Channels, with the channel they first arrived on marked Primary, and explains the point in a line: “One profile, many channels — replies, history and CRM data are shared.” What each channel uses to identify someone:
Two rules hold everywhere:
- Within one channel, that id always maps to the same contact. A customer who messages your WhatsApp number today and again in six months is one contact, not two.
- A person has at most one identity per channel. You cannot end up with the same person twice on the same WhatsApp number.
When one person becomes two contacts
When a message arrives, DMLY looks for an existing identity on that channel. If there is none, it creates a new contact. It does not go looking for a match elsewhere in your workspace by phone number or email — shared and recycled numbers would quietly merge strangers, and a duplicate is the safer mistake. So duplicates happen, and the cure is manual.1
Open either of the two contacts
If DMLY can see a phone number or email in common, the profile shows a Possible
duplicates card: “These contacts share a phone or email with this person. Merge to
combine their channels, history and tags into one profile.”
2
Select Merge on the right one
DMLY shows you which way round it goes before you commit: the duplicate is merged into
the profile you are looking at.
3
Confirm with Merge into this profile
All of the duplicate’s channels, messages, notes and tags move across, and the duplicate
is deleted.
- Opt-out sticks. If either profile had opted out of messages, the survivor is opted out. A merge can never quietly re-subscribe someone.
- Client status sticks. If either profile was a client, the survivor is a client, keeping the earlier conversion date.
Lifecycle stage: leads and clients
Every contact has a lifecycle stage. It answers one question — is this person still an enquiry, or are they doing business with you?
The list at the top of Contacts filters on exactly this: All, Leads, Clients,
Archived.
Two further stages exist in the data —
archived and inactive — but nothing in the app
sets either one. There is no archive button on a contact, and the edit form does not touch
the lifecycle stage; only the API can set them. The
Archived tab is real and will count whatever the API put there, so on a workspace that
has never called the API it reads zero. A contact set to inactive has no tab at all and
disappears from everything except All.Clients are a filtered view, not a separate list
This is worth saying plainly because it shapes everything else: Clients is the same Contacts page with the lifecycle filter set to Client. Same records, same filters, same counts. There is no separate client database to keep in sync, and a person cannot be a contact and a client — being a client is something a contact is. What a client gets is more of the profile page: credits, amount due, loyalty points, lifetime value, and tabs for invoices, orders, payments, appointments and the rest. Leads render without any of it. See The client profile.How a lead becomes a client
Automatically, most of the time. A contact is promoted the moment real commerce touches them:- an invoice is created for them
- an order is created for them
- a payment is recorded against them
- a subscription starts
The manual button needs a way to reach the person first: “A client needs at least a phone
number or email so you can reach and invoice them. Add one to continue.” Add a phone number
or email and convert again. Automatic conversions never stop for this.
Going back
Mark as lead moves a client back — but only if there is nothing commercial on file. If they have a confirmed booking, a successful payment, or a paid order, DMLY blocks it: “This client has billing or booking records and can’t be moved back to a lead.” Downgrading never deletes anything. The client profile, the invoices and the history all stay; only the stage changes.Five things that look like the same setting and aren’t
This trips people up more than anything else in the CRM. A contact carries several independent switches, and none of them feed each other.The Archived tab is not the Inbox archive. Archiving a conversation tidies your Inbox
folder; it does not touch the contact’s lifecycle stage, and it will not put anyone in the
Archived tab.
Two things about the list itself
- The channel you are working in does not filter this list. Contacts always shows every person in the workspace. The active channel scopes your conversations, not your people. Channels is there as an optional filter if you want it.
- People who only ever left a public comment are in here. A new commenter on a Facebook or Instagram post gets a contact and an identity like anyone else — named from their username where Meta exposes one, and given a placeholder like “Instagram user 5400” where it does not. They count towards your totals. What stays separate is the conversation: comments are threaded apart from DMs rather than folded into one thread.
Where to go next
Tags and segments
Label people, and build the reusable audiences your broadcasts send to.
Pipeline stages
Your own sales columns, and how to rename or reorder them.
Custom fields
Store the details your business needs on every contact.
The client profile
Credits, invoices, loyalty and the manual actions on a client.
Import contacts from CSV
Bring an existing list in without creating duplicates.
Data and privacy
Opt-outs, blocking, suppressions, export and deletion.

