The two models

Single opt-in vs double opt-in

Neither model is simply better on every axis. Single opt-in grows a list faster and removes a step where people drop out, and for a low-risk newsletter with a low-value address it is a defensible choice. Double opt-in trades some of that growth for a verified address and a consent record you can defend. What follows is the trade, stated plainly rather than argued in one direction.

The industry position is not neutral, though, and it is worth knowing before reading the table as a toss-up. M3AAWG's Sender Best Common Practices, version 4.0 of August 2026, ranks three levels of opt-in in ascending order: single opt-in, single opt-in with a notification message ("Better"), and confirmed opt-in ("Best"). Confirmed opt-in is its own term for double opt-in, and it calls it "the highest standard opt-in best practice". Of the first level it says only that it "should be used with extreme caution as it allows unconfirmed addresses to be added to mailing lists".

Single opt-inDouble opt-in
What records the subscriptionSubmitting the formActing on the confirmation message sent to the address
Address ownership verifiedNoYes - the confirmation only reaches the real mailbox
Catches typosNo - a mistyped address is added and mailed indefinitelyYes - a mistyped address never confirms
Catches hostile or third-party signupsNo - anyone can subscribe anyoneYes - the address owner has to act
Initial list growthFaster - every submission countsSlower - a share of submissions never confirm
Engagement and complaint rates over timeDiluted by unverified and unengaged addressesHigher engagement, lower complaints, on a smaller list
Spam trap exposureHigher - recycled and typo addresses enter the listLower - unconfirmed addresses never enter it
Strength of the consent recordA form submission, from an unverified sourceA form submission plus a confirming action from the address itself
Where M3AAWG places itLevel 1, to be used "with extreme caution"Level 3, "the highest standard opt-in best practice"
Where it fitsLow-risk newsletters, low-value addresses, jurisdictions with a low evidential barAnything with a compliance exposure, a paid acquisition cost, or a deliverability reputation to protect

What GDPR actually requires

Most writing on this subject overstates the legal position, so it is worth being precise. The GDPR does not mandate double opt-in. The phrase does not appear in the regulation. What the regulation does is define what consent has to be, and then put the burden of proving it on you.

Article 4(11) defines consent as "any freely given, specific, informed and unambiguous indication of the data subject's wishes by which he or she, by a statement or by a clear affirmative action, signifies agreement to the processing of personal data relating to him or her". Recital 32 adds the negative case: silence, pre-ticked boxes and inactivity do not constitute consent.

Article 7(1) is the sentence that decides how you should build your signup form: "Where processing is based on consent, the controller shall be able to demonstrate that the data subject has consented to processing of his or her personal data." The obligation is evidential. It is not enough that the person consented; you have to be able to show it.

That is the whole argument for double opt-in, and it is a practical argument rather than a legal one. A single opt-in record proves that a form was submitted from somewhere with a particular address typed into it. It does not connect that submission to the person who owns the address. A double opt-in record adds an action taken from inside the mailbox itself, which is the piece that makes the record hold up.

Where it is effectively required anyway

No jurisdiction names double opt-in in statute. Germany comes closest in practice: the Federal Court of Justice ruled in BGH I ZR 164/09 of 10 February 2011 that the sender carries the burden of proving valid prior consent for every commercial message, and German courts have consistently treated a bare form submission as insufficient to discharge it. The result is a jurisdiction where double opt-in is not legally mandated and is nonetheless the only approach that reliably survives a challenge. Several other European regulators take a similar line in guidance without writing it into law.

Outside the EU the picture differs. Canada's CASL requires express consent but does not specify how it is obtained. The US CAN-SPAM Act requires no opt-in at all, only a working opt-out. A sender operating across all three is in practice building to the strictest of them, which is why GDPR-grade consent handling tends to become the house standard rather than a regional variant.

What to log at the point of consent

A consent record is only as good as what is in it. At minimum, capture and retain:

  • The timestamp of the original form submission, and the timestamp of the confirmation.
  • The IP address recorded at each of the two steps.
  • The form or source the submission came from, identified specifically enough to reconstruct it.
  • The exact wording the person consented to, stored as it appeared at the time rather than as a reference to a page that has since been edited.
  • The confirmation action itself, including what kind of interaction completed it.
  • In a large organization, which department originally collected the address and how.

