Understanding Validation Results
After TrueMail 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",
"credits_used": 10,
"reason": null
}
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 (only for bad emails) |
Failure Reasons
When an email is marked as bad, the reason field explains why:
| Reason | Meaning |
|---|---|
invalid_format |
Email doesn’t match proper format |
domain_not_found |
The domain doesn’t exist |
no_mx_records |
Domain has no mail server configured |
mailbox_not_found |
Specific email address doesn’t exist (SMTP only) |
mailbox_full |
Recipient’s mailbox is full |
blocked_by_filter |
Matched one of your blocklist filters |
disposable_domain |
Domain is a known temporary email service |
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