Two different problems at signup, two different checks
A signup form has to solve two separate problems before an address should land on an active sending list: does this address exist and accept mail, and did the person at that address actually agree to receive it. Double opt-in solves the second problem. It does nothing for the first, which is why relying on it alone still lets through a meaningful number of bad addresses.
What real-time checks catch that double opt-in misses
- Syntax errors.
name@gmial,compasses a human glance faster than you'd think; a regex check at the form field catches it before submission. - No MX record. The domain exists but doesn't accept mail, or doesn't exist at all - a quick MX lookup catches this before you ever send a confirmation email to an address that can't receive one.
- Disposable domains. Temp-mail services exist specifically so people can get a confirmation link without giving up a real address; a maintained blocklist of disposable domains filters these at the form.
- Bot submissions. A honeypot field (invisible to humans, filled in by bots) or a basic rate limit per IP catches scripted form abuse before it generates a flood of confirmation emails.
What double opt-in catches that real-time checks miss
- Consent. An address can be syntactically perfect, on a real domain, and still belong to someone who typed it in by mistake, out of curiosity, or maliciously to sign someone else up. A confirmation click is the only reliable signal that the actual owner of that address wants your mail.
- Engagement intent. Someone who clicks a confirmation link has demonstrated they read at least one email from you and acted on it - a weak but real early engagement signal that correlates with lower future complaint rates.
Putting both together
The order that catches the most problems with the least friction: run syntax and MX checks instantly, client-side, before the form even submits. Reject disposable domains and bot-pattern submissions at the same point. Only send a confirmation email to addresses that pass those checks, and don't add the address to any sending list until the confirmation link is clicked.
| Check | Catches | When |
|---|---|---|
| Syntax validation | Typos, malformed addresses | Before form submission |
| MX record lookup | Non-existent or unreachable domains | Before form submission |
| Disposable domain blocklist | Temp-mail addresses | Before form submission |
| Honeypot / rate limit | Bot submissions | Before form submission |
| Double opt-in confirmation | Lack of consent, fake signups | After form submission, before list addition |
What to do with unconfirmed addresses
Don't just delete them immediately and don't leave them sitting forever either. A reasonable pattern: send one reminder confirmation a few days after the first, then purge anything still unconfirmed after a set window of roughly two weeks. Holding unconfirmed addresses indefinitely accomplishes nothing except inflating a list with addresses you can't legally or practically send to.
What not to do
- Don't rely on double opt-in as your only check and skip the cheap real-time validation that catches typos and disposable domains before you waste a send on them.
- Don't make the confirmation email itself risky - it's often sent to a brand-new, unconfirmed address, so keep it short, text-focused, and free of the heavy tracking or multiple links that a spam filter might flag on a first contact.
- Don't silently add unconfirmed signups to your list after some time passes "because they probably forgot to click." That defeats the entire purpose of the consent check.
Handling edge cases at signup
A few situations are easy to miss when building this pipeline. Catch-all domains - where the mail server accepts every address regardless of whether a mailbox actually exists - will pass an MX check and may pass an SMTP-level check without confirming anything real; treat these as medium risk and still require the double opt-in click rather than waving them through because the technical checks came back clean. Free webmail domains with common typos (gmil.com, hotmial.com) deserve a small dedicated typo-correction list, since they account for a disproportionate share of signup errors. And a signup from the same IP address in rapid succession, even without a honeypot trigger, is worth a soft rate limit regardless of whether each individual address looks valid, since a burst of distinct, well-formed addresses from one source is itself a pattern worth treating with suspicion.
Where MailPilot fits
The confirmation emails these checks generate are still email sent from a real mailbox, and that mailbox's reputation matters even for small transactional-style sends. MailPilot checks SPF, DKIM, and DMARC against what's actually delivered and tracks per-mailbox reputation daily, so the infrastructure sending your confirmation and welcome emails is held to the same standard as the rest of your program.
Ready to reach the inbox every time?
Automated email warmup across real peer mailboxes. Live inbox placement monitoring. Free 7-day trial - no credit card required.
Start free trial