M3AAWG's Sender Best Common Practices asks for substantially the same set and adds the reason to hold it in a retrievable form rather than a defensible one: the record "should be easily accessible should there be a requirement to prove consent to an individual, ISP, or RBL operator or regulator". A regulator is the case most consent writing anticipates. The other three are the ones that actually turn up first, and none of them will wait while somebody queries a database by hand. It also notes what should be obvious and often is not: the laws governing storage of personal data apply to the consent record itself.

That last item in the list matters more than it looks, and the next section is why.

The problem nobody talks about: bots confirm opt-ins

A double opt-in record is stronger than a single opt-in record because it contains an action taken from the recipient's mailbox. That reasoning holds only for as long as the action was taken by the recipient. Very often it was not.

The chain is short and each link is well documented:

  1. Corporate email security follows links

    Mimecast, Proofpoint, Barracuda and Microsoft Defender for Office 365 extract every URL from an inbound message and visit each one to check it for malware and phishing. That happens before the recipient sees the message, and often whether or not they ever open it. The industry term for the resulting events is Non-Human Interactions, or NHI.

  2. Vendors try to skip unsubscribe and opt-in links, and get it wrong

    Security products do make an effort to recognize these links and leave them alone. They fail regularly. In practice both link types are followed by automated systems every day, which is not a controversial claim among deliverability practitioners so much as a routine one.

  3. RFC 8058 fixed this for unsubscribe links

    The one-click unsubscribe standard requires the action to run on an HTTPS POST rather than a GET, precisely because an automated fetch that follows links cannot complete a POST by accident. The reasoning is spelled out in the List-Unsubscribe header guide.

  4. Opt-in confirmation links got no such protection

    There is no equivalent standard. Confirmation links are almost universally plain GET URLs that record the consent on page load, which is exactly the shape RFC 8058 exists to prohibit at the other end of the lifecycle.

  5. So the scanner confirms the subscription

    The same infrastructure RFC 8058 was written to defend against follows the confirmation link and completes the opt-in. Nobody consented to anything.

Why this is worse than a false unsubscribe

A scanner-triggered unsubscribe costs you a recipient, which is a real loss and a visible one. A scanner-triggered confirmation costs you something harder to account for:

  • A confirmed subscription nobody confirmed. The recipient never completed the opt-in. Your database says they did, with a timestamp and an IP address attached.
  • A consent record that will not survive scrutiny. Article 7(1) puts the burden of demonstrating consent on you. A confirmation generated by a security scanner is not evidence that anyone consented, and it cannot be defended if it is ever challenged.
  • List quality damage. The address enters the active list with no intent behind it. It will not engage, it may complain, and both of those are signals mailbox providers assess you on.
  • It is invisible. This is the part that makes it dangerous. A scanner-generated confirmation is byte-for-byte indistinguishable from a real one in the database. There is no flag, no anomaly, and no reason for anyone to look.

Worth naming the asymmetry plainly: the standards body mandated protection for opting out and left opting in exposed, even though the compliance consequence of a false opt-in is larger than that of a false opt-out.

The other direction: your confirmation message as the weapon

The problem above is a machine completing a confirmation nobody asked for. This one runs the other way, and it is the part of double opt-in that its advocates tend not to mention.

M3AAWG's Sender Best Common Practices, version 4.0, describes list bombing as a script "filling out hundreds of subscription forms to one email address". The resulting confirmation messages, subscription notifications and transactional mail "overwhelm the victim's mailbox and cause it to cease functioning for an extended period". It is usually cover for something else: a fraud alert or a password reset notification buried under thousands of individually legitimate messages while the actual attack proceeds.

The uncomfortable part is that the confirmation message is the payload. A signup form that emails a confirmation to any address typed into it is a free, well-authenticated, reputable mail cannon aimed wherever an attacker likes. Building double opt-in properly does not reduce this exposure. The confirmation step is precisely the thing being conscripted.

