Everything we actually do when implementing Klaviyo for an ecommerce or DTC brand, written out in full. How the lifecycle flows work, what segmentation strategy actually means in Klaviyo, how to connect Shopify without data gaps, how to protect and recover deliverability, how to run A/B tests that produce a decision rather than noise, and how to migrate from another ESP without burning the list. No fluff, nothing held back.
This guide is written for people who want to understand what a properly implemented Klaviyo account looks like, not just how to click through the setup wizard. If you have an account already, use it to diagnose what is missing. If you are starting from scratch, use it as the spec for what to build. Either way, read through the flow section first: that is where most of the revenue lives, and most accounts do not have it.
Klaviyo is built around three concepts: profiles (the record of a person and everything you know about them), events (things that happened, like a purchase or a cart being abandoned), and flows (automated sequences triggered by events or segment membership). Campaigns are broadcast sends to a defined audience. Understanding the difference between a flow and a campaign is the most important thing to get right before building anything.
A flow runs automatically when a trigger condition is met for a specific person. A campaign is a one-off or scheduled send to a static or dynamic segment. Most of the recoverable revenue in an underperforming account is in flows that are not live, not in campaigns that have not been sent. Campaigns can drive volume; flows drive the revenue that compounds because they run every day without human input.
These are not optional extras. In a well-run Klaviyo account, flows account for 30 to 40 percent of total email revenue, running automatically without any campaign effort. Most accounts have one or two of them in an incomplete state.
The welcome flow is the highest-engagement moment in the entire lifecycle. A person just gave you their email address, which means they either already know your brand or they are actively considering it. Open rates on welcome emails routinely hit 50 to 70 percent. The question is not whether to have one; it is whether yours converts at that level.
A well-built welcome series runs three to five touches over seven to ten days. Touch one is immediate confirmation with a clear value statement or offer if you promised one on the opt-in. Touches two and three introduce the brand story, best sellers, and social proof. The final touch is a time-pressure element if a discount was used to capture the email. The branching logic matters: people who purchase during the series should exit the sequence and enter the post-purchase flow, not receive a winback offer when they just bought.
Cart abandonment rates run at 70 percent or higher across most ecommerce categories. An abandoned cart flow does not recover all of that, but it recovers a meaningful portion of people who had intent and got distracted. The mistake most accounts make is sending one email too quickly and then stopping. The data consistently supports three touches: one at one hour (while the intent is fresh), one at 24 hours (for people who needed to think), and one at 72 hours (a final push with or without an incentive).
The filter logic matters as much as the timing. Suppress customers who have purchased in the last day (they checked out on a different device). Suppress people already in a high-value customer segment from the discount touch (they do not need the incentive). Dynamic product blocks that show the specific items from the abandoned cart consistently lift conversion over generic brand emails.
The period immediately after a first purchase is when a customer is most receptive to the brand. Most accounts send one transactional confirmation and nothing else for 30 days. A post-purchase flow uses this window: a shipping notification (which earns very high open rates because people want to know where their order is), a review request at the right moment after expected delivery, a cross-sell sequence based on the category purchased, and a loyalty or referral prompt for repeat buyers.
The cross-sell logic is where Klaviyo's data layer earns its value. If a customer bought a product from category A, show them the products from category B that people who bought category A most often purchase next. This requires clean product catalogue data in Klaviyo and a custom property or feed that maps the relationship.
Browse abandonment fires when someone views a product page or category but does not add to cart. It runs at lower conversion than cart abandonment because the intent was softer, but it runs on much higher volume. A single-touch sequence 24 to 48 hours after the browse event, showing the viewed product with social proof, adds meaningful incremental revenue without cannibalising the cart flow. The filter condition is critical: only fire if the person did not add to cart or purchase within the trigger window, otherwise you are sending the same message twice.
A winback flow targets customers who have not purchased in a defined window, typically 90 to 180 days depending on your average purchase frequency. The goal is to re-engage before the customer becomes inactive permanently, which is when you need to move them to a suppression list rather than keep sending to them. A two or three touch winback sequence, ending with an explicit opt-down or unsubscribe prompt for people who do not respond, protects your deliverability by reducing inactive addresses in your sends. Marketers who never run a winback sequence watch their deliverability deteriorate gradually without understanding why.
Segmentation in Klaviyo is not about having a lot of segments. It is about having the right ones and using them correctly in flows and campaigns. Most accounts either have no segments (one list, everything gets everything) or too many that have never been used. Both are problems.
The five segments that every account should have active before anything else are: active subscribers who have not purchased (nurture toward first order), one-time buyers (cross-sell), repeat buyers (loyalty and VIP), at-risk customers (winback), and inactive addresses (suppression candidates). Everything more sophisticated than this is built on top of these five.
Predicted customer lifetime value (pCLV) is one of the more useful Klaviyo properties for segmentation. Klaviyo calculates it automatically for accounts with sufficient order history. Segmenting by pCLV lets you weight your best customers more heavily in flow logic and suppress high-discount behaviour for the customers least likely to churn without one.
The Klaviyo native Shopify integration handles the main event stream for most standard storefronts, but it has gaps that affect flow logic if you do not verify them at setup. The events that matter most for lifecycle automation are: viewed product, added to cart, started checkout, placed order, fulfilled order, cancelled order, and refunded order. All of them should fire before you build any flows.
Custom properties are what separate a generic Klaviyo setup from one that supports sophisticated flow logic. Examples that earn their keep: the category of the last purchase (to drive cross-sell logic), the number of orders in the last 90 days (for frequency-based branching), the net promoter score collected post-purchase (to segment review request recipients), and the date of the last email open (for engagement scoring). These properties are populated by the integration layer or by API calls at the order event, and they unlock the segmentation logic in the matrix above.
Deliverability is the condition in which your email actually reaches the inbox rather than the spam folder. It is not a checkbox. It is a reputation state that every send either builds or erodes, and a damaged sending reputation is one of the most expensive problems in email marketing because it takes weeks or months to recover and damages every send in the meantime.
Domain authentication is the non-negotiable starting point: SPF, DKIM, and DMARC records must all be correctly configured for your sending domain. Klaviyo provides the DKIM keys; your DNS admin adds the records. DMARC tells inbox providers what to do when authentication fails (reject, quarantine, or report only), and for a new sending domain we start with a reporting-only policy and tighten it once the sending record is established.
Complaint rates matter more than most senders realise. Google's threshold for Gmail deliverability is 0.08 percent. Yahoo's guidance is similar. One spam complaint per 1,250 sends keeps you under the threshold. Most complaints come from people who do not remember signing up, which is a list quality problem as much as a content problem. Suppressing chronically unengaged addresses before they click spam is a more effective approach than trying to re-engage them with another send.
Warm-up is required for any sending domain that is new or has been inactive. Start with the most engaged subscribers (opened in the last 30 days), send modest volume (500 to 1,000 per day initially), and expand the audience and volume over three to four weeks. Monitor bounce rate and complaint rate at each step. Jumping straight to a full list send from a cold domain is the single fastest way to land in spam permanently.
SMS in Klaviyo earns its place in specific moments, not as a replacement for email. The moments where SMS consistently outperforms are: the second or third touch of a cart abandonment sequence (when email has already been sent and the person is clearly not checking email), shipping and delivery notifications (because people genuinely want to know where their order is), and time-sensitive winback offers with a clear deadline.
SMS does not work as a nurture channel. Long-form brand content does not belong in a text message. The rule of thumb is: if the message cannot be read and acted on in ten seconds, it is probably the wrong format. SMS also carries a higher cost per send than email, so the revenue attribution logic needs to be honest. Do not count a purchase as SMS revenue if the same person had an email in their inbox from the same flow sequence.
Most A/B tests in email do not produce decisions. They produce noise with a confidence interval too wide to act on, run on a variant that was never the real question, and end with the team making the same choice they were going to make anyway. A test that produces a decision needs a clear hypothesis, a sample large enough to reach statistical significance, a single variable per test, and a pre-defined threshold for what counts as a win.
In flows specifically, the highest-leverage tests are: send time (does morning or evening perform better for your audience in the cart flow), incentive presence in the final touch (does a discount actually lift conversion, or does it train people to abandon and wait), and subject line approach (curiosity vs. urgency vs. product-led vs. social proof). Start with the flow variables, not the design. A subject line test on a cart flow runs on a large volume of triggered sends daily and reaches significance quickly. A design test on a low-frequency campaign can take months to reach the same confidence.
Klaviyo stores custom properties on both profiles and events. Profile properties persist over time (number of orders, last purchase category, pCLV band, opt-in source). Event properties are attached to a specific event (the items in a specific abandoned cart, the product category of a specific order). Both are available for use in flow filters, dynamic content blocks, and segmentation conditions.
The most common data gap we find is that the Shopify integration fires the order placed event but the product-level data inside it is incomplete or incorrectly structured. This breaks dynamic product blocks in post-purchase flows. The fix is to verify the event payload structure against what the Klaviyo flow template expects, and to fill any gaps with a webhook or API call at order time.
ESP migrations are more complex than they appear because the work is not just moving data. It is also preserving deliverability reputation and not breaking the engagement history you have built.
The migration checklist we work through has four stages. First, list export and hygiene: export all subscribers including suppression and unsubscribe lists, run the active list through a verification service to remove role addresses and hard-bounce candidates, and build the import file in the format Klaviyo expects. Second, suppression mapping: unsubscribes from the old ESP must be imported as suppressions in Klaviyo before any send, or you will send to people who legally opted out, which is a compliance problem as well as a deliverability one.
Third, flow and template rebuild: do not import flows from the old ESP and expect them to work. Rebuild them in Klaviyo using the native flow builder, with the correct trigger conditions and filter logic for the Klaviyo data model. This is also the time to fix what did not work in the old setup rather than replicating the same mistakes. Fourth, domain warm-up: even if the sending domain is the same, Klaviyo is a new sending infrastructure and inbox providers track reputation at the IP level as well as the domain level. Run the warm-up sequence above.
Klaviyo's default attribution window is five days for email clicks and one day for email opens. That window determines what revenue gets credited to the email program. It is long by most standards, and if you are running a multi-touch program with email, SMS, and paid retargeting running simultaneously, the attribution overlap can significantly inflate the revenue number that Klaviyo reports.
The cleaner approach is to treat Klaviyo's reported revenue as directional and to validate it against your Shopify attribution data and your multi-touch model. For flow-level decision making, last-click attribution within the Klaviyo attribution window is a reasonable proxy. For program-level reporting to leadership, use a conservative window (24 hours for clicks, zero for opens) and note the methodology. Nobody gets fired for reporting conservatively. Plenty of people have had to explain why the email revenue number was twice as high as total site revenue.
A short, honest list of the implementation failures we find most commonly:
That is the whole method. When you want it applied to your account, the next step is a free lifecycle and deliverability audit: real findings on your real data, in about a week, with no obligation.
A free audit on your real account data, the gaps quantified, and a fixed scope to build what the numbers justify. Findings in a week.
Get a free lifecycle audit