What is a Klaviyo welcome flow?
A Klaviyo welcome flow is an automated series of emails (or SMS messages, in a separate flow) that starts when someone joins your main subscriber list. In Klaviyo terms, it’s a list-triggered flow: the trigger is “Added to list”, and every profile added to that list enters the flow.
Klaviyo’s flow library has a ready-made welcome series you can start from, and many stores switch it on in an afternoon. The template is the easy part. The decisions around it are what separate a welcome flow that earns first orders from one that sends a 10% code to someone who paid full price an hour ago.
This guide covers those decisions. It assumes you already have Klaviyo connected to your store and at least one signup form collecting subscribers.
Start with the list, not the emails
Because the flow triggers on a list, everything depends on how people get onto that list. Before building anything, write down every route in:
- signup forms and popups
- checkout consent collected through your store integration
- imports from other tools or old platforms
- API or integration subscriptions, such as a quiz app or loyalty platform
Each of these brings in a different kind of person. Someone who signed up through a popup offering a discount is a browser. Someone who ticked the marketing box at checkout has already bought. If both land on the same list and enter the same welcome flow, the second group gets an introduction-and-discount series for a brand they’ve just paid. That’s the most common welcome flow problem we see, and it’s fixed with a split, covered below.
How does double opt-in affect the welcome flow?
With double opt-in, a profile is only added to the list after it confirms the subscription, so the welcome flow starts when they click the confirmation link, not when they submit the form. If the confirmation email is slow or goes to spam, the welcome series waits with it.
Check which setting each list actually uses. A list follows your account’s default opt-in setting at the time it was created, and changing the account default later doesn’t update existing lists. So two lists in the same account can behave differently.
Imports don’t go through double opt-in. Imported profiles are added to the list directly, which means they can trigger the welcome flow. If you’re about to import an old subscriber file, set the flow (or its messages) to Manual first so those profiles aren’t scheduled for a welcome email they’d find confusing, then switch it back to Live afterward.
How the list trigger behaves
A few behaviors of list triggers are worth knowing before you build.
List-triggered flows can’t use trigger filters. In Klaviyo, trigger filters are only available on metric-triggered, custom object and price drop flows. A welcome flow uses profile filters instead. These check profile properties or past activity, and Klaviyo checks them when someone enters the flow and again before each message is sent.
People normally go through it once. Klaviyo’s welcome series guidance is that a profile only receives a list-triggered flow once, so someone who unsubscribes and re-subscribes six months later won’t get it again. Klaviyo has since added re-entry criteria to list and segment triggers, with options such as “Enter only once” and “Re-enter after a minimum time period”. Check what your flow is set to rather than assuming.
Profiles added before the flow goes live aren’t included. If you build a new welcome flow, existing list members won’t enter it automatically. Klaviyo offers an option to add past profiles retroactively, but think carefully before using it. Someone who joined 18 months ago doesn’t need a “thanks for joining” message now.
Email and SMS should be separate flows. People often give their email and phone number at different times. Because a welcome flow can only be entered once, combining both channels in one flow means whichever consent arrives second never gets its welcome. Klaviyo’s own guidance is to keep them separate.
A sensible welcome flow structure
There’s no correct number of emails. Three to five over about ten days works for most stores. What matters more is that each email has a clear job.
Email 1: immediately. Deliver whatever the signup form promised. If you offered a discount, the code goes here, near the top, not hidden below a brand story. If you didn’t offer anything, use this email to set expectations about what you send and how often. Keep it short.
Email 2: about two days later. Explain why your product is different, in concrete terms. Who makes it, what it’s made from, what problem it solves. This is the email most stores skip, and it’s often the one that turns a discount-hunter into someone who cares about the brand.
Email 3: around day four or five. Show social proof or best-sellers. Use real reviews if you have a review integration, and real product data rather than a hand-picked set that goes out of stock.
Email 4: around day seven to ten. If they still haven’t bought, a reminder that the welcome offer exists (and, if it’s true, that it expires). If you didn’t offer a discount, this can be a buying guide or an FAQ answering the objections your support team hears most.
Timing in Klaviyo is set with time delays between steps. Delays accumulate, so a two-day delay followed by a three-day delay means the third message goes out five days after entry. You can also set a delay to wait until a specific time of day, which is useful if your sales spike at certain hours.
Stop welcoming people who’ve already bought
This is where most of the value is. You need two checks: one for people who were already customers when they joined, and one for people who buy during the flow.
Klaviyo now builds these checks with multi-branch splits. They combine what used to be two separate actions, the conditional split and the trigger split, so older flows may still show those names. A multi-branch split can have several paths, each with its own conditions, plus an “Everyone else” path at the end.
Split 1: already a customer when they joined
Add a split right after the trigger using the store’s order metric (usually Placed Order, depending on your integration), with the condition: has placed order at least once over all time.
- Yes path: a short, different welcome. Thank them, explain what they’ll receive by email, perhaps invite them to a loyalty program. No first-order discount.
- Everyone else: the full welcome series.
Split 2: bought during the flow
Before each later email (especially anything containing a discount or “still deciding?” message), check: has placed order at least once since starting this flow.
- Yes path: exit, or move into a short thank-you branch while your post-purchase flow takes over.
- Everyone else: continue the series.
You can also add a profile filter to the whole flow, such as placed order zero times since starting this flow. Because profile filters are re-checked before each message, a buyer won’t receive later welcome emails. The split approach is more flexible, since it lets you send buyers something different instead of nothing.
A small scenario shows why this matters. A subscriber joins on Monday for 10% off, buys on Tuesday without using the code, then receives “Your 10% is waiting” on Thursday. They now feel they overpaid and email support asking for a refund of the difference. One split prevents all of that.
Should Smart Sending be on in a welcome flow?
Usually not for the first email. Smart Sending skips a message if the profile has recently received another message from you. For email, the default window is 16 hours. In flows, Smart Sending is enabled on many pre-built flow messages, and skipped messages are not rescheduled.
Here’s the problem. Someone receives a campaign at 10am, signs up via a popup at 2pm, and the welcome email with their promised discount is skipped because they were “recently emailed”. They never get the code they signed up for.
To turn it off, open the message’s settings and clear Skip recently emailed profiles (for SMS and push, the setting is Turn on Smart Sending). For later emails in the series, leaving Smart Sending on is reasonable, since it stops a campaign and a welcome email landing minutes apart.
Discount codes
If you offer a discount, a few decisions are worth making deliberately:
- Static or unique codes. A static code like WELCOME10 is easy but tends to end up on coupon sites. Klaviyo can generate unique codes for supported ecommerce platforms, which also lets you set an expiry per person.
- Whether everyone gets one. You can hold the discount back until email 3 or 4 and only send it to people who haven’t bought yet. Using the “since starting this flow” split described above, it reaches only the people who need a nudge.
- Expiry. If you say the code expires, make sure it actually does. Subscribers notice when “last chance” emails are repeated.
Test before you go live
Build and test with the flow set to Manual, so nothing sends while you work. Then:
- Preview each message with a real profile to check dynamic content and product blocks.
- Send test emails to yourself and check them on mobile.
- Use a test profile that has ordered before and confirm it takes the right split path.
- Check your profile filters by looking at who would be excluded, not just who would be included.
- Switch each message to Live, then update the flow status to Live.
After launch, watch the first week closely. Look at how many profiles entered, how many were skipped and why, and whether the “already a customer” path is catching the people you expect.
How to measure a welcome flow
Open rates for a first welcome email look great almost everywhere, so they don’t tell you much. More useful questions:
- What share of new subscribers place a first order within the flow’s timeframe?
- Which message is followed by most of those orders?
- How do unsubscribe and spam complaint rates compare with your campaigns?
- How many profiles are skipped, and by which filter or setting?
Compare against people who joined before the current version of the flow went live, if you have that data. And keep in mind that a welcome flow attributes orders that might have happened anyway. Treat it as one part of the lifecycle, alongside browse, cart and checkout abandonment and post-purchase, not as a standalone revenue line.
Common mistakes
- One list for popup subscribers and checkout subscribers, with no split for existing customers.
- Smart Sending left on for the email that delivers a promised discount.
- A combined email and SMS welcome flow, so late SMS consents never get welcomed.
- Importing an old list while the welcome flow is live.
- Assuming the list is single opt-in when it’s actually double opt-in, or the other way around.
- No hand-off to the post-purchase flow when someone buys mid-series.
If your welcome flow is one of several that are starting to overlap, our Klaviyo page describes how we look at flows, segments and events as one system. For a wider review of how your data and automation fit together, see how to audit your CRM.
What triggers a Klaviyo welcome flow?
Usually the “Added to list” trigger on your main subscriber list. If the list uses double opt-in, the flow starts when the subscriber confirms, not when they submit the form.
Can I add filters to a list-triggered flow?
Yes, profile filters. Trigger filters aren’t available on list-triggered flows. Klaviyo checks profile filters at entry and again before each message.
Will existing subscribers get my new welcome flow?
Not automatically. Only profiles added to the list after the flow goes live will enter it. Klaviyo can add past profiles retroactively, but it’s rarely a good idea for a welcome series.
Should I send the welcome discount in the first email?
If the signup form promised one, yes. Put it near the top of the first email and turn off Smart Sending for that message so it isn’t skipped.