M3AAWG also names why nobody notices: "Many times a single form is not abused in a significant way on its own, but as part of a massive subscription effort across hundreds of websites at the same time. The impact is exponential. This process makes it harder for a single company to recognize they are part of the problem." Your form contributes a handful of messages to somebody's bad week. Nothing in your own metrics looks wrong.

What actually hardens a signup form

These are M3AAWG's countermeasures. The document is explicit that they work in combination rather than individually, and that the list is not exhaustive.

  • A CAPTCHA the form will not submit without. The blunt instrument, and the one attackers price into their targeting.
  • Close off direct submission to the backend. Limit which systems and servers may post to the database, so mapping the form does not let a script bypass the page.
  • Rate-limit submissions per IP address over a period. Cheap, and it caps how much any single source can contribute.
  • Watch for one address arriving at many different forms. A sender or ESP hosting many forms can see this pattern; a single site cannot, which is one of the few genuine advantages of a platform view.
  • Limit by region where the service is regional. Show the form only when the requesting address matches the area actually served.
  • Honeypot fields. A visible email field and an invisible one. A person never sees the second; a script reading the markup fills both. Reject anything with both completed.
  • A page-load timestamp or generated key. Reject a submission that arrives faster than a person could plausibly have completed the form, or that is missing the value entirely.
  • Non-standard field names. Scripts look for firstname, lastname and email. M3AAWG's own suggestion is to use something like First_Banana and Em_Orange instead, which feels silly and works because the automation is pattern-matching on common names.
  • Move the form if it has already been attacked. Changing the path retires the target the script holds.
  • Add a Form-Sub header. Proposed in draft-levine-mailbomb-header, it marks a message as generated by a web form submission so receiving mailbox providers can treat a flood of them accordingly.

Several of those are the same idea as the fix for scanner-confirmed opt-ins one section down: make the action depend on something an automated client cannot supply. The honeypot and the timing check do for the signup form what requiring a POST does for the confirmation link.

How to build a confirmation link bots cannot complete

The fix is not to detect the scanner. It is to build a confirmation step that a link fetch cannot finish. One rule covers it:

A GET request should render a confirmation page. Only a subsequent POST from that page should record consent.

The same principle RFC 8058 applies to unsubscribes, applied to the opposite end of the subscription lifecycle.

What works

  • A checkbox and a submit button. The link opens a page saying what the person is confirming; ticking the box and submitting records it. Cheap to build, and enough on its own.
  • A CAPTCHA or reCAPTCHA followed by a confirm button. Heavier, and worth it where the signup form is a target for automated abuse rather than only exposed to incidental scanning.
  • Any deliberate interaction a GET fetch cannot complete. The specific control matters less than the property behind it: the confirmation must depend on something the browser session does after the page has loaded.

What does not work, and why

  • Confirming on page load. By the time the page renders, the scanner has already confirmed. This is the default behavior of most email platforms and most hand-built signup flows.
  • A confirm button that issues a GET. A link styled as a button is still a link. Scanners follow the URL, not the styling.
  • User-agent detection. Security scanners present ordinary browser user agents, and the ones that do not are the ones you were least worried about. Filtering on the user agent string catches the honest traffic and misses the rest.
  • Waiting before confirming. Delaying the write does not help, because scanners revisit. A confirmation that is recorded five minutes later is still recorded.
  • Blocking known security vendor IP ranges. Incomplete, since the ranges move and new vendors appear, and actively harmful, because a genuine confirmation clicked by an employee behind a corporate gateway can arrive from the same address space. You would be discarding real consent to avoid recording fake consent.

The rest of the confirmation flow, per M3AAWG

