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.

EvidenceProposed decisionWhy
Matched person, acceptable verification result, current campaign eligibilityAcceptAll required gates passed
Catch-all or unknown mailbox resultHoldThe mailbox-level conclusion remains uncertain
Invalid address or known suppression matchRejectThe row fails a required condition
Timeout, quota issue or provider errorRetry or operational holdNo verification conclusion was obtained
Valid-looking address with conflicting employer evidenceReviewMailbox 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.

RecordMailbox evidenceOther evidenceDecision and reason
AAcceptableIdentity matches; eligibleAccept
BAcceptableContact unsubscribedReject: suppressed
CCatch-allIdentity matchesHold: mailbox uncertain
DNo responseRequest timed outRetry: no conclusion
EAcceptableAddress belongs to former employerHold: 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.