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
| Value | Meaning |
|---|---|
true | Email can receive messages |
false | Email cannot receive messages |
null | Unknown 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" // falsevalid_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:
| Pattern | Type | Risk Level |
|---|---|---|
| info@ | General | Medium |
| support@ | Support | Medium |
| sales@ | Sales | Low |
| admin@ | Technical | High |
| noreply@ | Automated | Very High |
| webmaster@ | Technical | High |
| abuse@ | Compliance | Very 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.
| Value | Meaning |
|---|---|
true | SMTP confirmed mailbox exists |
false | SMTP confirmed mailbox doesn't exist |
null | SMTP 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 ValidScore Ranges
| Score | Interpretation | Action |
|---|---|---|
| 0.9 - 1.0 | Highly confident valid | Safe to send |
| 0.8 - 0.9 | Likely valid | Safe for most campaigns |
| 0.6 - 0.8 | Uncertain | Use caution, test first |
| 0.4 - 0.6 | Risky | Avoid for important campaigns |
| 0.0 - 0.4 | Likely invalid | Remove 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:
| Status | Disposable | Role | Score | Marketing | Transactional | Registration |
|---|---|---|---|---|---|---|
| valid | No | No | > 0.8 | Send | Send | Allow |
| valid | No | Yes | > 0.8 | Caution | Send | Allow |
| valid | Yes | No | > 0.8 | Skip | Caution | Block |
| accept_all | No | No | > 0.6 | Caution | Send | Allow |
| unknown | - | - | - | Skip | Caution | Retry |
| invalid | - | - | - | Remove | Remove | Block |