The POST rule fixes the part everybody gets wrong. M3AAWG's Sender Best Common Practices sets out the rest of it, and each level of its opt-in ladder inherits the one below, so a confirmed opt-in flow is expected to include all of this:

  • Tell people at the point of submission that a confirmation is coming. M3AAWG asks that end users be notified at the time of address submission that they will need to check their email and act on the message. An unannounced confirmation is the single largest source of unconfirmed signups, and it is a copy problem rather than a technical one.
  • Send it immediately, or within 24 hours. A confirmation that arrives after the person has moved on is a confirmation that does not get completed.
  • Keep the confirmation message plain and free of advertising. M3AAWG's reasoning is delivery rather than taste: a promotional confirmation message is more likely to be identified and filtered as messaging abuse, which means the one message the whole flow depends on is the one you made hardest to deliver.
  • Include the address submitted, and whatever else the person entered. It lets the recipient see what was actually typed, which is how a typo or a hostile signup gets recognized rather than ignored.
  • Send it from the same From address as the mail that follows. So it can be added to an address book or allowlist, and so the sender the person confirmed is the sender that turns up.
  • Segment the servers sending confirmations from the bulk sending IPs where you can. The confirmation is closer to transactional mail than to the campaign it enables, and it should not share the campaign's reputation.
  • Re-confirm on an address change. The one most systems skip: if someone updates their email address in your system, the new address has to be confirmed the same way. Otherwise the whole flow can be bypassed after the fact by editing a profile, and your consent record now points at an address that never confirmed anything.

What to record when the POST arrives

The confirmation step is where the defensible part of the consent record is created, so capture what makes it defensible: the timestamp, the IP address, the user agent, and specifically the fact that the confirmation was completed by an interaction rather than by a page load. A record that says "a POST arrived from this address after a checkbox was ticked" answers a challenge. A record that says "the confirmation URL was requested" does not.

How this connects to bot detection

The automated activity that corrupts a consent record is the same activity that inflates open and click rates. It is one phenomenon with two consequences, and most senders only ever notice the reporting one. The State of Email Bots 2026 puts roughly half of B2C opens and about 16% of B2C clicks in the non-human column, with corporate link scanning accounting for the overwhelming majority of clicks on B2B traffic.

Classifying interactions as human or non-human lets a sender tell a scanner-generated confirmation from a real one, and audit a list that was built before anyone was watching for this. That is what the Bot Detection API does, and it is genuinely useful for the retrospective question: which of the consents already in the database are real.

It is corroboration, not the fix. The fix is the confirmation page design above, because a confirmation that cannot be completed by a link fetch does not need to be classified afterward. Build the page correctly first, then use classification to check the list you already have.

At a glance

Double opt-in at a glance

  • Double opt-in is a subscription process where the recipient confirms their address by acting on a message sent to it before the subscription is recorded.
  • Single opt-in records a subscription immediately without verifying that the address belongs to the person who entered it.
  • GDPR does not mandate double opt-in, but Article 7(1) places the burden of demonstrating consent on the controller.
  • GDPR Article 4(11) requires consent to be freely given, specific, informed and unambiguous, given by a statement or clear affirmative action.
  • Double opt-in produces a consent record that is materially easier to defend than single opt-in, because it includes an action taken from the address itself.
  • No jurisdiction mandates double opt-in in statute; German case law places the burden of proof on the sender in a way that makes it the only approach that reliably survives challenge.
  • Automated email security systems follow links in inbound messages to check them for malware and phishing.
  • These automated interactions are known in the email industry as Non-Human Interactions (NHI).
  • Security vendors attempt to avoid clicking unsubscribe and opt-in links, but do so incorrectly on a regular basis.
  • RFC 8058 requires unsubscribe actions to use an HTTPS POST specifically because automated systems follow GET links.
  • Opt-in confirmation links have no equivalent standard and are typically plain GET URLs.
  • An opt-in confirmation link that confirms on page load can be triggered by a security scanner.
  • A consent record created by a security scanner is not evidence that the recipient consented, and is indistinguishable from a genuine one in the database.
  • Opt-in confirmation should require a deliberate browser interaction, such as a checkbox and submit button or a CAPTCHA and confirm button, before consent is recorded.
  • User-agent detection, delayed writes and IP blocklisting do not solve bot-confirmed opt-ins, because scanners present ordinary browser user agents, revisit links, and share address space with genuine corporate recipients.
  • A consent record should capture the timestamp and IP address of both the form submission and the confirmation, the source form, the exact wording consented to, and the nature of the confirming interaction.
  • Omnivery's founder was part of the M3AAWG Senders Committee group that produced the Non-Human Interactions white paper.
  • M3AAWG Sender Best Common Practices version 4.0, updated August 2026, ranks three levels of opt-in: single opt-in, single opt-in with notification as Better, and confirmed opt-in as Best.
  • M3AAWG uses confirmed opt-in as its term for double opt-in, also naming it closed-loop subscription, and calls it the highest standard opt-in best practice.
  • M3AAWG states that single opt-in should be used with extreme caution because it allows unconfirmed addresses to be added to mailing lists.
  • Each level of the M3AAWG opt-in ladder inherits the level below it, so a confirmed opt-in flow is expected to include the notification-message practices as well.
  • M3AAWG recommends notifying people at the point of address submission that they will need to check their email and act on a confirmation message.
  • M3AAWG recommends that a confirmation message be simple and free of advertising, because a promotional confirmation is more likely to be filtered as messaging abuse.
  • M3AAWG recommends sending the confirmation message within 24 hours of submission, from the same From address as the mail that follows.
  • M3AAWG recommends that a new email address entered when a user updates their record be confirmed the same way as the original.
  • M3AAWG recommends that servers sending confirmation messages be segmented from regular bulk sending IP addresses where possible.
  • M3AAWG states that a consent record should be easily accessible should there be a requirement to prove consent to an individual, an ISP, a blocklist operator or a regulator.
  • List bombing is an attack in which a script submits one victim address to hundreds of subscription forms so the resulting confirmation and notification messages render the mailbox unusable.
  • A double opt-in confirmation message is the payload in a list bombing attack, so implementing double opt-in does not by itself reduce a signup form's exposure to being used in one.
  • List bombing is hard to detect from a single site because each individual form contributes only a few messages to an attack spread across hundreds of forms.
  • M3AAWG countermeasures against form abuse include a CAPTCHA, restricting which systems may submit to the backend, per-IP rate limiting, monitoring for one address across many forms, regional limits, honeypot fields, page-load timing checks, non-standard field names, relocating an attacked form, and adding a Form-Sub header.
  • The Form-Sub header, proposed in the IETF Internet-Draft draft-levine-mailbomb-header, marks a message as generated by a web form submission so mailbox providers can recognize a flood of them.

