Double opt-in without Mailchimp
Set up double opt-in without Mailchimp: pending vs confirmed subscribers, confirmation links, and when the extra step is worth it.
Double opt-in means an address is only confirmed after the owner clicks a verification link — proving consent and keeping your list clean. You can do this without Mailchimp: capture the email on a hosted endpoint, keep it in a pending state, and confirm it when the link is clicked.
Why double opt-in
- Consent — you only email people who proved they own the address.
- List quality — typos and drive-by signups never reach confirmed.
- Deliverability — confirmed lists bounce less and spam-flag less.
The four-step flow
- Capture the email on the public subscribe endpoint.
- Store it as
pendingwhen email confirmation is enabled for that campaign. - Send a confirmation link to the subscriber.
- Move the row to
confirmedwhen the link is clicked, then export or hand off that list.
The capture step
Post the email as usual; when confirmation is enabled for the campaign, it lands as pending and the confirm link is sent. Following that link hits /api/subscribe/confirm?token=... and redirects to the SPA confirm page on success.
curl -X POST https://simple-signups.com/api/subscribe \ -H 'content-type: application/json' \ -d '{"campaignId":"pub_your_campaign_id","email":"jane@example.com"}'Keep the states separate
Export confirmed and pending subscribers independently so you never email an unconfirmed address. The behaviour and options live under anti-abuse.
When the extra step is worth it
Double opt-in is worth the extra friction when list quality, consent, or downstream deliverability matters more than absolute conversion rate. If the form is pure early validation and you care most about reading demand quickly, you may choose to leave it off until later.