EmailVerify LogoEmailVerify

Verification Types

Email checker result types: valid, invalid, disposable, role-based, catch-all, and unknown emails explained.

Understanding verification results is crucial for making informed decisions about your email data. This guide explains each result type and provides recommendations for handling them.

Status Types

Every verification returns one of four primary statuses:

Valid

{
  "status": "valid",
  "result": {
    "deliverable": true,
    "smtp_valid": true
  },
  "score": 0.95
}

Meaning: The email address exists and can receive messages.

Recommended Action: Safe to send. Add to your active mailing list.

Confidence Level: High (score typically > 0.8)

Invalid

{
  "status": "invalid",
  "result": {
    "deliverable": false,
    "reason": "mailbox_not_found"
  },
  "score": 0.10
}

Meaning: The email address cannot receive messages.

Common Reasons:

  • Mailbox doesn't exist
  • Domain doesn't exist
  • Invalid email format
  • Domain has no mail server

Recommended Action: Remove from your list immediately. Sending to invalid addresses damages your sender reputation.

Unknown

{
  "status": "unknown",
  "result": {
    "deliverable": null
  },
  "score": 0.50
}

Meaning: We couldn't determine the email's validity with certainty.

Common Causes:

  • Mail server timeout
  • Temporary server issues
  • Greylisting in effect
  • Server blocking verification attempts

Recommended Action: Try verifying again later. If persistently unknown, use caution or remove from high-priority campaigns.

Accept All (Catch-all)

{
  "status": "accept_all",
  "result": {
    "catchall": true,
    "deliverable": null
  },
  "score": 0.60
}

Meaning: The domain accepts all emails, so we can't confirm if this specific mailbox exists.

Recommended Action: Keep in your list but monitor for bounces. Consider A/B testing before large sends.

Result Fields Explained

deliverable

ValueMeaning
trueEmail can receive messages
falseEmail cannot receive messages
nullUnknown deliverability

valid_format

Indicates whether the email follows valid syntax rules.

// Valid formats
"user@example.com"          // true
"user.name@example.co.uk"   // true
"user+tag@example.com"      // true

// Invalid formats
"user@"                     // false
"@example.com"              // false
"user@.com"                 // false

valid_domain

Indicates whether the domain exists and is properly configured.

valid_mx

Indicates whether the domain has mail exchange (MX) records configured.

A domain can exist but have no MX records, meaning it cannot receive email.

disposable

Indicates whether the email is from a temporary/disposable email service.

Examples of disposable domains:

  • mailinator.com
  • 10minutemail.com
  • guerrillamail.com
  • tempmail.com

Why it matters:

  • Users with disposable emails rarely engage
  • Often used for spam or abuse
  • Low lifetime value
  • May indicate fraudulent intent

role

Indicates whether the email is a role-based address (not tied to a specific person).

Common role-based patterns:

PatternTypeRisk Level
info@GeneralMedium
support@SupportMedium
sales@SalesLow
admin@TechnicalHigh
noreply@AutomatedVery High
webmaster@TechnicalHigh
abuse@ComplianceVery High

Why it matters:

  • Multiple people may receive the email
  • Higher complaint rates
  • Lower engagement metrics
  • Some ESP policies restrict role-based addresses

catchall

Indicates whether the domain accepts all email addresses.

Impact:

  • Cannot verify specific mailbox existence
  • Higher risk of bounces
  • May indicate smaller organization

free

Indicates whether the email is from a free email provider.

Examples:

  • gmail.com
  • yahoo.com
  • outlook.com
  • hotmail.com

Use cases for this flag:

  • B2B vs B2C segmentation
  • Lead scoring
  • Fraud detection (high percentage of free emails in B2B)

smtp_valid

Indicates the result of SMTP-level verification.

ValueMeaning
trueSMTP confirmed mailbox exists
falseSMTP confirmed mailbox doesn't exist
nullSMTP check not performed or inconclusive

Confidence Score

The score field (0.0 - 1.0) provides an overall confidence rating:

0.0 ──────────── 0.5 ──────────── 0.8 ──────────── 1.0
 │                │                │                │
Invalid     Unknown/Risky     Likely Valid      Valid

Score Ranges

ScoreInterpretationAction
0.9 - 1.0Highly confident validSafe to send
0.8 - 0.9Likely validSafe for most campaigns
0.6 - 0.8UncertainUse caution, test first
0.4 - 0.6RiskyAvoid for important campaigns
0.0 - 0.4Likely invalidRemove from list

Handling Strategies by Type

For Marketing Campaigns

function shouldIncludeInCampaign(result) {
  // Strict: Only include high-confidence valid emails
  if (result.status === 'valid' && result.score >= 0.8) {
    if (!result.result.disposable && !result.result.role) {
      return true;
    }
  }
  return false;
}

For Transactional Emails

function canSendTransactional(result) {
  // More lenient: Include valid and accept_all
  if (result.status === 'valid') return true;
  if (result.status === 'accept_all' && result.score >= 0.5) return true;
  return false;
}

For User Registration

function allowRegistration(result) {
  // Block disposable and invalid
  if (result.status === 'invalid') return { allow: false, reason: 'invalid_email' };
  if (result.result.disposable) return { allow: false, reason: 'disposable_not_allowed' };
  return { allow: true };
}

Decision Matrix

Use this matrix to decide how to handle different verification results:

StatusDisposableRoleScoreMarketingTransactionalRegistration
validNoNo> 0.8SendSendAllow
validNoYes> 0.8CautionSendAllow
validYesNo> 0.8SkipCautionBlock
accept_allNoNo> 0.6CautionSendAllow
unknown---SkipCautionRetry
invalid---RemoveRemoveBlock

Next Steps

On this page