Questions

Double opt-in questions

What is double opt-in?

Double opt-in is a subscription process with two steps. The recipient enters their email address on a form, then confirms it by acting on a message sent to that address. The subscription is only recorded once the second step is completed. Because the confirmation can only be completed from the mailbox itself, it verifies that the address is real and that its owner agreed to be subscribed.

What is the difference between single and double opt-in?

Single opt-in records the subscription the moment the form is submitted. Double opt-in records it only after a confirmation sent to the address is acted on. The practical difference is verification: single opt-in cannot tell whether the address belongs to the person who typed it, so typos, hostile signups and mistyped addresses all enter the list. Single opt-in grows a list faster; double opt-in produces a smaller list with higher engagement, lower complaint rates, less spam trap exposure and a consent record that can be defended.

Does GDPR require double opt-in?

No. Double opt-in is not named anywhere in the GDPR. What the regulation does is define consent in Article 4(11) as a freely given, specific, informed and unambiguous indication of the person's wishes given by a clear affirmative action, and then place the burden of demonstrating that consent on the controller in Article 7(1). Double opt-in is not a legal requirement; it is the most reliable way to meet that evidential burden, because it produces a record showing the address owner acted.

Is double opt-in required by law anywhere?

No jurisdiction names double opt-in in statute. Germany is the closest thing to an exception in practice: the Federal Court of Justice ruled in BGH I ZR 164/09 of 10 February 2011 that the sender carries the burden of proving valid prior consent for every commercial message, and German courts have consistently treated a bare form submission as insufficient. So it is not mandated and is nonetheless the only approach that reliably survives a challenge there. Canada's CASL requires express consent without specifying how it is obtained, and the US CAN-SPAM Act requires no opt-in at all, only a working opt-out.

Can a bot confirm a double opt-in?

Yes, and it happens routinely. Corporate email security products follow the links in inbound messages to check them for malware and phishing, before the recipient sees the message. Opt-in confirmation links are almost always plain GET URLs that record the consent on page load, so the scanner's check completes the confirmation. Security vendors do make an effort to recognize opt-in and unsubscribe links and leave them alone, and they get it wrong regularly.

