Skip to main content
A double opt-in welcome flow is one of the highest-ROI automations you can run. It confirms that a new subscriber actually owns the email address they entered, keeps your sender reputation clean, and gives you a perfect moment to introduce your brand while engagement is at its peak. This guide walks through the full setup in Maestra: two flows working together — one that asks the customer to confirm their subscription, and a second that sends a welcome campaign as soon as they click the confirmation link.
Double opt-in is the recommended pattern for any list you plan to send marketing to. It protects deliverability, filters out typos and bots, and gives you documented consent in line with US email-marketing best practices (CAN-SPAM) and similar laws if you market internationally.

How the flow works

The setup is split into two independent flows so each step has a clean trigger and is easy to debug.
FlowTriggerWhat it does
Flow 1 — Confirmation requestCustomer receives a subscription status in the selected channel or topicSends a confirmation email, waits 24 hours, sends a reminder if the customer hasn’t confirmed
Flow 2 — Welcome after confirmation”Customer subscription to channel” action is recorded (fired automatically when the customer clicks the confirmation link)Sends the welcome campaign
The link inside the confirmation email is a special opt-in link. When the customer clicks it, Maestra automatically:
  1. Updates the subscription status from “implicit” or “pending” to “subscribed.”
  2. Generates a “Customer subscription to channel” action — this is what fires Flow 2.

Before you build the flows

You need three campaigns ready in Maestra before you wire the flows together.
1

Confirmation email campaign

Create an automatic email campaign using the opt-in (subscription confirmation) sending profile. The opt-in profile lets you send to addresses that haven’t confirmed yet — your regular marketing profile will skip them.The email must contain a clearly labeled confirmation link or button (for example, “Confirm subscription”). When you insert it, choose the link type that triggers a subscription update on click.
2

Reminder email campaign

Create a second automatic email campaign, also using the opt-in profile. This is the nudge you send 24 hours later to customers who didn’t click the first email. Reuse the same confirmation link.
3

Welcome email campaign

Create an automatic email campaign using your standard marketing profile. This goes out once the customer has confirmed, so you can send it through the normal marketing channel.
Keep the confirmation email short and single-purpose. One headline, one sentence of context, one button. Save the brand story, perks, and product highlights for the welcome email — the customer hasn’t confirmed yet, so anything that distracts from the click is friction.

Flow 1: Subscription confirmation request

This flow runs the moment a new subscriber is captured — from a signup form, checkout subscribe box, popup, landing page, or any other source that writes a subscription status to Maestra.

Trigger

Use the Subscription status changed trigger.
  • Event: customer acquires the selected subscription status in a channel or topic.
  • Channel: Email.
  • Topic: the topic you want to confirm (for example, your main newsletter topic).
  • Status: the “implicit” / “pending” status assigned to new, unconfirmed subscribers.
The trigger fires for both explicit subscribes (a customer ticks a box) and implicit subscribes (a status assigned by another system or import). That’s intentional — you want every new address to go through confirmation.

Flow blocks

1

Start block: limit to one entry per customer

In the start block, set the execution limit to one entry per customer. This prevents the same customer from receiving duplicate confirmation emails if their subscription status is rewritten multiple times (for example, by a re-import).
2

Filter: contact exists and is valid

Add a filter that checks the customer has a valid email address. Drop anyone who fails — there’s no point continuing the flow for an invalid contact.Common conditions to include:
  • Email is present.
  • Email is not marked as invalid.
  • Email is not on a suppression / hard-bounce list.
3

Send the confirmation email

Add a Send email block pointing to your confirmation email campaign (the one built with the opt-in profile).
4

Wait 24 hours

Add a Wait block set to 24 hours. You can tune this — 24 hours is a common default, but 48 or 72 hours also works depending on your audience.
5

Filter: subscription still unconfirmed

After the wait, add a filter that checks the customer’s subscription is still in the “implicit” / “pending” state. If the customer already clicked the confirmation link, they should exit the flow here — no reminder needed.
6

Send the reminder email

Send the reminder email campaign. Keep it lightweight — a quick “Did you mean to subscribe?” with the same confirmation button.
7

Activate the flow

Save and turn the flow on.
Don’t send marketing content through this flow. Until the customer confirms, you’re operating under the opt-in profile and shouldn’t include promotions, product recommendations, or anything that looks like a campaign send. Mixing the two is the fastest way to land in spam folders and cause deliverability issues for your confirmed list.

Flow 2: Welcome message after confirmation

This flow fires the instant the customer clicks the confirmation link. Because the click writes a “Customer subscription to channel” action, you can trigger directly off that action instead of polling for status changes.

Trigger

