What it applies to
Double opt-in applies to public signup form submissions only. Imported contacts and contacts added through the API are treated as already consented and don’t get a confirmation email. Contacts synced from integrations keep the consent state they have in the other system. For example, a Mailchimp contact who is pending there arrives as Pending, and a Shopify customer who hasn’t consented to email marketing arrives as Unsubscribed. They don’t get a confirmation email either. Contacts you already have aren’t affected when you turn it on.Turn it on for the workspace
1
Open the setting
Go to Settings → Double opt-in.
2
Enable it
Click Enable. The status changes to Enabled with the note New form signups are held as Pending until confirmed.
Override it for a list
Each list can follow the workspace setting or override it. Go to Contacts → Lists. On the list’s card, set Double opt-in to:- Team setting: follow the workspace setting (the default)
- On: always require confirmation for signups to this list
- Off: never require confirmation for this list
Use your own confirmation email
Unless double opt-in is Off for the list, the list’s card also has a Confirmation template picker. Choose one of your templates, or keep Built-in confirmation mail. Your template must contain the{{confirm_url}} merge tag where the confirmation link should go:
{{confirm_url}}, the built-in confirmation mail is sent instead, so signups are never stranded.
What the subscriber sees
- They submit your form.
- They receive an email asking them to confirm their subscription. The link is valid for 7 days.
- They click the link and see Subscription confirmed. If they click it again, they see Already confirmed.
Resend a confirmation
If someone didn’t get the email, or their link expired, open the contact and click Resend Confirmation. The button is also in the contact’s ⋮ menu on the Contacts page. It is offered when:- the contact is Pending, or
- the contact is Active but still has a Pending subscription to a double opt-in list, for example an existing subscriber who signed up to another list through a form. Their contact page says which lists are waiting.
Troubleshooting
Pending contacts aren't in my campaign audience
Pending contacts aren't in my campaign audience
That’s expected. Pending contacts are left out of every send until they confirm.
A contact confirmed but one of their lists is still Pending
A contact confirmed but one of their lists is still Pending
Each confirmation link confirms only the list it was sent for, so a list joined through another form waits for its own link. Use Resend Confirmation on the contact to send one link that covers every list still waiting.
The link says it is invalid or has expired
The link says it is invalid or has expired
The link is more than 7 days old, or it was changed when it was copied. Send a new one with Resend Confirmation.
My custom confirmation email isn't being used
My custom confirmation email isn't being used
Check that the template contains
{{confirm_url}} exactly, and that the list’s Double opt-in isn’t set to Off.