Handling a prospect's reply, end to end
A reply to cold outreach is an ordinary inbound message that carries an unusual amount of meaning. It is canonicalised like any other mail, matched back to the prospect, classified, and then either stops the sequence, creates a relationship, or does both. Anything that reads as a refusal stops the sequence immediately, before any reply is drafted.
From arrival to consequence#
- Trigger — mail arrives in a mailbox the workspace has connected.
- External event — the provider's fetch or push delivers it; Gmail, Microsoft Graph and IMAP all land in the same place.
- Authentication and workspace resolution — the mailbox names the workspace, and the workspace is entered before anything is read.
- Ingest — the provider's own shape is stored in the
tenant_*tables and bridged to the canonicalthreads,messagesandcontacts. - Canonical record — the reply joins the thread the outreach created; the engine reads only the canonical rows, which is why the provider does not matter downstream.
- Classification and reasoning — the reply is classified: interested, not now, not interested, wrong person, unsubscribe, or hostile.
- Knowledge, memory and rules — a stop is a directive, written as a
block:<channel>tag on the contact so it holds across channels and future conversations. - Autonomy and approval — a reply to a warm answer follows the channel's mode; nothing is sent under a stop, whatever the mode says.
- Action through a provider — any response goes out through the shared send boundary, with the same evidence rule as the first message.
- Result — the sequence continues, pauses, or ends; the prospect's next action changes to match.
- Relationship, timeline and memory — a real conversation justifies a Person, and the exchange moves onto that person's timeline.
- Audit, usage and Needs You — the classification and its consequence are logged, and a reply needing judgement is queued for a person.
What each classification does#
| Reply reads as | Sequence | Record |
|---|---|---|
| Interested | Stops — it has succeeded | Raised for a person; a Person and a follow-up are warranted |
| Not now | Stops, with a dated follow-up rather than a silent retry | The date is a commitment, visible on the follow-ups screen |
| Not interested | Stops permanently | Recorded as a decision about this prospect, not a fault |
| Wrong person | Stops for this address | The address is corrected or removed; the organisation may remain a prospect |
| Unsubscribe | Stops, and suppresses | Suppression with its origin; it outlives the sequence and the list |
| Hostile | Stops immediately | A block directive on the contact, which holds across every channel |
When a prospect becomes a person#
A reply is the first evidence that a real human is on the other end, and it is the natural moment for a Person and an Identity to exist. The address becomes an Identity row, normalised so the same person recognised later on another channel resolves to the same record rather than to a second one.
What a reply does not do is create an opportunity. Pipeline entry is a human decision, and an enthusiastic sentence in an email is not the same as somebody deciding there is a deal to work. That separation keeps the pipeline meaning what it says.
Where this goes wrong#
- The reply did not attach to the prospect
- It came from a different address at the same organisation. Attach that address as an identity; the thread and the prospect then agree.
- An out-of-office was treated as a reply
- Automatic mail is recognisable and should not stop a sequence permanently, but a stop is the safe direction of error. Restart deliberately rather than assuming.
- A stop did not stop anything
- The directive is read from the tag list, never from the body of a memory. A note written as prose does not block.
- A reply is sitting unanswered
- Autonomy is holding the response, or the allowance is spent. Needs You says which, and the prospect is waiting either way.
Questions#
Does an unsubscribe only apply to this campaign?
No. It becomes a suppression on the address with its origin recorded, and it applies to anything that would write to that address afterwards. That is the whole value of holding it outside the sequence that produced it.
Can I see why a reply was classified the way it was?
The classification and what followed from it are on the decision trail, including the refusals — a refusal is a decision, and it is recorded like one. The thread itself sits beside it in Conversations.
What if a prospect replies months later?
It lands on the same thread and is classified the same way. The sequence has long since ended, so the practical effect is a queued item for a person rather than an automatic resumption.