What are the verification results?

Every verification returns a result indicating whether an email address is safe to use. The fields available depend on the verification method.

The is_reachable field:

  • safe — Address passed all checks and is considered valid
  • invalid — Address failed one or more checks (bad syntax, no MX records, SMTP rejection, known disposable/relay, or a custom rule override)
  • unknown — Mail server could not conclusively confirm the mailbox — common on catch-all domains where the server accepts all addresses without verifying mailbox existence (Deep Verification only)

Fast Check results:

Fast Check (integration) and the free widget both return only safe or invalid. A safe result means syntax, MX records, disposable provider, and relay checks all passed. No SMTP handshake is performed, so mailbox-level SMTP fields are not available.

Deep Verification — SMTP fields:

  • smtp.is_deliverable — SMTP server confirmed the mailbox exists and can receive mail
  • smtp.is_catch_all — Domain accepts all addresses regardless of whether the mailbox exists; deliverability cannot be guaranteed
  • smtp.has_full_inbox — Server indicated the inbox may be full
  • smtp.can_connect_smtp — An SMTP connection was successfully established with the mail server

MX fields:

  • mx.accepts_mail — The domain has valid MX records and is configured to receive email. This is the first hard-failure check: if false, the address is unreachable regardless of SMTP result.

Miscellaneous fields:

  • misc.is_disposable — Address is from a known disposable/temporary provider
  • misc.is_role_account — Role-based address (info@, admin@, support@, sales@, noreply@, etc.)
  • misc.is_free — Address is from a free consumer email provider
  • misc.is_relay — Address routes through an email relay or forwarding service
  • is_disabled — The address or account has been flagged as disabled

Syntax fields:

  • syntax.is_valid_syntax — Email address passes RFC format validation
  • syntax.domain — Domain portion of the address
  • syntax.username — Username (local-part) of the address

Any of these fields can be referenced in custom rules using dot notation. See How can I use custom rules? for details.

Typo suggestion field:

Free widget and API responses may include a suggestion field when a common domain typo is detected (e.g. gmial.comgmail.com). The widget displays this as a clickable prompt; via the API you can use it to prompt the user in your own UI.

Send to Verify — send_to field:

For Send to Verify integrations, a successful response includes a send_to field containing the unique proxy address the visitor must email to confirm ownership (e.g. [email protected]). The widget displays this automatically. If you’re handling the response yourself, show this address to the user and poll the endpoint until you receive verified: true.

PHP loader status codes:

The PHP loader returns one of four internal statuses after calling the verification endpoint:

  • valid — Email was verified; form processing continues normally
  • invalid — Email failed verification; exit() is called with the mapped error message
  • pending — Send to Verify: visitor has not yet emailed the proxy address; exit() is called with the awaiting_confirmation message
  • unknown — API or network error; exit() is called with the service_unavailable message and the error is written to the loader’s log file