One person across phone, email and WhatsApp
Recognition across channels happens in one of two ways, and they are not equally certain. If the arriving address is already an identity on a person, by_handle resolves it exactly and the conversation continues. If it is not, Connect creates a person for it and may later *propose* that two records are the same human — a proposal a person accepts, never an automatic join.
Exact resolution, then proposal#
| Route | Evidence | Who decides |
|---|---|---|
by_handle | The address is already an identity on that person | Nobody — it is a lookup, and it is exact |
duplicates | Two records look like one human | A person, through merge_people |
The first route is the one that carries almost all the traffic, and it is why adding an identity matters more than any clever matching: an address attached to the right person needs no inference at all. The second exists because addresses arrive faster than anybody attaches them, and a workspace that has been running for a year has pairs nobody has yet joined up.
What a first call from an unknown number does#
The call arrives and the carrier webhook is handled.
Result The number is looked up as a phone identity. Nothing about the caller's email history is available yet, because nothing links them.
No identity matches, so a person is created with that number attached.
Result The call is answered with what the workspace knows generally rather than with this human's history — which is the honest state, not a fault.
Later, a proposal appears that this person and an existing one are the same human.
Result Somebody reads both sides and decides. Accepting merges them and the phone number joins the identities already on the surviving record.
The next call from that number arrives.
Result
by_handleresolves it exactly, and the conversation carries the whole relationship — because the evidence is now a row, not a resemblance.
What is never used as evidence#
- A guessed address. Connect does not construct a likely email address for somebody and treat it as theirs — the prospecting rule is evidence-first, and the same principle governs identity.
- A shared surname or company alone. Two people at one organisation are two people; the company link is context, not identification.
- Message content. What somebody writes may be memorable, and it is not proof that two records are one human.
So the honest summary is that Connect recognises addresses exactly and humans provisionally. Where the evidence is a row, it acts on it; where the evidence is a likeness, it proposes and waits. Duplicate detection covers what makes a proposal, and merging covers the decision.
Continuity once the link exists#
After a merge — or after an identity is attached by hand — every channel reads one relationship. The contact block a channel is given, the memory at the contact tier, the follow-ups and the open cases are the same set whichever channel is being answered, because they hang off the person rather than off the address.
That is what makes a promise made on the phone survivable in email. The follow-up is on the person and carries a reason; the reply that mentions it does so because the person's own record said so. Continuity across channels walks the whole path.
Questions#
Why did a returning customer get answered as a stranger?
Because they arrived on a channel whose address is not yet an identity on their person — a new mobile, a personal address, a WhatsApp number never used before. Nothing is lost: attach the identity, or accept the merge proposal when it appears, and the history is one again.
Can Connect join two records automatically if it is very confident?
No. duplicates proposes and merge_people is a human decision. A merge folds two histories into one and there is no clean way back, which is exactly the class of change that should not happen while nobody is looking.
Does a phone number from a WhatsApp message count as a phone identity?
They are separate kinds. value_key(kind, value) keys the pair, so the same digits arriving over WhatsApp and over the PSTN are separate rows that may both hang off the same person once attached.