Use the Customer action trigger.
  • Action: Customer subscription to channel.
  • Channel: Email.
  • Topic: the same topic you used in Flow 1.

Flow blocks

1

Start block: limit to one entry per customer

Set the start block to one entry per customer so a returning customer who resubscribes later doesn’t receive the welcome series a second time. If you do want re-subscribers to get it again, switch this to per-event instead.
2

Filter: confirmation click happened and subscription is active

Add a filter that verifies:
  • The customer clicked the confirmation link (the action you’re triggering on).
  • The customer’s current subscription status in this channel and topic is active / confirmed.
  • The customer’s email is valid.
This guards against edge cases where an action is recorded but the subscription state didn’t update correctly.
3

Send the welcome email

Add a Send email block pointing to your welcome campaign (the one using your standard marketing profile).
4

Activate the flow

Save and turn the flow on.

What to put in the welcome email

The welcome email has the highest open and click rates of any campaign you’ll ever send. Use it deliberately. Strong elements to consider:
  • A clear thank-you and brand intro. One or two sentences. Who you are and what the customer will get from being on the list.
  • A subscriber incentive. A first-order promo code, free shipping, or loyalty-program bonus points. This single addition has been shown in multiple programs to push conversion to first purchase from around 40% up to 65%.
  • Popular products or recently viewed items. Pull dynamically with personalization parameters so the email reflects what each customer has shown interest in.
  • Channel preferences. Invite the customer to set their preferences (frequency, topics, SMS opt-in) — this lifts long-term engagement and reduces unsubscribes.
  • A primary CTA. One main button — usually “Shop now” or “Claim your offer.”
Run an A/B test on the welcome email from day one. Subject line, hero image, and the presence/size of the incentive are the three variables that typically move the needle most. Even a small lift compounds because every new subscriber sees this email.

Testing the setup

Before you go live, run an end-to-end test with a real address you control.
1

Subscribe through your real signup path

Use the signup form, popup, or whichever source is in production. Don’t test by manually writing a subscription status in Maestra — you want to validate the trigger fires the way it will for actual customers.
2

Confirm Flow 1 sent the confirmation email

Check your inbox and the customer card in Maestra. The customer should be in the “implicit” / “pending” state, and the confirmation email should be logged as sent.
3

Click the confirmation link

Verify two things happen automatically:
  • Subscription status flips to “subscribed.”
  • A “Customer subscription to channel” action is recorded on the customer card.
4

Confirm Flow 2 sent the welcome email

The welcome email should arrive within a few minutes. Check that personalization parameters resolved correctly and the incentive code (if any) works.
5

Re-test the reminder path

Subscribe a second test address, but this time don’t click the link. After the wait period, confirm the reminder fires and the welcome email does not.

Common issues

SymptomLikely causeFix
Confirmation email not sentCampaign is using the standard marketing profile instead of the opt-in profile, so unconfirmed addresses are skippedSwitch the campaign to the opt-in / subscription-confirmation profile
Welcome email arrives even when the customer didn’t clickFlow 2 is triggering off a status change instead of the subscription actionChange the trigger to Customer action → Customer subscription to channel
Reminder sent after the customer already confirmedMissing “still unconfirmed” filter after the 24-hour wait in Flow 1Add the filter that checks subscription status before the reminder send block
Both flows fire repeatedly for the same customerStart block isn’t limited to one entry per customerSet the start block to one entry per customer in both flows
Customer confirms but status doesn’t updateThe confirmation button isn’t using the special opt-in link typeRecreate the link in the email editor, selecting the subscription-confirmation link option
If your confirmation email lands in spam at high rates, your sender reputation is likely already damaged. Pause the flow, investigate authentication (SPF, DKIM, DMARC) and recent campaign sending behavior, and consider warming the opt-in sending profile separately before relaunching.

Why this setup works

  • Two flows, two triggers. Splitting confirmation and welcome into separate flows means each one has a single, clean trigger. Debugging, editing, and A/B testing are dramatically easier than maintaining one giant flow with internal branches.
  • One entry per customer. Prevents duplicate sends caused by re-imports, status rewrites, or customers who unsubscribe and resubscribe.
  • Wait + re-check pattern. The 24-hour wait followed by an “is the customer still unconfirmed?” filter is the standard pattern for any reminder logic — reuse it for cart reminders, browse reminders, and review requests.
  • Welcome on the marketing profile. Once confirmed, the customer goes through your normal sending profile, which keeps your opt-in profile clean for actual confirmation traffic and protects deliverability across both.
Programs that ship this exact setup routinely see double-opt-in confirmed lists driving the largest share of CRM-attributed revenue — in mature programs, the welcome flow alone is often responsible for 10–15% of total GMV from CRM communications.