Skip to main content

Guides

Understanding results & provider limits

Email verification combines syntax, DNS, MX, SMTP response where available, and risk signals. Some mailbox providers intentionally make mailbox-level confirmation impossible, so Kawaa flags those cases instead of presenting them as confirmed mailboxes.

Status is the primary verdict

StatusHow to use it
validLow risk. Use for normal sends, while still honoring unsubscribe and consent rules.
riskyUse caution or skip. The address may receive mail, but a risk signal or provider limitation remains.
unknownDo not treat as confirmed. Retry later or use another confirmation signal.
invalidDo not send. The address failed a hard verification check.
catch_allTreat as risky. The domain accepts mail for any address, so this mailbox could not be confirmed. Counted as risky in a job summary.
roleSend with care. A shared address such as info@ or support@ reaches a team or a shared inbox rather than a person. Counted as risky in a job summary.
disposableDo not send. The domain is a disposable or temporary mail provider, so the address is not a lasting contact. Counted as invalid in a job summary.
spam_trapDo not send. The address is at a domain on the reviewed list of trap-only domains, where every mailbox is a trap. Kawaa does not guess traps from how an address looks (sample@ and fake@ get the mailbox check like any other address), and the list is empty today. Counted as risky in a job summary.

Reading a result

Quality score

The score is a supporting number, not a replacement for status and sub_status. Risky, unknown, catch-all, policy-blocked, greylisted, and connection-failure results are capped so they cannot outrank their caveat.

Catch-all domains

A catch-all domain accepts mail for many or all local parts. Kawaa marks these as risky or catch_all because SMTP cannot prove whether a specific mailbox belongs to a real user.

Provider accept-all

Some consumer mailbox providers accept verification probes for addresses that do not exist: Outlook.com (Outlook, Hotmail, Live) accepts some of them, and Yahoo and AOL accept every address. These results are down-ranked and flagged with provider_accept_all.

SDK booleans

SDK helpers such as isDeliverable are true only when the API status is valid. For automation, also inspect status, sub_status, and verification details before sending.

  • Send normally only for status: valid.
  • Review, suppress, or confirm by another channel for status: risky.
  • Retry later for unknown, greylisted, or connection_failure.
  • Do not treat catch_all or provider_accept_all as mailbox-confirmed.
  • Suppress disposable and spam_trap. A job summary counts spam_trap as risky, so filter on the status itself rather than the summary bucket.

See the Verification API reference for the full response shape.