Omnisend Signup Forms include a built-in double opt-in option. If you collect subscribers through third-party forms, manual imports, checkout, or API, you can set up double opt-in using Automation and webhooks.
In this guide, you'll learn how to build a two-step automation that sends a confirmation email and subscribes Contacts only after they click the verification link.
Before You Begin
This feature requires webhooks (closed beta). Contact [email protected] to enable webhooks in your account before proceeding.
You'll need:
A segment to trigger the workflow (e.g., "Non-subscribed Contacts").
Your API key.
Basic familiarity with creating segments and Automation workflows.
💡 When to use alternative double opt-in:
Contacts collected via Facebook Lead Ads, Typeform, or other third-party tools.
Manual imports from CSV files.
Store checkout (if your platform lacks an opt-in checkbox).
API integrations.
For Omnisend Signup Forms, use the built-in double opt-in. It requires no setup.
How It Works
Contact enters a segment (e.g., "Newly Imported Contacts").
Automation sends a confirmation email with a verification button.
Contact clicks the button (tracked as "clicked on a message").
Second automation triggers, sending a webhook to update the contact's status to "subscribed."
(Optional) If the contact doesn't click within X days, a webhook unsubscribes them automatically.
Setup Process
Step 1: Create the Trigger Segment
Create a segment to identify contacts who need to confirm their subscription.
Example filters:
Subscription status: Subscribed to email
Tag: "Imported from Facebook Ads"
Adjust filters based on your source. If you only want to target specific imports, add a custom tag during import.
Step 2: Build the Confirmation Email Automation
Create an automation and name it "Double opt-in email."
Setup:
Trigger: "Enter a segment" → select your trigger segment from Step 1.
Add email: Include a clear headline ("Confirm your subscription") and a button labeled "Yes, subscribe me."
Button link: Use any URL (the click event is what matters, not the destination). You can link to your homepage or a thank-you page.
Your workflow should look like this:
Optional: Auto-Unsubscribe Non-Confirming Contacts
If a contact doesn't click the email within a set period, you can automatically unsubscribe them.
How to add this:
After the email, add a Delay (e.g., 7 days).
Add a Split step: "Clicked URL in the previous email?"
Yes path: Do nothing (Contact will be subscribed in Step 3).
No path: Add a Webhook block.
Webhook configuration (unsubscribe):
HEADERS: x-api-key : <Your API key>. Learn how to Generate and API Key.
Body:
{
"identifiers": [
{
"type": "email",
"id": "[[contact.email]]",
"channels": {
"email": {
"status": "unsubscribed"
}
}
}
]
} 💡 Alternative: If you're importing contacts as non-subscribed by default, skip this webhook step – they'll remain non-subscribed unless they click your confirmation email.
Step 3: Build the Subscription Automation
Create a second automation and name it "Double opt-in subscription."
Setup:
Trigger: "Clicked on a message".
Trigger Filter: Add "Marketing activity ID" → paste the ID of your "Double opt-in email" automation (find this in Reports → Automation).
Add webhook: This subscribes the contact.
Webhook configuration (subscribe):
HEADERS: x-api-key : <Your API key>. Learn how to Generate and API Key.
BODY:
{
"identifiers": [
{
"type": "email",
"id": "[[contact.email]]",
"channels": {
"email": {
"status": "subscribed"
}
}
}
]
}
Step 4: Enable and Test
After activating your two automations, test whether the setup works correctly:
Create a test contact in Audience → Contacts.
Add them to your trigger segment.
Check that the email arrives with the correct button.
Click the button.
Go to Automations to confirm the subscription webhook fired.
Verify the contact's status changed to "subscribed" in Audience → Contacts.
Note: Webhooks require developer resources for custom API setups. If you encounter errors (401 Unauthorized, 404 Not Found), check your API key and contact email format.
FAQ
Can I use this for SMS double opt-in?
No. SMS uses single opt-in only per TCPA regulations. Double opt-in is for email subscriptions.
What if the webhook returns a 401 error?
Your API key is invalid or missing. Go to Store settings → API → API keys and regenerate it. Paste the new key into the webhook HEADERS.
Does the confirmation email expire?
No. Unlike form-based double opt-in (which expires after 30 days), automation-based emails don't expire. Contacts can click the link anytime.
Please feel free to reach out to our Support Team via in-app chat or at [email protected] for further assistance.






