Automated email verification should produce a decision before a contact reaches your sending system: accept, hold, reject or retry. Store the verifier's original response alongside that decision. Do not treat a returned address, a high score or a catch-all domain as proof that a specific person will receive the message.
Use this guide to implement a verification gate. If you are choosing vendors first, see the email validation tools comparison. If you still need to find the address, start with verified contact details from professional profiles.
Define what the gate is allowed to accept
Separate three questions: does this address belong to the intended person, what does the verifier report about delivery, and is the contact eligible for this campaign? Passing one does not answer the others.
Hunter's verifier documentation describes verification results and separate signals such as accept-all handling. Map the selected provider's documented fields explicitly; status names are not interchangeable across vendors.
| Evidence | Proposed decision | Why |
|---|---|---|
| Matched person, acceptable verification result, current campaign eligibility | Accept | All required gates passed |
| Catch-all or unknown mailbox result | Hold | The mailbox-level conclusion remains uncertain |
| Invalid address or known suppression match | Reject | The row fails a required condition |
| Timeout, quota issue or provider error | Retry or operational hold | No verification conclusion was obtained |
| Valid-looking address with conflicting employer evidence | Review | Mailbox evidence does not settle identity |
These are example policy choices. Choose and document the exact acceptance rule for your use case, including whether role addresses are eligible. Never turn a technical error into an invalid-address label.
Put verification before expensive downstream work
Normalize and deduplicate the input, resolve identity, and check your suppression source before verification. After verification, pass only accepted rows to personalization and campaign preparation. Recheck eligibility immediately before sending because an unsubscribe or internal exclusion can arrive after a list was built.
Do not remove punctuation from email local parts using a global rule. An address transformation that works for one mail provider may change the identity at another. Keep both the raw address and the normalized representation used for comparison.
Worked batch: why a positive verifier result can still be held
This fictional five-record batch uses a conservative policy: current identity, acceptable mailbox evidence, and campaign eligibility must all pass. The labels below are our normalized categories, not a provider response schema.
| Record | Mailbox evidence | Other evidence | Decision and reason |
|---|---|---|---|
| A | Acceptable | Identity matches; eligible | Accept |
| B | Acceptable | Contact unsubscribed | Reject: suppressed |
| C | Catch-all | Identity matches | Hold: mailbox uncertain |
| D | No response | Request timed out | Retry: no conclusion |
| E | Acceptable | Address belongs to former employer | Hold: identity conflict |
The result is one accepted, two held, one rejected, one retry pending. A dashboard that counts three positive mailbox responses as three usable contacts would overstate the outcome.
For record E, a minimal decision record might look like this. It is an application-owned format, not an API payload:
{
"source_record_id": "E",
"mailbox_category": "acceptable",
"identity_status": "employer_conflict",
"decision": "hold",
"reason": "resolve_current_employer",
"policy_version": "outbound-example-v1"
}
Retain the original verifier response and its timestamp beside this record. Check suppression again at the sending boundary: record A can become ineligible after this batch finishes.
Handle retries without making the list less trustworthy
Set a bounded retry policy for temporary failures. When the retry budget is exhausted, hold the record and retain the error. Do not call a second verifier solely until one says what you want to hear. If providers disagree, preserve both observations and apply a conflict policy.
Treat freshness as a business rule. Record when verification occurred and recheck records that exceed the campaign's chosen window. There is no universal number of days after which every email becomes stale.
For recurring jobs, keep a stable row identity and input revision so replaying a completed batch does not enqueue the same contact twice. Verification and campaign enrollment are separate actions; a successful verification run must not implicitly authorize enrollment.
Build a pilot from real failure categories
After the quickstart, discover the current tools:
deepline tools search "email validation" --json
Ask your coding agent to inspect the selected contract and author the gate from it. Specify the output states above, the suppression source, the freshness policy and the downstream action boundary. Avoid copying an old provider action name or assuming a generic valid field.
Test with internal or authorized test records covering acceptable, invalid, catch-all, unknown, duplicate, suppressed and provider-error outcomes. Verify that held and rejected rows cannot enter the accepted export. A pilot consisting only of deliverable addresses cannot prove that the gate works.
Measure usable outcomes
Report accepted records, held records by reason, provider errors, duplicate prevention and the time between verification and use. Measure downstream delivery separately. A verification result is evidence at a point in time, not a guarantee of inbox placement, a reply or a meeting.
If the team optimizes cost, compare total workflow spend with the number of records that passed the full acceptance policy. For example, a hypothetical $12 batch producing 80 accepted records costs $0.15 per accepted record. Dividing by all 200 attempted rows would report $0.06 and hide the cost of unusable results. Include retries in the numerator and count each accepted identity once.
Questions operators ask
Can an agent verify emails automatically?
An agent can orchestrate a verifier and apply an explicit policy. The reliability comes from inspecting the tool contract, preserving evidence and testing the gate, rather than asking the agent to guess which addresses look real.
Should a catch-all result be marked verified?
Keep the provider's catch-all signal visible. Under the conservative example policy above, hold the row unless a separate approved process resolves the uncertainty.
Is verification enough to send?
No. Identity, suppression and campaign eligibility remain separate checks. A technical mailbox result is not consent or campaign approval.
Sources and related work
Hunter's API documentation was checked September 14, 2026. The decision table is a proposed implementation pattern, not a vendor accuracy benchmark. Prepare clean input with CSV validation, then connect accepted results to your outbound workflow.