Email Validation Best Practices — What to Check
Validation Best Practices

Email Validation Best Practices

What to check, when to check it, and how deep each validation stage needs to go — a practical guide for engineers and marketers.

5 stages
of validation in BounceZero\'s pipeline
40+
signals checked per address
99.5%
accuracy on SMTP-verifiable addresses
Verify Free — 100 Credits

The 5-Stage Validation Pipeline

Stage 1: Syntax check

Validate the address format against RFC 5322. Check for missing @, invalid TLD, consecutive dots, leading/trailing hyphens on the domain, and character encoding issues. Fast — eliminates obvious typos in microseconds. Run this at the form level before any network call.

Stage 2: DNS and MX lookup

Check whether the domain exists and has valid MX records pointing to a mail server. A domain with no MX records cannot receive email. Check for recently registered domains (high fraud signal) and disposable domain registrations. Takes ~50–200ms.

Stage 3: SMTP handshake

Connect to the highest-priority MX server, send EHLO, then RCPT TO. A 250 response confirms the mailbox is accepted. A 550 5.1.1 response confirms it does not exist. Most accurate stage — but requires network egress from clean IPs. Takes 1–5 seconds.

Stage 4: Catch-all detection

If the SMTP server accepts all RCPT TO commands regardless of mailbox, it is a catch-all. Probe with a known-nonexistent address. If accepted, flag the domain as catch-all and apply ML scoring for deliverability estimation.

Stage 5: Intelligence signals

Check against disposable email domain lists (10minutemail, Mailinator, 3000+ providers), role address patterns, spam trap databases, breach exposure, social profile presence, domain reputation, and historical SMTP response patterns.

When to Validate

At signup — real-time API (< 200ms)

Block invalid, disposable, and role addresses before the form submits. Use the BounceZero real-time API. Response in under 200ms. Return a user-facing error for invalid addresses, not a silent rejection.

Before every campaign — bulk upload

Upload your full send list to BounceZero. Run Stage 1-5 validation on every address. Remove Invalid, Disposable, and Role. Mark Risky addresses for a separate low-volume test segment rather than full exclusion.

After list imports — CRM and ESP syncs

When importing contacts from HubSpot, Salesforce, Klaviyo exports, or third-party data sources, always run a full validation pass before the list enters any campaign queue.

Every 90 days on dormant segments

Contacts not emailed in 90+ days are at highest risk of having changed addresses. Re-validate dormant segments before reactivation campaigns.

What to Block vs What to Flag

Always block: Invalid

SMTP confirmed the mailbox does not exist. 550 5.1.1 or equivalent. Sending to these causes hard bounces. Remove from every list and suppression globally.

Always block: Disposable/Temporary

Domains like 10minutemail, Mailinator, GuerillaMail, and 3,000+ others. These expire in minutes to hours. Legitimate users do not use them for products they intend to keep using.

Block by policy: Role addresses

info@, admin@, support@, noreply@, sales@. Multiple people read these — individual consent may not apply. For B2B campaigns, you may choose to include them; for consumer campaigns, exclude.

Flag as Risky: Catch-all domains

Accept all SMTP. Cannot be definitively verified. Use BounceZero\'s ML confidence score. Send a small test batch first; suppress if bounce rate from this segment exceeds 1%.

Monitor: Low confidence Likely-Valid

Addresses with SMTP success but low ML confidence score. Include in a low-priority segment, monitor closely after first campaign, suppress if they do not engage.

Frequently Asked Questions

What is the difference between email validation and email verification?

Email validation checks whether an address is syntactically correct and has valid DNS/MX records. Email verification goes further — it attempts an SMTP handshake to confirm the mailbox actually exists on the server. Validation is fast; verification is deeper and more accurate.

Should I validate emails at signup or before sending?

Both. Real-time API validation at signup blocks obviously invalid addresses immediately. Bulk verification before each campaign catches addresses that were valid at signup but have since expired. The two together keep bounce rate below 0.3%.

What is a catch-all domain and how should I handle it?

A catch-all domain is configured to accept all incoming email regardless of whether the specific mailbox exists. SMTP verification cannot confirm individual addresses on catch-all domains. BounceZero flags these as Risky with a confidence score based on 40+ signals. Treat Risky addresses as a risk-scored segment, not a guaranteed delivery.

How accurate is email verification?

SMTP-based verification achieves approximately 99.5% accuracy on non-catch-all addresses. For catch-all domains (which can only be scored probabilistically), accuracy depends on ML model quality. BounceZero\'s ML model achieves AUC 0.86 on catch-all scoring.

What email addresses should I always block?

Always block: invalid addresses (SMTP confirmed non-existent), known disposable/temporary email domains, role addresses (info@, admin@, support@, noreply@) unless your use case specifically needs them, addresses on your suppression list, and addresses flagged as spam traps.

Validate Your First 100 Emails Free

Real-time API and bulk upload. No card required.

Start Free

Email verification & deliverability explained

Deep-dive guides on how email verification and inbox placement work

Ready for bulk verification?

Verify Thousands — Same 99.5% Accuracy

Upload a CSV, get clean results in minutes. $3 per 1,000 emails. Credits never expire. No subscription.

Get 100 Free Credits View pricing

No credit card required  ·  100 free verifications every month  ·  Full 5-stage pipeline

Follow BounceZero