Which Klaviyo flows does a DTC store actually need?
Eight, built in this order: welcome, abandoned checkout, abandoned cart and browse, post-purchase, winback, back-in-stock, sunset, and review request. They form the automation layer that sells while nobody is at the desk. Email overall is commonly benchmarked at 25 to 35 percent of store revenue, and flows, not campaigns, should carry the majority of it.
TL;DR
- Campaigns fire on a calendar; flows fire on behavior. Build flows first: they keep earning after you stop touching them.
- The build order: welcome, abandoned checkout, abandoned cart and browse, post-purchase, winback, back-in-stock, sunset, review request.
- Email is commonly benchmarked at 25-35% of store revenue; flows should out-earn campaigns inside that number.
- The sunset flow makes nothing and protects everything: deliverability caps every other flow.
- If campaigns out-earn flows month after month, you have an architecture problem, not a copy problem.

First: the welcome flow
Nobody on your list will ever be more interested than in the minute after they sign up. The welcome flow exists to spend that minute well.
Trigger: joining the main list, almost always through your popup. Timing: first email within minutes of signup, the rest spaced across the following week. Emails: 4 to 6. Deliver the signup offer, tell the story, explain the product's mechanism, show proof, then ask for the order plainly.
The mistake we keep seeing: one email with a discount code, then silence. That is a receipt, not a welcome series. This flow sets the brand voice and hosts your first A/B test: incentive-led against story-led, judged on revenue per recipient, not opens. And the flow is only as strong as the popup feeding it: list growth upstream decides what everything downstream is worth.
Second: abandoned checkout
The flow closest to the money, and in most accounts we open, the one with the highest revenue per recipient. Someone picked the product, entered checkout, and stopped. Something specific stopped them.
Trigger: checkout started with no order placed, filtered so anyone who completes the purchase drops out automatically. Timing: first email inside the hour while the session is still warm, the second a day later, the third around day three. Emails: 3 to 4.
The mistake we keep seeing: leading with a discount. Do that and your regulars learn the game fast: load the cart, walk away, wait for the code. Email one should answer the objection instead. Shipping cost, delivery time, payment doubts, returns. For EU stores it is courier and delivery-window questions more often than product doubts. Hold the incentive for the final email, if your margin allows one at all.
Third: abandoned cart and browse abandonment
Not everyone who leaves was about to buy. Klaviyo separates the temperatures cleanly; the copy should respect the difference.
Trigger: added to cart without reaching checkout for the cart flow; viewed a product without adding for browse abandonment. Filter each flow so shoppers who moved deeper exit the lighter one. Timing: cart within a few hours, browse the next day. Emails: 2 to 3 for cart, 1 to 2 for browse, softer as intent drops.
The mistake we keep seeing: one generic "abandonment" flow blasting identical copy and an identical discount at all three temperatures. A checkout abandoner has an objection. A cart abandoner is comparing options. A browser is window shopping. Same product, three different conversations.
Fourth: post-purchase
The most under-built flow in DTC, because it does not visibly "recover" anything. What it does is compound: the second order starts here.
Trigger: order placed. Timing: a thank-you beyond the receipt on day one, product education while the parcel is in transit, a cross-sell or replenishment nudge after the delivery window closes. Emails: 3 to 5, first-time buyers split from repeat, because "welcome to the family" reads strangely on order number four.
The mistake we keep seeing: silence between order and doorstep, then a review beg. The transit window is peak attention. The buyer checks tracking daily and opens everything, so teach usage, set expectations, cut support tickets. Selling cash on delivery in Europe? These emails help decide whether the parcel gets accepted at the door. This is the first loop of the retention architecture we rebuild most often.
Fifth: winback
Every list quietly fills with people who bought once and drifted. Winback goes and gets them, and its performance hides in one decision: when it starts.
Trigger: the reorder window passing without a new order, built off the last order date or a lapsed-buyer segment. Timing: keyed to your product's real cycle. Pull the median gap between first and second orders and start at roughly 1.5 times that number. Emails: 3 to 4, the incentive ladder climbing across the sequence instead of opening at your deepest discount.
The mistake we keep seeing: the 90-day template default applied to every store. A supplement brand on 30-day bottles should open winback around day 45; a wardrobe-basics brand might wait until day 120. Segmentation does the aiming here too: lapsed high-value buyers deserve a different ladder than one-time discount hunters.
Sixth: back-in-stock
The highest-intent trigger in the system, because the customer wrote themselves into it. A shopper taps the alert button on a sold-out product page, and Klaviyo's back-in-stock trigger emails them when inventory returns.
Trigger: the back-in-stock alert subscription, fired on restock. Timing: immediately. Demand queues behind a sold-out page, and restocks tend to sell through fast. Emails: 1 to 2. The alert, then one reminder if stock survives a few days.
The mistake we keep seeing: the alert button never gets installed, so every sold-out page quietly leaks demand you already paid ads to create. The runner-up: over-designing the alert into a newsletter. It is a notification. "It's back" plus a button beats art direction. And honestly: if you never sell out, park this one; that is why it sits sixth.
Seventh: the sunset flow
The unglamorous one. A sunset flow gives subscribers who ignored everything a final chance, then suppresses them. It is the reason the other seven keep reaching the inbox.
Trigger: entering an unengaged segment: no clicks, no orders across your engagement window, commonly 90 to 180 days. Timing: one email, a short pause, one more, then automatic suppression. Emails: 2 to 3.
The mistake we keep seeing: skipping it because it earns nothing. Deliverability is graded on engagement; every send to a dead address teaches inbox providers your mail is ignorable. Let the list rot and even your abandoned checkout emails start landing in spam. A practical note: define "unengaged" on clicks more than opens, because privacy features preload emails and inflate open rates. A smaller list that lands beats a bigger one that does not.
Eighth: the review request flow
Last in the build order because it needs everything upstream working: orders flowing, delivery reliable, expectations set. Its output is not revenue. It is ammunition.
Trigger: fulfillment plus a delay sized to your real delivery times, so the ask lands after the product has been used, not while it sits in a depot. Timing: one to two weeks after delivery for consumables, longer for products that need living with. Emails: 1 to 2, short, one link, zero friction.
The mistake we keep seeing: the review ask riding along on the order confirmation, days before the box arrives. Nothing drags review scores down like asking people to rate something they have not opened. Done right, the flow feeds the proof your product page converts with. Review count and recency are conversion assets that compound the same way flows do.
The eight flows at a glance
The full architecture in build order:
| Flow | Trigger | Emails | Revenue weight |
|---|---|---|---|
| Welcome | List signup, usually via popup | 4-6 | High: the widest-reach flow |
| Abandoned checkout | Checkout started, no order | 3-4 | Highest revenue per recipient |
| Abandoned cart / browse | Add to cart / product view | 2-3 / 1-2 | Medium: volume over intent |
| Post-purchase | Order placed | 3-5 | Medium now, compounds LTV |
| Winback | Reorder window passed | 3-4 | Medium: timing decides it |
| Back-in-stock | Restock alert subscription | 1-2 | High per send, low volume |
| Sunset | Unengaged segment entry | 2-3 | None direct: protects the rest |
| Review request | Fulfillment plus delay | 1-2 | Indirect: feeds page proof |
The order is revenue logic, not preference. Welcome first because every popup subscriber passes through it, checkout second because it sits nearest the money, and intent thins from there: cart and browse widen the net, post-purchase starts the second order, winback reopens closed doors. The last three are specialists: back-in-stock converts demand you already paid for, sunset earns nothing and protects everything, review request pays out on the product page instead of the inbox.
Notice what none of this requires: send-time guessing. Flows time themselves off the trigger; smart send time belongs to campaigns, where a clock decision exists. We judge every flow on revenue per recipient, defined with the rest of this vocabulary in our DTC metrics glossary.
The diagnostic that matters: when campaigns out-earn flows for months, the send calendar is compensating for missing architecture. The fix is structural, not another promo.
Flows are the floor, not the finish
None of this is clever, and that is the point. Eight flows, sensible triggers, timing that respects the buyer, copy that answers real objections. Most stores earn less from flows than campaigns not for lack of knowledge but for lack of follow-through: the flows got built at launch and nobody has opened them since.
We rebuild Klaviyo architectures for DTC brands every month, including multi-market EU accounts where all eight flows exist in five languages. If your flows earn less than your campaigns, or your automation is one welcome email and a prayer, that is the exact gap our email marketing service closes: audit first, rebuild what matters, measure it as a P&L line. The build takes weeks. The flows collect for years.