How do I stop bots from confirming opt-in links?

Make the link render a page rather than perform the confirmation. The page should require a deliberate action before the opt-in is recorded: a checkbox and a submit button, a CAPTCHA and a confirm button, or any equivalent interaction an automated link fetch cannot complete. As a rule, a GET request should render the confirmation page and only a subsequent POST from that page should record consent. User-agent detection, delaying the write and blocking security vendor IP ranges all fail, because scanners present ordinary browser user agents, revisit links, and share address space with genuine corporate recipients.

Is a bot-confirmed opt-in valid consent under GDPR?

No. Consent under Article 4(11) requires a freely given, specific, informed and unambiguous indication of the person's wishes given by a clear affirmative action, and Article 7(1) puts the burden of demonstrating it on the controller. A confirmation generated by a security scanner is none of those things. The record will look entirely valid in a database, which is what makes it dangerous: it is indistinguishable from a genuine confirmation, and it will not survive being challenged.

Why do security scanners click links in emails?

To check where the links go. A corporate email gateway receives a message, extracts every URL from it, and visits each one to see whether it leads to malware or a phishing page. That check has to happen before the recipient can click, so it runs on delivery, often whether or not the message is ever opened. It is the security product doing the job it was bought for, which is also why the traffic cannot simply be blocked: the scanner belongs to your recipient.

Is double opt-in an industry best practice?

Yes, and it is ranked rather than merely endorsed. M3AAWG's Sender Best Common Practices, version 4.0 of August 2026, sets out three ascending levels of opt-in: single opt-in; single opt-in with a notification message, which it labels "Better"; and confirmed opt-in, which it labels "Best" and describes as "the highest standard opt-in best practice". Confirmed opt-in is its term for double opt-in, also called closed-loop subscription. Of single opt-in it says only that it "should be used with extreme caution as it allows unconfirmed addresses to be added to mailing lists". Note this is an industry position rather than a legal one: no statute mandates double opt-in, which is a separate question covered above.

What is list bombing, and does double opt-in cause it?

List bombing is an attack in which a script submits one victim's address to hundreds of subscription forms at once, so the resulting confirmation messages, subscription notifications and transactional mail overwhelm the mailbox and, in M3AAWG's words, "cause it to cease functioning for an extended period". It is usually cover for something else, burying a fraud alert or a password reset under thousands of individually legitimate messages. Double opt-in does not cause it, but the confirmation message is the payload, so implementing double opt-in does not reduce a form's exposure to being conscripted into one. What reduces it is hardening the form itself. The attack is also hard to see from a single site, because each form contributes only a handful of messages to an effort spread across hundreds of them.

How do I stop my signup form being used for list bombing?

M3AAWG lists ten countermeasures and is explicit that they work in combination rather than individually: a CAPTCHA the form will not submit without; restricting which systems may post to the backend so the page cannot be bypassed; per-IP rate limits; monitoring for the same address arriving at many different forms; regional limits where the service is regional; honeypot fields that a person never sees and a script fills; a page-load timestamp or key, rejecting submissions faster than a person could plausibly manage; non-standard field names so scripts scanning for "firstname" and "email" find nothing; relocating a form that has already been attacked; and adding a Form-Sub header, proposed in the IETF draft draft-levine-mailbomb-header, so receiving mailbox providers can recognize form-generated mail. Several of these share a principle with the confirmation-link fix: make the action depend on something an automated client cannot supply.

Do I need to confirm an address again if someone changes it?

Yes, and this is the step most systems skip. M3AAWG's guidance is that if a user updates their email address in your system, the new address should be confirmed in the same way as the original. Without it the whole flow can be bypassed after the fact by editing a profile, and the consent record you are holding then points at an address that never confirmed anything, which is exactly the situation double opt-in exists to prevent.

Does double opt-in hurt list growth?

It reduces the recorded subscriber count, because a share of people who submit the form never complete the confirmation. Whether that counts as harm depends on what those addresses were worth. Unconfirmed addresses include typos that will never deliver, addresses entered by someone other than their owner, and people who lost interest between the form and the inbox. Removing them lowers the headline number and raises engagement, complaint and deliverability metrics on what remains. For a list with an acquisition cost attached to it, the honest comparison is confirmed subscribers against confirmed subscribers, not raw signups.

