Understanding Validation Results
After MailCop validates an email address, you’ll receive a clear status indicating whether it’s safe to send to. Here’s what each result means and how to act on it.
Email Statuses
Good ✓
The email address is valid and deliverable. Our checks confirmed:
- The email format is correct
- The domain exists and has mail servers
- (For SMTP validation) The specific mailbox exists
Action: Safe to include in your campaigns.
Bad ✗
The email address has problems and will likely bounce. Common reasons include:
- Invalid email format (missing @ symbol, typos)
- Domain doesn’t exist
- Domain has no mail servers configured
- (For SMTP validation) The specific mailbox doesn’t exist
- Address matched one of your filters
Action: Remove from your list. Sending to these addresses will hurt your sender reputation.
Pending ⏳
The email is still being validated. This status is temporary and will change to Good or Bad once processing completes.
Action: Wait for validation to complete.
API Response Fields
When using the API, you’ll receive detailed information about each validation:
{
"email": "[email protected]",
"status": "good",
"validation_type": "smtp",
"role_account": false,
"free_provider": false,
"catch_all_domain": null,
"result": {
"domain": "example.com",
"checks": { "filter": "pass", "disposable": "pass", "format": "pass", "mx": "pass", "smtp": "pass" },
"smtp": null
},
"credits_used": 10
}
Response fields explained
| Field | Description |
|---|---|
email |
The email address that was validated |
status |
Result: good, bad, or pending |
validation_type |
Method used: mx or smtp |
credits_used |
Number of credits charged |
reason |
Why it failed, as readable text (only for bad emails) |
reason_code |
Why it failed, as a stable code (only for bad emails) |
result.checks |
Which checks passed, failed or were skipped |
role_account |
Address is a role mailbox like info@ |
free_provider |
Address is on a free provider like Gmail |
catch_all_domain |
The domain accepts any mailbox, so a good result cannot confirm this one exists (when requested) |
See the Verify Endpoint for every field.
Failure Reasons
When an email is marked as bad, the reason_code field explains why:
reason_code |
Meaning |
|---|---|
invalid_format |
Email doesn’t match proper format |
no_mx_records |
Domain doesn’t exist or has no mail server configured |
mailbox_not_found |
Specific email address doesn’t exist (SMTP only) |
mailbox_full |
Recipient’s mailbox is full (SMTP only) |
smtp_rejected |
Mail server refused the check (SMTP only) |
smtp_unreachable |
Mail server could not be reached (SMTP only) |
blocked_by_filter |
Matched one of your blocklist filters |
disposable_domain |
Domain is a known temporary email service |
validation_failed |
Bulk lists only: validation errored repeatedly and the email was marked bad |
Interpreting Results for Your Use Case
For email marketing
Focus on the good emails only. Even a small percentage of bad emails can:
- Increase bounce rates
- Damage sender reputation
- Get you flagged by email providers
Recommended: Download the “Good emails only” export and use that for your campaign.
For signup forms
Use real-time API validation to catch bad emails before they enter your system:
// Example: Validate on form submit
const result = await validateEmail(userEmail);
if (result.status === 'bad') {
showError('Please enter a valid email address');
}
For CRM hygiene
Regularly validate your contact database to:
- Remove addresses that have gone stale
- Identify domains that no longer exist
- Clean up typos and formatting issues
Accuracy Expectations
No email validation is 100% accurate. Here’s what to expect:
MX Validation accuracy
- Catches: Invalid formats, non-existent domains, missing mail servers
- Misses: Individual mailbox issues, full inboxes, disabled accounts
- Typical accuracy: 85-90% of bad emails detected
SMTP Validation accuracy
- Catches: All of the above, plus non-existent mailboxes
- Misses: Catch-all servers (accept any address), temporary issues
- Typical accuracy: 95-98% of bad emails detected
Why 100% isn’t possible
Some mail servers are configured to accept all addresses (catch-all). Others temporarily go offline. And email addresses can become invalid after validation. For best results:
- Validate close to when you’ll send
- Use SMTP validation for important campaigns
- Monitor your actual bounce rates and re-validate periodically
Working with Filtered Emails
If you’ve set up filters, some emails may be marked as bad because they matched your blocklist rather than failing validation.
The reason field will show blocked_by_filter for these addresses. This helps you:
- See which of your filters are being triggered
- Identify patterns you might want to block
- Audit your filtering rules
Next Steps
- Learn about validation types to choose the right method
- Set up filters to automatically block unwanted addresses
- Use the API for real-time validation