Turn on native confirmation so new subscribers must click a link before they receive campaigns.
Double opt-in keeps people off your marketing list until they prove they own the inbox. The signup is the first opt-in. The confirmation click is the second.
Enable it before you collect subscribers in a market that expects consent evidence (France, the EEA, and most public capture pages). Lumail's native flow is the supported one — do not invent a custom confirmation state machine with the transactional API.
With Enable Double Opt-In on:
PENDING_CONFIRMATION.{{confirmUrl}}.SUBSCRIBED. Lumail stores confirmedAt and confirmationIp, writes a subscribed timeline event, and starts tag-triggered workflows.Until that click, they do not receive campaigns or workflow marketing emails. Filter Subscribers → Pending Confirmation to see who is waiting.
Signup (form, API, capture page, integration)
↓
PENDING_CONFIRMATION + confirmation email (24h token)
↓
Click {{confirmUrl}} → /confirm?token=…
↓
SUBSCRIBED + confirmedAt / confirmationIp + workflows
The confirmation link is a single-use token URL. A second subscribe POST for the same pending address does not send a second email or rotate the token. If they never click, they stay pending — turning the setting off later does not subscribe them for you.
Existing SUBSCRIBED contacts are left alone when you enable the setting. Only new subscribers go pending.
/orgs/[your-org]/settings/configuration.
The first card on Configuration. The switch is organization-wide.
| Control | What it does |
|---|---|
| Enable Double Opt-In | New subscribers are PENDING_CONFIRMATION and get a confirmation email |
| Change email template | Opens the confirmation email editor (only after the switch is on) |
| Save | Persists the switch. The email template is saved separately inside the editor |
The card below it — Add transactional recipients to the marketing list — is a different path. Turning that on creates receipt/OTP recipients as SUBSCRIBED. Double opt-in does not apply there.
With the switch on, click Change email template.

Subject, preview, and body. The blue button must point at {{confirmUrl}}.
| Data point | Detail |
|---|---|
| Subject / Preview | Inbox subject and preview text. Defaults are Confirm your email address |
{{confirmUrl}} | Required. Type @ and pick Confirmation URL, or /confirm to insert the confirmation button |
{{name}} / fields | Same subscriber variables as campaigns. @ opens the menu |
| Snippets | Type / to insert an organization snippet |
| Default sender | Confirmation emails always send from the organization's default sender |
| Save email | Writes the template. Missing {{confirmUrl}} falls back to the default template |
The recipient confirmation page (You're all set) follows Settings → Language, not the email body language. Translate the email yourself.
The subscriber timeline shows that they confirmed their email via the double opt-in link and subscribed to the list. The confirmation-link click is labeled as such, not as a generic URL click.
Workflows that start on subscriber created or tag added wait until confirmation. Tags attached at signup are replayed after the click so tag-triggered workflows enroll a real SUBSCRIBED contact.
Campaigns only target SUBSCRIBED. Pending contacts never enter a send.
| Source | New subscriber | Confirmation email |
|---|---|---|
| Capture page | PENDING_CONFIRMATION | Sent |
Subscribers API / SDK (POST /api/v1/subscribers) | PENDING_CONFIRMATION | Sent (unless triggerWorkflows: false) |
| ClickFunnels / Systeme.io | PENDING_CONFIRMATION | Sent |
| Dashboard Add Subscriber | PENDING_CONFIRMATION | Sent only if Trigger workflows is on |
| CSV import | SUBSCRIBED by default | Not sent — import writes status directly |
| Transactional API / SMTP | TRANSACTIONAL or SUBSCRIBED | Ignored. Not a custom double-opt-in mechanism |
Resubscribe of UNSUBSCRIBED / TRANSACTIONAL | SUBSCRIBED | Skipped |
triggerWorkflows: false still creates the pending subscriber and a confirmation token. It skips the email. Use that for silent imports; do not use it on a public form.
For the legal and evidence limits of confirmedAt / confirmationIp, see GDPR in Lumail.
triggerWorkflowsSUBSCRIBED timeline events