What should I log to prove consent?

The timestamp and IP address of the original form submission, the timestamp and IP address of the confirmation, the specific form or source the submission came from, the exact wording the person consented to as it appeared at the time, and the nature of the confirming interaction. That last item is what separates a defensible record from a weak one: "a POST arrived after a checkbox was ticked" answers a challenge in a way that "the confirmation URL was requested" does not.

How long should a confirmation link stay valid?

There is no legal deadline, and the trade-off runs in both directions. A short window keeps the consent contemporaneous with the request, which is the position a regulator would prefer, but it discards genuine confirmations from people who read their mail on a delay. A common practice is between 24 hours and 7 days, with 48 to 72 hours a reasonable default. What matters more than the specific number is that the link expires at all, that the token is unique per subscription and hard to guess, and that an expired link leads to a page offering to send a fresh confirmation rather than a dead end.

Sources

The legal position here is quoted from the regulation itself rather than paraphrased, because most writing on this subject overstates what the GDPR requires.

  • GDPR Article 4(11), the definition of consent: freely given, specific, informed and unambiguous, by a statement or a clear affirmative action.
  • GDPR Article 7(1), which places the burden of demonstrating consent on the controller. This is the sentence that decides how a signup flow should be built.
  • GDPR Recital 32, the negative case: silence, pre-ticked boxes and inactivity do not constitute consent.
  • Bundesgerichtshof, I ZR 164/09, judgment of 10 February 2011, the German Federal Court of Justice ruling that places the burden of proving prior consent on the sender for every commercial message. Germany has no statute mandating double opt-in; this is why it is nonetheless the only approach that reliably survives challenge there.
  • M3AAWG Sender Best Common Practices, version 4.0, updated August 2026, replacing versions 2.0 and 3.0. The source of the three-level opt-in ranking (single opt-in, single opt-in with notification as "Better", confirmed opt-in as "Best"), the description of confirmed opt-in as "the highest standard opt-in best practice" and as also being called double opt-in or closed-loop subscription, the caution that single opt-in "should be used with extreme caution as it allows unconfirmed addresses to be added to mailing lists", the confirmation-flow guidelines above including re-confirming a changed address, the consent data to retain and the requirement that it be accessible to prove consent "to an individual, ISP, or RBL operator or regulator", and the whole of the list bombing section including its ten countermeasures. Linked through m3aawg.org/senderbcp, the reference URL the document names for itself, which redirects to the current version. M3AAWG is the Messaging, Malware and Mobile Anti-Abuse Working Group, whose membership includes the major mailbox providers.
  • draft-levine-mailbomb-header, the IETF Internet-Draft proposing the Form-Sub header that marks a message as generated by a web form submission. An Internet-Draft rather than a published standard, and cited here as the proposal M3AAWG points to.
  • RFC 8058, for the POST requirement that protects unsubscribe links and has no equivalent on the opt-in side. The List-Unsubscribe guide covers it in full.
  • M3AAWG, Exploring the Impact of Nonhuman Interactions on Email Send Metrics (M3AAWG-136, November 2020), the origin of the Non-Human Interactions term and the link-scanning behavior that makes GET-based confirmation links unsafe.

Related guides

This page covers the opt-in end of the subscription lifecycle. The opt-out end has the same problem and a standard that solved it.

  • The List-Unsubscribe header and RFC 8058 - the other half of this pair. It is the worked example of the fix recommended here: require a POST, and an automated link fetch can no longer trigger the action. Also covers what Google, Yahoo and Microsoft each require of bulk senders.
  • The email pixel consent map - consent to be emailed is not consent to be measured. Which open-tracking purposes need their own permission, and the narrow deliverability lane that does not.
  • Email bounces explained - what happens to the addresses double opt-in keeps out. Hard versus soft bounces, why the reply code is sometimes the wrong answer, and why an unparsed bounce never becomes a suppression.
  • Non-Human Interactions (NHI) - what the automated clicking actually is, where it comes from, and why it cannot simply be blocked.