Double opt-in vs single opt-in: which is right for your list
One signup step or two? With single opt-in, an address joins your list the moment the form is submitted. With double opt-in, it first gets an email with a link, and nothing else is sent until someone clicks it. That second step costs you some signups. It also keeps out typos, bots and addresses typed in by someone other than their owner. Here is where the trade pays off and where it doesn't.
What single opt-in and double opt-in mean
Single opt-in (SOI). Someone types an email address, hits the button, and the address is saved as active. Campaigns start going to it right away. There's no confirmation email, so you are assuming, without ever checking, that the person who filled in the form owns that inbox.
Double opt-in (DOI). Under the hood it takes three steps.
- The visitor submits the form. The address is stored as "pending" and receives no campaigns yet.
- The system immediately sends a message with a unique link. The link carries a token tied to this one signup.
- The recipient clicks. The server checks the token, flips the status to "confirmed", and the address joins the list.
If nobody clicks, the address stays pending and gets nothing. Tokens expire after a set window, and stale pending records are purged from time to time.
A confirmed click tells you three things at once that single opt-in never gives you: the mailbox exists, the person can get into it, and they chose to subscribe.
Confirmed opt-in vs double opt-in
Confirmed opt-in (COI) and double opt-in describe the same flow: form, email, click, activation. M3AAWG, the industry group of mailbox providers and senders, says so outright in its sender best practices, where confirmed opt-in is "also called double opt-in or closed-loop subscription."
The words lean in slightly different directions. "Double" stresses two acts of consent, the form and the click. "Confirmed" stresses verification (one act of consent plus proof that the address belongs to the person). In code there is no difference at all. If a GDPR audit uses one term and your ESP's docs use the other, they almost certainly mean the same mechanism.
M3AAWG ranks subscription methods in three levels, weakest first.
- Single opt-in. The address is accepted and mail starts, with no notice and no confirmation. M3AAWG says to use it "with extreme caution" because typos and forged entries go straight onto the list.
- Single opt-in with notification. A welcome message goes out right after signup, telling the person what they'll get and how often. Still no confirmation, but a bad address shows up on that very first send.
- Confirmed opt-in. No subscription mail goes out until the recipient acts, by clicking a link or replying.
Who the confirmation step filters out
Not everyone clicks. Some people get distracted, and some confirmation emails land in Promotions or spam. A good share of the unconfirmed records, though, are entries that would have hurt you under single opt-in.
- Typos. gmail.con, yahooo.com, hotmial.com. Under SOI that address hard-bounces on your first campaign. Under DOI the confirmation never arrives and the address never joins. Amazon SES recommends double opt-in for exactly this reason, to cut hard bounces caused by typing errors.
- Bots. A script can submit your form all day. It can't click a link inside a mailbox it doesn't control.
- Other people's addresses. Someone enters a coworker's email, or a random string that turns out to be a real inbox. The owner never asked for your mail and reports it as spam. DOI makes it impossible to sign someone up behind their back.
- Spam traps. Nobody clicks links in a spam trap, so a trap address injected into your form never reaches your regular campaigns.
Disposable inboxes are only partly handled. A person who wants your PDF can confirm from a temporary address, and that address is dead by the next day. Address validation covers this gap, more on that below.
How many signups you lose at confirmation depends on your form, your traffic and the email itself, so other people's averages won't tell you much. Count it on your own form over a couple of weeks: the share of records still pending, and how many of those are obvious typos or junk.
What Gmail, Yahoo and Amazon SES say about confirmation
Google's sender guidelines tell you to confirm each recipient's address before subscribing them, to check in periodically on whether people still want your mail, and to avoid pre-checked opt-in boxes. The same guidelines set the complaint bar. Keep the user-reported spam rate below 0.1% and never let it reach 0.3%. Bulk senders above 0.3% are not eligible for mitigation from Google.
Yahoo is blunter: its best practices say to send new subscribers an email asking them to click to confirm, so that your list "won't contain uninterested people, fake email addresses, or most robots." Yahoo's complaint ceiling is 0.3%, measured against mail delivered to the inbox.
Amazon SES gives the same advice and adds a second check. When the form is submitted, at least make sure the address is well-formed and that its domain has a valid MX record.
None of this is law, but complaints from people who were signed up without knowing count toward your spam rate like any others.
Why confirmation affects inbox placement at all comes down to what mailbox providers watch: bounces, complaints, and whether people open the mail. A list built with DOI has no typos to produce hard bounces and few people who forgot they subscribed, so fewer complaints come from it. Those subscribers open more readily, the provider sees the mail is wanted, and the campaign lands in the inbox more often. A single opt-in list runs the other way: junk addresses push bounces up, people who forgot signing up hit "Report spam", and the mail gradually slides into Promotions or spam.
When single opt-in makes sense
The case for single opt-in is conversion. Every extra step between "I want this" and "I'm subscribed" loses people, and on a phone, switching to the mail app to hunt for a confirmation is real friction. In some situations the second step adds nothing.
Ownership is already proven. The user registered an account with email verification, or is subscribing inside an app while logged in. A second confirmation link would check nothing new.
Checkout. The buyer left an email to get a receipt and tracking number. Those are transactional emails, and they don't need a subscription. Marketing still needs its own checkbox, unchecked by default.
Lead magnets with instant delivery. The person wants the checklist now. Put a confirmation email between the button and the file and some of them never get to the file.
US-only audiences. CAN-SPAM is an opt-out law. It doesn't ask for consent up front; it asks for a working unsubscribe and honest headers. Legally, single opt-in is fine there.
If you skip confirmation, check addresses some other way. Without that, an SOI list fills up with junk quickly.
- Check syntax and the domain's MX record in the form, so typos and nonexistent domains never get saved.
- Add a honeypot field and rate-limit submissions per IP. Filter the bots out and the biggest source of junk shrinks, confirmation or not.
- Send the welcome email right away. That's M3AAWG's "single opt-in with notification" level. If it bounces, remove the address before your first campaign.
- Run the list through validation before any large campaign, and drop hard bounces after the first one.
When you shouldn't skip double opt-in
Recipients in Germany, or the EU generally. Germany's Unfair Competition Act (UWG §7) treats email advertising sent without prior express consent as an unreasonable nuisance. The statute never mentions double opt-in, yet that's what helps in a dispute. In 2011 the Federal Court of Justice (BGH, I ZR 164/09) held that once an address has been confirmed through DOI, a consumer who says they never agreed to advertising emails has to substantiate that claim. If they can show the confirmation didn't come from them, the mailing was still unlawful.
Traffic from ads and pop-ups. These forms pull in a lot of accidental and fake signups, and confirmation stops them before your first campaign.
Long B2B sequences. When a subscriber will get dozens of emails over six months, every accidental contact turns into dozens of unopened messages and one more chance of a complaint.
Bounces and complaints are already climbing. Moving the form to DOI stops new junk coming in, but it won't clean what's already there, so validate the existing list separately.
What the law requires
These laws don't make double opt-in mandatory, but they share something else: consent to marketing has to exist and, in most of them, the sender has to prove it. GDPR puts this in Article 7(1); CASL in section 13. The GDPR guide covers the European rules in more depth.
An SOI log with an IP and a timestamp shows that somebody submitted the form. It doesn't show who, and that's the weak spot in any dispute. Whatever method you use, M3AAWG suggests keeping the same record: signup IP and time, the page or event where the address was collected, a screenshot of the consent wording and the privacy policy in force at the time. With DOI you add the time of the click. In the same 2011 ruling the German court required each consent to be documented in full, stored and printable on demand.
The hybrid: single opt-in plus address validation
Plenty of teams don't pick one or the other. Signup stays one step, and the address gets checked right after it's entered. Syntax and MX are quick enough to check inside the form. Whether the mailbox itself exists takes an SMTP check, which is slower.
Here is how a single check through the uChecker API works. An address with broken syntax is rejected immediately and no credit is charged. Everything else is queued, and the verdict (good, bad or unknown) comes back later via webhook or on request. So the practical setup is to accept the address in the form and exclude anything marked bad before the first campaign. Disposable domains on the service's stop list and misspelled domains count as syntax errors too. An address on a catch-all domain, one that accepts any name, comes back unknown, because the server saying "accepted" proves nothing there. The guide to validation in signup forms has the integration details.
The hybrid has a ceiling. It removes typos, dead mailboxes and throwaway addresses, but a real address that belongs to someone else passes validation cleanly. Nor does it prove consent. No validator can.
Using DOI? How to set up the confirmation email
Some of this comes from M3AAWG, the rest is plain sense. I'm leaving out uplift percentages, since yours will differ and an A/B test on your own form is the only number worth trusting.
- Say on the form that an email is on its way and needs a click. After submission, show a "Check your inbox" page that mentions the spam folder and the Promotions tab.
- Send it immediately, through your transactional channel rather than the bulk queue. While the email is in transit, the person can leave the page and forget they signed up.
- Name the list in the subject. "Confirm your subscription to [name]" is clearer than a generic "Confirm your email."
- One button, no advertising. M3AAWG warns that promotional content in a confirmation makes it more likely to be filtered as abuse.
- Use the same From address your campaigns will use, so the person recognizes you later.
- Give the link an expiry, so a token from a long-forgotten email stops working.
- No click? Send one reminder, not a series. After that the record stays pending and gets no mail.
- After the click, land people on a "Subscription confirmed" page so they know it worked.
Validating the address before the confirmation goes out pays off too. A confirmation sent to a dead mailbox bounces and counts against your domain, even though you were never getting that subscriber anyway.
Already have a single opt-in list?
You don't have to re-confirm everyone retroactively, but validation is the place to start. Run the list through a validator and remove the bad results before the next campaign rather than after a wave of bounces. Drop hard bounces after the first one.
Then look at engagement. Google suggests periodically asking people whether they want to stay subscribed and unsubscribing those who don't open your mail. Yahoo suggests sending inactive subscribers an occasional reconfirmation email; whoever doesn't respond comes off the list. Neither says how long to wait, so set that by how often you send. The list hygiene checklist has the routine.
Sources
- M3AAWG: Sender Best Common Practices, opt-in levels
- Google: Email sender guidelines
- Google: Email sender guidelines FAQ, spam rate
- Yahoo Sender Hub: sender requirements and best practices
- Amazon SES: building and maintaining your lists
- UWG §7 (Germany)
- BGH, judgment of 10 Feb 2011, I ZR 164/09 "Double-opt-in-Verfahren"
- GDPR Art. 7: conditions for consent
- CAN-SPAM, 15 U.S.C. § 7704
- CASL, sections 10 and 13
See how many addresses in your list come back bad. Upload a .txt file or paste your list into uChecker. The first 100 checks are free.
Mark Avrilov · Author
Published Updated
