Skip to main content
Double opt-in asks new subscribers to confirm their email address before they become active. Use it when you want cleaner lists, stronger consent records, and fewer fake or mistyped signups.

How It Works

  1. A visitor submits a signup form, or an API call creates a subscriber with double opt-in enabled.
  2. Sequenzy stores the subscriber as unsubscribed while confirmation is pending.
  3. Sequenzy sends your confirmation email with a signed confirmation link.
  4. After the subscriber clicks the link, Sequenzy changes the subscriber to active.
  5. Sequenzy adds the subscriber to the target lists, applies signup tags, and triggers matching automations.
Pending subscribers do not receive campaigns or sequences. They can still receive the confirmation email because it is sent as a transactional confirmation message.

Repeat signups

If the same address signs up again before confirming, from any form, popup or API call, Sequenzy sends a new confirmation email when the last one went out at least 24 hours ago, up to three per address. Each new email replaces the previous link. A signup inside those 24 hours, or after the third email, sends nothing, and the latest link keeps working. This stops bots from using your forms to fill a stranger’s inbox with confirmation emails from your domain, which leads to spam complaints against you. A contact who unsubscribes or reports the email as spam gets no more confirmation emails. After someone confirms, a later return through double opt-in starts over. Confirmation emails appear as Double opt-in confirmation emails in analytics breakdowns by email.

Requirements

Before enabling double opt-in, set a default sender profile for the workspace. Sequenzy uses that sender for the confirmation email. When you enable double opt-in for the first time, Sequenzy creates a confirmation email template for you. You can edit it like any other email, but it must include the {{DOUBLE_OPT_IN_URL}} variable somewhere in the content. Sequenzy replaces that variable with the subscriber’s confirmation link at send time.

Enable Double Opt-In

Sequenzy double opt-in settings with callouts showing status and confirmation controls
  1. Go to Settings → Tracking and find Double Opt-In.
  2. Find Double Opt-In.
  3. Turn on Enable double opt-in.
  4. Click Edit confirmation email if you want to customize the subject, copy, design, or button text.
  5. Save your settings.
If the workspace does not have a default sender profile, Sequenzy will ask you to set one before enabling the setting.

From the API, CLI, or MCP

The same account-wide toggle is part of the tracking settings surface, so an agent can audit and change it without the dashboard:
Over MCP, read it with get_tracking_settings (returned in the consent block) and set it with update_tracking_settings. Every path behaves the same way: enabling requires a sender profile, and provisions the confirmation email automatically when the workspace does not have one yet. To change the confirmation email itself, read its ID from consent.doubleOptInEmailId and edit it like any template: PUT /api/v1/templates/{id}, sequenzy templates update <id>, or update_template over MCP. Every surface rejects new content without {{DOUBLE_OPT_IN_URL}}, so an edit cannot leave signups stuck as pending. Contacts that are already active are not changed. Reads need the account:read scope, writes need companies:manage.

Signup Forms

Embedded signup forms follow the workspace double opt-in setting. When double opt-in is enabled:
  • Form submissions create pending subscribers with status: "unsubscribed"
  • Selected list IDs and tags are held until confirmation
  • The confirmation email is sent automatically
  • The success message or redirect still runs after the form submission succeeds
When the subscriber confirms, Sequenzy activates the subscriber, adds the selected lists and tags, and starts any matching automations. A contact who unsubscribed from all email and submits a saved form, popup, or landing page again is resubscribed. With workspace double opt-in on, they confirm by email first. You can also require confirmation for these returning contacts on a single form or popup with Require email confirmation to resubscribe (resubscribeBehavior: "double_opt_in"), even when workspace double opt-in is off. That option uses this confirmation email; the form and popup builders can create it for you. It applies only to that form or popup, so turn on workspace double opt-in to require confirmation everywhere. Forms and popups with Bot protection on (botProtection: true) also use this confirmation email: signups that fail the Cloudflare check must confirm by email first, even when workspace double opt-in is off. Turning bot protection on requires this email and a sender profile. See Bot protection.

Signup Form Widget

Learn how embedded signup forms work with double opt-in.

Events, Webhooks, and Tags

Contacts are not only created by signup forms. Events from external apps (Tally, Cal.com, Typeform, and other webhook triggers), the events API, and tag operations can also create brand-new contacts. These paths follow the workspace double opt-in setting too. When double opt-in is enabled and an event or tag creates a new contact:
  • The contact is stored as unsubscribed while confirmation is pending, and the confirmation email is sent automatically
  • The event is still recorded and tags are still applied, so your data stays complete
  • List membership is held until confirmation
  • Sequences triggered by the event or tag enroll the contact immediately, but the enrollment is parked at the trigger step - no emails send yet
When the contact confirms, parked sequences resume from the trigger and the first email sends. If the contact never confirms within the confirmation window, the parked enrollment is cancelled automatically. Contacts that already exist are not affected: active contacts run sequences normally. Contacts who unsubscribed earlier still enroll when a trigger matches, but marketing emails in the sequence are skipped for them - only transactional-type emails and non-email steps (tags, webhooks, attribute updates) run. A contact with a pending confirmation can keep triggering events - each matching sequence parks once and resumes after the single confirmation.

API Behavior

The subscriber API accepts an optInMode field: Use confirmed for server-side flows where your app already verified consent, such as paid customer syncs or explicit in-product opt-ins. Omit optInMode or use default when you want the workspace setting to decide for new subscribers. Use double_opt_in when this one request must require confirmation regardless of the workspace setting. default does not send confirmation email to an existing unsubscribed contact.
If confirmation is required, the response includes an optIn object:

Create Subscriber API

See the full subscriber create request and response reference.
Confirmation links expire after seven days. If a subscriber clicks an expired or invalidated link, they see an error state. Submitting the form again sends a fresh link when the last email went out at least 24 hours ago, up to three emails per address (see Repeat signups). If a subscriber is already active when they click a valid confirmation link, Sequenzy treats it as already confirmed instead of creating duplicate list memberships or automation entries.

Confirmation Page Branding

The confirmation link opens a hosted page that shows your company name, logo, and brand color, with a confirm button. The extra click is deliberate: it stops email security scanners from confirming subscriptions by following links automatically. On free plans the page shows a small “Powered by Sequenzy” line; paid plans hide it, matching form and email branding rules.

After Confirmation

By default, confirmed subscribers stay on the hosted confirmation page - it shows a confirmation message with your branding and no outbound links. To send them to your own site instead (for example a thank-you or welcome page), set a confirmation redirect:
  • Dashboard: Settings → Tracking → Double Opt-In → After confirmation
  • API: PATCH /api/v1/tracking-settings with doubleOptInRedirectUrl
  • CLI: sequenzy tracking update --double-opt-in-redirect-url https://example.com/welcome
  • MCP: update_tracking_settings with doubleOptInRedirectUrl
The redirect must be an http(s) URL; a bare domain is normalized to https://. Clear it (pass null, or an empty value in the CLI) to keep subscribers on the hosted page.