Welcome email automation is the first flow most ecommerce brands build, and it’s also the one where a working sequence quietly keeps doing the wrong thing for months: sending a first-purchase discount to a shopper who bought two days ago, because the flow never checked. Getting welcome email automation right is less about the copy and more about two decisions — which event starts the sequence, and which setting stops it from firing at the wrong person — that most setup guides skip past on their way to subject-line advice.
What Do You Need Before You Build a Welcome Email Automation?
Three things need to exist before the flow builder is worth opening. First, a list or segment your signup sources — a pop-up, a checkout opt-in checkbox, a landing page form — actually feed into, so the flow has something to trigger on. Second, your platform’s order data synced and visible as an event the flow can check, since every mechanism in this guide depends on the flow being able to see whether a profile has placed an order. On a Shopify store running Klaviyo, that’s the native Shopify integration syncing the Placed Order metric; on another platform-ESP pairing, confirm the equivalent event exists and fires promptly, not on a delay of hours.
Third, someone with the authority to decide the incentive question before drafting starts. A welcome sequence with a discount slot left blank while marketing and finance argue over the number is a sequence that ships half-built, and a margin-based decision method beats a guessed percentage every time — a method this guide sets out in full below.
List Join or First Purchase: Which Event Should Start the Sequence?
Both are legitimate triggers, and they’re not interchangeable — each one defines a different population entering the flow, which is the actual decision, not a preference between two similar options.
A list-join trigger, built on a subscribe event, starts the sequence the moment someone hands over an email address, before any purchase. This is the trigger for a brand whose welcome sequence’s job is converting a browser into a first-time buyer — the incentive email genuinely has work to do, because most entrants haven’t bought yet. It’s also the trigger that needs the buyer-exclusion mechanism in Step 5 and Step 6 most urgently, since a meaningful share of list joiners buy before the sequence finishes.
Built on the order event itself, a first-purchase trigger works differently: it starts the sequence only once someone has already bought. This produces a different sequence entirely — not “convince them to buy,” but “confirm they made a good decision and set expectations for what comes next.” An incentive email in a first-purchase-triggered flow is a second-purchase nudge, not a first-purchase one, and needs to read that way; offering “10% off your first order” to someone who already placed one reads as a broken flow even when the mechanics behind it are fine.
Running both isn’t unusual on a $3M–$30M Shopify store with a working pop-up and steady checkout volume — a list-join flow that ends when someone buys, handing off into a short first-purchase flow that starts where the other left off. Building both from the start avoids retrofitting the buyer-exclusion logic onto a flow that was never designed to expect it.
How Do You Build a Welcome Email Automation, Step by Step?
Step 1: Decide the Trigger — List Join or Placed Order
In Klaviyo’s flow builder, choose a List trigger set to “Someone subscribes to List or Segment” for the list-join entry point, or a Metric trigger set to “Placed Order,” synced through Klaviyo’s Shopify integration, for the first-purchase entry point. Building two separate flows for the two triggers, rather than one flow trying to serve both, keeps the copy and the exclusion logic each flow needs from fighting each other.
Step 2: Map the Flow’s Timing Before Writing Any Copy
Lay out the Time Delay actions between messages before drafting a single subject line — for example, an immediate first send, a short delay before the second message, and a longer delay before the third. Deciding the pacing as a deliberate setting on each Time Delay action, rather than as a byproduct of whatever order the copy gets written in, is what keeps a three-to-five-message sequence from either rushing a shopper or going cold before the incentive message lands.
Step 3: Assign One Job to Each Email in the Sequence
Give every Email action in the flow exactly one job, and name that job in the flow’s internal message name — “Welcome — introduction,” “Welcome — proof,” “Welcome — incentive” — so anyone auditing the flow six months from now can see each message’s purpose without opening it. A message trying to introduce the brand, prove it’s worth buying from, and push a discount all in one send usually does none of the three well.
Step 4: Decide the Incentive Method Before You Write the Discount Copy
Resolve whether the incentive is a percentage discount, a flat amount, free shipping or something non-monetary using a margin-based method — weighing the discount’s cost against what a converted first order is worth to the business — before adding a coupon block to any Email action. Once the method is decided, generate the actual code through Klaviyo’s Coupon Codes feature, under Content, which issues a unique code per recipient from an uploaded batch rather than one static code pasted into the template — a static code is the version most likely to end up shared on a coupon-aggregator site within weeks of launch.
Step 5: Add a Conditional Split Before the Incentive Email
Insert a Conditional Split action immediately before the Email action carrying the incentive, set to the condition “Placed Order zero times since starting this flow.” Route the “No” branch — nobody has bought — into the incentive email, and route the “Yes” branch into a different message: a thank-you for the order they already placed, with no discount attached. This single split is the mechanism that stops a first-time-buyer discount from reaching someone who bought during the flow’s own Time Delay steps.
Step 6: Add a Flow-Level Filter, Not Just a Branch
A Conditional Split checks the condition once, at the moment a profile reaches it — it doesn’t re-check between then and when the email actually sends. Open the flow’s Flow Filter tab and add the same condition, “Placed Order zero times since starting this flow,” as a filter on the incentive email step itself. This re-checks at send time, which is what catches the shopper who buys in the gap between passing the split and the delayed email firing — a gap that’s easy to overlook because the split appears to have already handled it.
Step 7: Turn the Flow Live and Check the First Real Sends
Set the flow to Live and watch its Analytics tab through the first day of genuine entries rather than trusting a single test profile pushed through manually. Confirm specifically that any profile showing a Placed Order event inside the flow lands in the “Yes” branch of the split, and that the flow filter is measurably excluding people from the incentive email — most platforms show a filtered-out count separately from the send count, which is the number to check.
What Does Each Email in the Sequence Need to Earn Before It Can Sell?
A welcome sequence is usually three messages, sometimes stretched to four or five for a brand with more to say before the incentive lands, and each one has to earn the right to the next.
Message one’s job is orientation, not conversion. It confirms the signup worked, states plainly what the brand sells and who it’s for, and sets an honest expectation for what’s coming — an incentive, if one exists, or simply more from the brand if it doesn’t. Trying to sell inside message one, before the reader has any reason to trust the brand yet, is the most common reason a welcome sequence underperforms its own list size: it asks for a decision the reader isn’t ready to make.
Message two’s job is proof — the brand’s actual case for itself, made through specifics rather than adjectives. A jewelry brand’s welcome flow earns this with material and craftsmanship detail; a fashion brand’s welcome flow earns it with fit guidance or styling context. What both have in common is that the proof message names something concrete about the product, not a claim a competitor could paste onto their own site unchanged.
Message three’s job, where an incentive exists, is the ask — and only the ask, since the introduction and the proof already happened in the messages before it. This is also the message every branching and filtering mechanism in this guide exists to protect, because it’s the one message in the sequence that reads as a mistake, not just a miss, if it reaches the wrong person.
How Do You Decide the Incentive Method Instead of Guessing a Discount Percentage?
The honest answer to “what discount should the welcome flow offer” is that there’s no published figure that transfers from one store to another, because the number that actually works is set by your own margin, average order value and how price-sensitive your specific list is — none of which a generic benchmark can tell you.
The method that replaces the guess starts with margin, not the discount itself. Work out what a first order is actually worth to acquire — not just the margin on that one order, but the value of turning a subscriber into a customer who’s now eligible for every flow that follows a first purchase. A discount that trades margin on the first order for a real shot at a second and third is a different decision than a discount that just shaves margin off a sale that was going to happen anyway at full price.
As a hypothetical, illustrative example only: a store with a $120 average order value and 50% gross margin has $60 of margin to work with on a typical order. A discount that costs $12 of that margin, in exchange for converting a subscriber who otherwise wouldn’t have bought this visit, is a defensible trade if the second-order rate for welcome-flow converts is meaningfully higher than for subscribers who never get an incentive — that comparison is the thing worth testing on your own list, not assuming from a case study.
Where a store’s margin doesn’t comfortably support a percentage-off discount, the same method points toward a non-monetary incentive instead — free shipping, an exclusive early-access window, a small gift with the first order — evaluated the same way: what does it cost against what it’s worth if it converts. The method doesn’t change; only the lever does.
Why Does Sending the Discount to Someone Who Already Bought Cost More Than It Looks?
Sending the discount to an already-paid customer is the step teams get wrong most often, and it’s rarely a copy problem — the flow’s mechanics are usually fine right up until the moment a buyer slips past the branch that was supposed to catch them.
The direct cost is straightforward: a customer who already paid full price gets a “welcome” discount code for an order they’ve finished, and either uses it on a second purchase they’d likely have made anyway, or emails support asking why they’re being offered a discount on something they bought last week. Neither outcome is the flow doing its job — the first is margin given away for no incremental behaviour, the second is a support ticket the flow itself created.
The less obvious cost is what it signals. A brand’s welcome flow, done well, is often the first automated sequence a new customer notices actually paying attention to them — it knows they signed up, knows roughly when, and follows a sensible order. A discount email that arrives after the purchase breaks that impression specifically, because it’s evidence the flow doesn’t know what the customer just did, in a moment when knowing exactly that was the whole point of the message.
The fix isn’t a smarter subject line or a “if you’ve already ordered, ignore this” disclaimer bolted onto the email — that patches the symptom while leaving the underlying gap in place. The fix is Step 5 and Step 6 together: the Conditional Split that routes a buyer to different copy, and the flow filter that re-checks the same condition at the moment the email actually sends, not just when the profile first reached the split.
How Do You Branch a Buyer Out of the Sequence Mid-Flow, Not Just at Entry?
Most welcome-flow exclusion logic is built to handle the case where someone was already a customer before they ever entered the flow, which a single condition at entry catches well. The harder case, and the one that actually needs Step 5 and Step 6, is a shopper who enters the flow with a clean order history and buys somewhere in the middle of it — after the introduction email, before the incentive email.
A Conditional Split, checked once, catches this if it’s placed immediately before the incentive email rather than at the very start of the flow — checking the condition at entry alone means only that they hadn’t bought yet at that moment, which tells you nothing about the days that follow. A flow filter on the incentive email step is the second, independent check on the same condition, evaluated again at send time, which is why both mechanisms belong in the flow rather than either one alone.
Branching logic extends past the buyer-exclusion case, following the same pattern. A signup from a wholesale or B2B account, a VIP or high-spend customer who hasn’t technically bought inside this specific flow, a subscriber who unsubscribes mid-sequence — each is a case worth its own Conditional Split, checked against a tag, a property or a lifetime-value threshold, rather than assumed away because the main buyer-exclusion split is already in place. The main split solves one problem; the others need their own checks.
How Do You Verify the Welcome Automation Is Actually Working After You Turn It On?
Verification here means confirming the mechanism, not just watching open and click rates climb. Three checks matter more than the top-line numbers in the first weeks after launch.
First, confirm real buyers are landing in the correct branch of the Step 5 split — pull a handful of profiles who show a Placed Order event and check which path they took through the flow, rather than trusting the split’s logic in the abstract. Second, confirm the flow filter on the incentive email is actually excluding people, which most platforms report as a filtered-out count distinct from the send count; a filtered-out count of zero after real volume has moved through the flow is worth investigating, not treating as good news. Third, confirm the coupon codes issued through Step 4 are being redeemed as unique, single-use codes rather than a shared static code — checking this against Shopify’s own discount settings, where the “Limit to one use per customer” checkbox on a discount code caps how far a leaked or shared code can spread even if the flow’s own filtering has a gap somewhere else.
Verification is not a one-time setup task. A welcome automation is, mechanically, the same kind of trigger-and-filter build as an abandoned cart or post-purchase flow, and it needs the same ongoing checks every flow does as your product catalogue, checkout configuration and list sources change. Getting the trigger, the branching and the exclusion logic built correctly, and kept correct as the store changes underneath it, is the kind of build we do as part of lifecycle flows.
Sources
- Klaviyo, benchmark data across more than 183,000 brands: 41% of email revenue attributed to automated flows (vendor-reported).
No independent, third-party study is quoted in this piece beyond the figure above; the setup steps and setting names are written from how Klaviyo flows are built and operated on Shopify stores.