> ## Documentation Index
> Fetch the complete documentation index at: https://help.maestra.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Double Opt-In Welcome Flow

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.

<Note>
  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.
</Note>

## How the flow works

The setup is split into two independent flows so each step has a clean trigger and is easy to debug.

| Flow                                    | Trigger                                                                                                                    | What it does                                                                                  |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| **Flow 1 — Confirmation request**       | Customer receives a subscription status in the selected channel or topic                                                   | Sends 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.

<Steps>
  <Step title="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.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>
</Steps>

<Tip>
  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.
</Tip>

## 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.

<Note>
  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.
</Note>

### Flow blocks

<Steps>
  <Step title="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).
  </Step>

  <Step title="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.
  </Step>

  <Step title="Send the confirmation email">
    Add a **Send email** block pointing to your confirmation email campaign (the one built with the opt-in profile).
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>

  <Step title="Send the reminder email">
    Send the reminder email campaign. Keep it lightweight — a quick "Did you mean to subscribe?" with the same confirmation button.
  </Step>

  <Step title="Activate the flow">
    Save and turn the flow on.
  </Step>
</Steps>

<Warning>
  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.
</Warning>

## 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

<Steps>
  <Step title="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.
  </Step>

  <Step title="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.
  </Step>

  <Step title="Send the welcome email">
    Add a **Send email** block pointing to your welcome campaign (the one using your standard marketing profile).
  </Step>

  <Step title="Activate the flow">
    Save and turn the flow on.
  </Step>
</Steps>

## 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."

<Tip>
  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.
</Tip>

## Testing the setup

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

<Steps>
  <Step title="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.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>
</Steps>

## Common issues

| Symptom                                                   | Likely cause                                                                                                         | Fix                                                                                        |
| --------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| Confirmation email not sent                               | Campaign is using the standard marketing profile instead of the opt-in profile, so unconfirmed addresses are skipped | Switch the campaign to the opt-in / subscription-confirmation profile                      |
| Welcome email arrives even when the customer didn't click | Flow 2 is triggering off a status change instead of the subscription action                                          | Change the trigger to **Customer action → Customer subscription to channel**               |
| Reminder sent after the customer already confirmed        | Missing "still unconfirmed" filter after the 24-hour wait in Flow 1                                                  | Add the filter that checks subscription status before the reminder send block              |
| Both flows fire repeatedly for the same customer          | Start block isn't limited to one entry per customer                                                                  | Set the start block to one entry per customer in both flows                                |
| Customer confirms but status doesn't update               | The confirmation button isn't using the special opt-in link type                                                     | Recreate the link in the email editor, selecting the subscription-confirmation link option |

<Warning>
  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.
</Warning>

## 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.
