Verification Types
Email checker result types: valid, invalid, disposable, role-based, catch-all, risky, 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 seven primary statuses:
| Status | Score | Meaning | Recommended Action |
|---|---|---|---|
valid | 0.9+ | Email exists and can receive messages | Safe to send |
invalid | 0.1 | Email doesn't exist or can't receive | Remove from list |
unknown | 0.5 | Could not determine validity | Retry later or use caution |
risky | 0.4 | Email presents potential delivery concerns | Use caution, monitor bounces |
disposable | 0.3 | From disposable/temporary email service | Consider removing |
catchall | 0.7 | Domain accepts all emails | Monitor for bounces |
role | 0.6 | Role-based email (info@, support@) | Usually deliverable, lower engagement |
Valid
{
"status": "valid",
"is_deliverable": true,
"smtp_check": 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",
"is_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",
"is_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.
Risky
{
"status": "risky",
"is_deliverable": null,
"score": 0.40
}Meaning: The email presents potential delivery concerns but may still be deliverable.
Common Causes:
- Domain has poor reputation
- Email pattern suggests potential issues
- Mixed signals from verification checks
Recommended Action: Use caution. Consider excluding from important campaigns or test with a small batch first.
Disposable
{
"status": "disposable",
"is_disposable": true,
"score": 0.30
}Meaning: 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
Recommended Action: Consider removing from your list, especially for registration flows.
Catchall
{
"status": "catchall",
"is_catchall": true,
"is_deliverable": null,
"score": 0.70
}Meaning: The domain accepts all emails, so we can't confirm if this specific mailbox exists.
Impact:
- Cannot verify specific mailbox existence
- Higher risk of bounces
- May indicate smaller organization
Recommended Action: Keep in your list but monitor for bounces. Consider A/B testing before large sends.
Role
{
"status": "role",
"is_role": true,
"score": 0.60
}Meaning: 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
Recommended Action: Usually deliverable but expect lower engagement. Consider for transactional emails, use caution for marketing.
Result Fields Explained
is_deliverable
| Value | Meaning |
|---|---|
true | Email can receive messages |
false | Email cannot receive messages |
null | Unknown deliverability |
is_disposable
Indicates whether the email is from a temporary/disposable email service.
is_catchall
Indicates whether the domain accepts all email addresses.
is_role
Indicates whether the email is a role-based address (info@, support@, etc.).
is_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_check
Indicates whether SMTP-level verification was performed.
| Value | Meaning |
|---|---|
true | SMTP verification was performed |
false | SMTP verification was not performed |
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) {
return true;
}
return false;
}For Transactional Emails
function canSendTransactional(result) {
// More lenient: Include valid, catchall, and role
if (result.status === 'valid') return true;
if (result.status === 'catchall' && result.score >= 0.5) return true;
if (result.status === 'role' && 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.status === 'disposable') return { allow: false, reason: 'disposable_not_allowed' };
if (result.status === 'risky') return { allow: false, reason: 'risky_email' };
return { allow: true };
}Decision Matrix
Use this matrix to decide how to handle different verification results:
| Status | Score | Marketing | Transactional | Registration |
|---|---|---|---|---|
| valid | 0.9+ | Send | Send | Allow |
| catchall | 0.7 | Caution | Send | Allow |
| role | 0.6 | Caution | Send | Allow |
| unknown | 0.5 | Skip | Caution | Retry |
| risky | 0.4 | Skip | Caution | Block |
| disposable | 0.3 | Skip | Caution | Block |
| invalid | 0.1 | Remove | Remove | Block |