Most lead lists have two values for a checked address: good and bad. Verification tools that only speak those two words are throwing away the third answer, and it is the one that costs you contacts.
Three ways a probe ends
An SMTP probe is a conversation, and it can end in three ways:
| Outcome | Who produced it | What it means |
|---|---|---|
Refusal (5xx) |
The receiving mail server | A statement about the mailbox, right now |
Acceptance (2xx) |
The receiving mail server | The server will take mail for this address - not proof the mailbox exists on a catch-all |
| Timeout / hold / connection reset | Anything on the path | Nothing about the mailbox at all |
The third row is the one pipelines mishandle. It has no code that looks like a verdict and nobody to quote, so a two-state pipeline writes it as bad.
Why silence is normal
- Greylisting. A server that has not seen your host before may hold the first attempt and invite you to try again. The answer is a delay, not a verdict.
- Rate limits. Probes are connections. Send enough of them from one host and you get throttled or dropped long before anyone refuses you.
- Routing. The receiving server never saw the question. The address had nothing to do with it.
- Slow catch-alls. Domains that accept everything are the ones with least reason to make checks cheap.
The two mistakes are not symmetric
Marking a dead address as live costs a bounce: small, visible, self-correcting. Marking a live address as dead costs the contact in every campaign that uses that file afterwards, and no bounce ever reports it. That is how a list shrinks for reasons nobody wrote down - and why a bounce rate can improve while a list gets worse.
It also corrupts the number you quote. Checked contacts carry a published 2-5% bounce rate against 10-35% for static, resold databases, and part of the second number is addresses that were never actually tested.
How to keep the third state
-
Record
unknownas its own value. Not undeliverable, not deliverable - "the question was not answered". - Retry silence on a schedule, not in a tight loop. Holds and greylists clear in minutes to hours; re-probing within the same second reproduces the same silence.
- Cap your probe rate per host. Throttling yourself below the point where the other side stops answering is cheaper than re-running a list you never measured.
-
Treat
unknownas a decision at send time - lower priority, different template, or a check taken at the moment of use - never a deletion. - Store the reason, not just the state. "Timeout" and "refused" lead to opposite actions a week later even though both look like a non-delivery today.
TAPAC probes the mailbox during the search that found the contact and keeps the three outcomes apart: deliverable, undeliverable, or unknown for catch-all domains and unanswered probes, with the probe time and the source page on every row. A silent server produces an unknown row, not a deleted contact. Pay-per-use at $0.10-0.50 per contact from 100 free searches.
npx -y @tapacapi/mcp # tools: tapac_find_contacts, tapac_status
# hosted: https://tapacapi.com/mcp
# REST: POST https://tapacapi.com/v1/contacts/search
Top comments (0)