← Blog

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

  1. Capture the email on the public subscribe endpoint.
  2. Store it as pending when email confirmation is enabled for that campaign.
  3. Send a confirmation link to the subscriber.
  4. Move the row to confirmed when 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.

Capture the address (starts pending)
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.

Related