How do I segment my list using VEC results before sending?

Last updated May 19, 2026Best practices

A Valid Email Checker bulk run gives every address a status from the 11-value enum. Turning that flat result list into a usable send segment is straightforward if you treat the statuses as four cohorts instead of 11 individual buckets.

Cohort 1: Send (the safe pile)

Addresses with status safe go to the send. These are mailboxes that passed every check the engine runs — syntax, MX, SMTP handshake, the works. Expect bounce rates under 2% on a safe cohort if your sending infrastructure is healthy.

Cohort 2: Drop entirely (do not send)

Suppress these from the campaign and from your active list:

  • `invalid` — syntax wrong, MX missing, or mailbox confirmed nonexistent. Sending guarantees a hard bounce.
  • `disabled` — mailbox is deactivated. Same outcome as invalid.
  • `spamtrap` — sending here trains spam filters against your domain. The single worst thing you can do for sender reputation.
  • `disposable` — throwaway domain. Even if the address technically works, the user signed up to not receive your mail.

Cohort 3: Conditional (depends on campaign)

These need a judgment call:

  • `catch_all` — the domain accepts every address. Often legitimate B2B mailboxes, but you cannot prove the specific address is real. Acceptable risk for warm sales follow-ups, riskier for cold campaigns. See should I drop or keep catch-all.
  • `role` — addresses like info@, support@, sales@. These reach a team inbox, not a person. Bad for cold outreach, fine for transactional and customer-success mail. See should I drop or keep role addresses.
  • `risky` — the engine returned an answer but with low confidence. Bounce rates run 10 to 30% on this cohort. Send only on campaigns where the lift outweighs the bounce-rate hit.
  • `inbox_full` — the mailbox is over quota right now. Often a temporary state. Retry verification in a few days; if it changes to safe, send then.

Cohort 4: Refunded (no charge)

`unknown` results are auto-refunded — you were never charged for them. The engine could not reach a conclusion (rate-limited domain, transient SMTP failure, greylisting). Re-run those addresses in 24 to 48 hours on a separate job and they usually resolve to a definitive status. Read what does Unknown status mean for the full mechanics.

A worked example

A 10,000-address marketing list typically comes back roughly like this:

CohortApprox %Action
Safe70-85%Send
Invalid + Disabled + Spamtrap + Disposable5-15%Drop
Catch-all + Role + Risky + Inbox full5-15%Decide per campaign
Unknown1-3%Refunded, retry later
B2B lists usually have a higher catch-all percentage (often 15 to 25%) than B2C lists, since corporate domains commonly run accept-all configurations. Plan campaign-by-campaign on that cohort.