All segments

Klaviyo Segments: A Step-by-Step Setup for Shopify Teams

Build Klaviyo segments that hold up: lists vs segments, the three condition types, five working definitions and the window that quietly shrinks a list.

  • Published
  • Reading time 12 min read
  • Author Nafiul Hasan
Klaviyo Segments: A Step-by-Step Setup for Shopify Teams. Diagram: what the window includes. RETAIN Klaviyo Segments: A Step-by-StepSetup for Shopify Teams IN SCOPE pointerflow.com

Short answer

Klaviyo segments are dynamic, self-updating groups built from conditions — what someone has done, properties about them, or Klaviyo's predictive analytics — that recalculate membership automatically. A list, by contrast, is a fixed group you add profiles to directly, usually through a signup form. A Shopify brand typically runs one or two lists for subscription status alongside a working set of segments — engaged, VIP, at-risk, one-time buyer — that flows and campaigns target instead.

Klaviyo segments are saved sets of conditions that Klaviyo checks against every profile continuously, so membership changes on its own as behaviour and properties change — nobody adds or removes anyone by hand. A list is the opposite: a fixed group, usually populated by a signup form, that only changes when someone is added, removed, or unsubscribes. Most of the actual send targeting on a healthy Shopify account runs on Klaviyo segments; lists mainly hold subscription and consent status.

The distinction matters because the two are built and maintained completely differently, and mixing them up is where a lot of Klaviyo accounts end up with flows firing off stale audiences nobody is watching.

What’s the difference between a list and Klaviyo segments?

A list is membership you assign directly — someone fills in a form, and Klaviyo writes them onto that list until they’re removed or unsubscribe. A segment is membership Klaviyo works out for you, continuously, from a set of conditions you define once.

That single difference explains almost everything else. A list can’t get stale in the sense a segment can, because nothing is being recalculated — but it also can’t reflect a change in behaviour unless something actively moves the profile. A segment always reflects the current state of its conditions, which is powerful and also the reason a badly built segment can quietly go wrong: it’s telling you the truth about a definition that stopped matching what you meant.

For a Shopify brand, the practical split is usually: one or two lists tied to signup sources and subscription status, and a working set of segments — engaged, VIP, at-risk, one-time buyer, and a handful of narrower ones for specific flows — that campaigns and flows actually target.

What are the condition types inside Klaviyo’s segment builder?

Klaviyo groups segment conditions into three broad categories, and naming them correctly is the first thing to get right before building anything.

What someone has done covers event-based conditions built on metrics — Placed Order, Opened Email, Clicked Email, Started Checkout, Viewed Product, and any custom event a Shopify app or your own tracking sends into Klaviyo. Every one of these conditions needs a time window: at least once, zero times, at least N times, all inside a stated range such as “in the last 60 days.”

Properties about someone covers profile-level fields rather than events — email marketing consent, SMS consent, location, a default Shopify customer field, or a custom property you’ve set on the profile yourself. These don’t need a time window in the same way; they describe a current state, not a history of actions.

Predictive analytics covers Klaviyo’s own modelled fields, on accounts where they’re available — things like a predicted churn risk or an estimated date of next order, calculated from a profile’s own order history rather than typed in by anyone. Exact field names, and which plans and integrations have access to which predictive fields, have moved between Klaviyo releases. Check your own segment builder’s condition list before assuming a specific field name is still current — this is worth confirming directly in-app rather than trusting an older screenshot or a competitor’s blog post.

Inside any one segment, you combine conditions from any of the three categories with AND, OR and NOT groupings, nested as deep as the logic needs. Engaged, VIP, at-risk, one-time buyer and subscribers — the five working definitions this guide builds — use mostly the first two categories, because they don’t depend on a predictive feature set that varies by account.

How do you build an engaged segment that doesn’t lie to you?

Start with an OR group: “Opened Email” at least once in the last 60 days, OR “Clicked Email” at least once in the last 60 days. Wrap that whole group in an AND with “is subscribed” to email marketing, since an unsubscribed profile shouldn’t count as engaged no matter what it did before unsubscribing.

That’s a working engaged segment — but the setting that matters most is the one easiest to get wrong, which is the subject of the next section.

The step almost every team gets wrong: the window that shrinks on its own

Here’s the setting most teams never think to check: an engagement segment built on “opened or clicked in the last N days” doesn’t measure how engaged your subscribers are. It measures how many of the emails you sent in that window got opened. Those are different things, and the gap between them is invisible until send volume changes.

Say your engaged segment is defined as “Opened Email at least once in the last 60 days.” If you send four campaigns a week, every subscriber gets roughly eight chances inside that 60-day window to open something and stay in the segment. Cut back to one campaign a week — a slower month, a deliverability pause while you clean a list, a holiday lull — and the same subscribers now get roughly two chances in the same window. Nothing about their actual interest changed. The segment shrinks anyway, because the denominator moved: fewer emails sent means fewer possible opens, and a trailing-window condition can only count opens against sends that actually happened.

This becomes expensive the moment the engaged segment feeds a flow filter or a suppression rule — which it usually does, since “only send to engaged profiles” is the whole point of building the segment. A flow that checks “is in Engaged segment” before sending will start excluding real, interested customers the moment send frequency drops, at exactly the point a brand is often trying to be more careful about who it emails, not less. The flow doesn’t send an error. It just quietly reaches fewer people, and the drop looks like a real engagement decline in a dashboard, when the actual cause was the mailing calendar.

The fix isn’t a different segment definition — it’s a habit: before trusting any trailing-window segment’s count, check Klaviyo’s own campaign and flow send history for the same date range the window covers, and confirm sends actually happened inside it at a normal cadence. If send volume dropped, read the segment’s size drop in that light before deciding anything about the audience is wrong. This is exactly the kind of interaction between a segment definition and a sending calendar that a lifecycle flows build has to account for, because a flow filter that silently degrades is worse than one that’s obviously broken — nobody investigates a number that’s merely a little lower than last month.

How do you build a VIP segment?

A VIP segment needs a threshold, and the honest answer is that the threshold is yours to set from your own order data, not a number to copy from somewhere else — order frequency and average order value vary too much by category and price point for a borrowed number to mean anything on a different store.

Structurally, build it as “Placed Order” at least [your threshold] times, optionally grouped with a spend-based alternative using OR: “Placed Order” with a total value at least [your threshold] over the same lifetime window. The OR matters because order count and total spend reward different customers — a frequent, lower-basket buyer and a rare, high-basket buyer can both deserve VIP treatment, and a segment built on count alone misses the second.

Pull the actual numbers from your own Klaviyo account: look at the distribution of lifetime order count and lifetime value across your customer base, and set the VIP threshold somewhere in the upper range of that distribution — high enough to be meaningfully above average, not so high the segment is too small to be worth building flows around.

How do you build an at-risk segment?

At-risk means someone who has bought before and has since gone quiet — not someone who has never bought, and not someone who’s merely a little slower than usual. Build it on two conditions in AND: “Placed Order” at least once, ever, and “Placed Order” zero times in the last [your own lapse window].

A stronger version adds a second, independent signal: “Opened Email” zero times over the same window, or a shorter one. Requiring both no-purchase and no-engagement reduces false positives from someone who’s simply between purchase cycles for a low-frequency product but is still reading your emails — that person isn’t at risk, they’re on schedule.

Set the lapse window from your own average time between orders, not a generic figure — a skincare brand with a 30-day replenishment cycle and a mattress brand with a multi-year cycle need completely different windows for “gone quiet” to mean anything.

How do you build a one-time-buyer segment?

The setting that trips people up here is using “at least 1” instead of “exactly 1.” “Placed Order” at least once catches every customer you have, including your VIPs — it’s not a one-time-buyer filter at all. The condition needs to say “Placed Order” equals exactly 1.

Add a second condition so the segment only holds people who’ve actually had a chance to buy again: the first order placed more than [your own follow-up window] ago. Without that second condition, the segment includes yesterday’s first-time buyer, who hasn’t failed to reorder — they just haven’t had time yet.

How do you build a subscribers segment?

Build this on the profile property for email marketing consent — “is subscribed” to email marketing — rather than on membership in a specific list. The reason is that consent and list membership can drift apart: a profile can remain on a list created by an old signup form while its actual subscription status has changed since, through an unsubscribe, a preference update, or a suppression event. A segment built on the consent property always reflects the current, real answer to “can I email this person,” where a list-membership condition only reflects history.

Five working Klaviyo segments and the condition categories they use
SegmentCore conditionCategoryCommon mistake
EngagedOpened/Clicked Email in the last N days, AND subscribedWhat someone has doneTrusting the count without checking send frequency over the same window
VIPPlaced Order ≥ threshold, OR total value ≥ thresholdWhat someone has doneCopying a threshold from another brand instead of your own order distribution
At-riskPlaced Order ≥ 1 ever, AND zero times in the lapse windowWhat someone has doneUsing one generic lapse window across products with very different purchase cycles
One-time buyerPlaced Order = exactly 1, first order older than the follow-up windowWhat someone has doneUsing "at least 1" instead of "exactly 1," which catches every customer
SubscribersSubscribed to email marketing (property)Properties about someoneBuilding it on list membership instead of the consent property

Reading the table: every segment above except Subscribers is event-based, because most of what distinguishes these customer states is behaviour over time, not a static fact about the profile. Subscribers is the one exception, and it’s exactly the kind of condition that belongs in the properties category — a current state, checked once, not accumulated over a window.

How do these five segments fit together in a flow?

None of these segments do anything on their own — they earn their keep as filters on a flow or a campaign, and engaged, VIP, at-risk, one-time buyer and subscribers are designed to be mutually exclusive enough to use as branch logic. A post-purchase flow might route a first-time buyer through an education track, a VIP through an early-access offer, and an at-risk past buyer through a win-back message, all from the same trigger event, differentiated only by which of these segments the profile currently sits in.

That kind of branching — one trigger, several paths, decided by segment membership — is most of what a lifecycle flows engagement is actually building underneath the emails themselves. Getting the segment logic right first is what keeps the flow from routing the wrong message to the wrong customer, which is a harder problem to notice than a broken sync, because every email still sends — just to the wrong list of people.

If your Shopify brand is past the point where flows are handled ad hoc and needs the segment layer built once and maintained rather than rebuilt inside every flow filter, that’s the specific gap scaling brands run into once order volume outgrows what one person can reconcile by eye. It’s also worth reading alongside how AI is changing email marketing if the same team is weighing where automation belongs in the segment-and-flow layer versus where a human judgement call still has to sit.

How do you verify a new segment actually worked?

Before wiring any new segment into a live flow filter, open the segment and check three things: the current member count against what you expected given your own list size, a handful of individual profiles you know personally to confirm they landed on the correct side of the logic, and — for anything built on a trailing time window — Klaviyo’s own send history over that same window, checked against the campaign and flow calendar. A segment that returns zero members, or an implausibly large one, is almost always a condition checking the wrong property or the wrong direction (zero times versus at least once), not a genuine account state.

Sources

No external figures are quoted; this article is written from how Klaviyo’s segment builder is configured and operated on Shopify accounts, and describes condition categories and settings rather than measured statistics.

Frequently asked

If I delete a list, does that delete the segments built from it?

No, and the reverse is worth knowing too: a segment that references a list as one of its conditions loses that piece of logic if the list is deleted, but the segment itself stays — it just stops evaluating the missing condition correctly. Segments built without referencing any list, which is most of the working set in this guide, are unaffected by list deletion entirely.

Can a segment include people from more than one list?

Yes. A segment's conditions can reference list membership as one input among several — 'is on list X' AND 'placed order in the last N days', for instance — so a segment isn't limited to one list's membership. Most working segments for a Shopify brand don't reference a list at all; they're built entirely from order and engagement behaviour.

What are the three condition categories in Klaviyo's segment builder?

Broadly: what someone has done — event-based conditions built on metrics like Placed Order, Opened Email or Started Checkout; properties about someone — profile fields such as email consent, location or a custom property; and predictive analytics — Klaviyo's own modelled fields on eligible accounts. Exact labels and which predictive fields are available have moved around between Klaviyo releases, so check the current builder in your own account rather than assuming an older screenshot still matches.

Why does my engaged segment keep shrinking even though nothing changed with my subscribers?

The most common cause is the mailing calendar, not the audience. An engaged segment defined as 'opened or clicked in the last N days' can only count opens against emails that were actually sent in that window. Cut your send frequency — for a holiday lull, a deliverability pause, or simply fewer campaigns that month — and the same loyal subscribers get fewer chances to open, so the segment shrinks even though engagement per email sent hasn't dropped at all.

Should a VIP segment be based on order count or on total spend?

Either can work, and which one matches your business is a judgement call, not a rule: order count rewards frequency and suits a repeat-consumable brand, while total spend rewards basket size and suits a brand with a wide price range across products. Some teams build both and treat the OR of the two as VIP, since a customer who buys rarely but spends heavily deserves the same treatment as one who buys often at a lower average order value.

Can I use Klaviyo's predictive analytics instead of building my own engagement window?

Where Klaviyo's predictive fields are available on your account, they can supplement a manual definition — a modelled churn-risk or predicted-next-order-date field adds a second signal alongside your own trailing-window logic. Treat predictive fields as an addition to check, not a replacement, since availability and exact field names have changed between Klaviyo plans and releases and are worth confirming directly in your own segment builder.

How many conditions can one segment have before it becomes unreliable?

There's no fixed ceiling that makes a segment stop working, but every added condition is another thing that can silently exclude people you meant to include — a filter written against a property that not every order carries, for example. A segment with more than four or five stacked conditions is worth testing profile-by-profile against a few known customers before you trust its count.

Does a segment update in real time, or on a delay?

Klaviyo evaluates segment membership continuously rather than on a fixed nightly batch, so a profile typically moves in or out of a segment shortly after the underlying event or property changes. There can be a short processing lag under load, which is worth allowing for if you're checking a segment's count immediately after a large import or a big campaign send.

Can a flow use a segment as its trigger, or only as a filter?

A segment most commonly appears inside a flow as an entry filter or a flow filter re-checked at send time, rather than as the trigger itself — the trigger is usually an event (Placed Order, a list signup) or a date-based property, with the segment narrowing who actually receives the email. Some flow types do support 'entered segment' directly as a trigger; check the trigger options on the specific flow type in your account before assuming.

Why does someone show up in both my VIP segment and my at-risk segment?

That's a sign the two segments' windows disagree, not that Klaviyo made an error. A customer who bought heavily a year ago and nothing since can clear a lifetime-spend VIP threshold while also clearing an at-risk 'no order in the last N days' threshold — both statements are true about the same person at once. The fix is deciding which segment should take precedence in a flow filter, not treating the overlap as a bug.

Is it a problem to rebuild the same segment logic inside every flow instead of referencing one saved segment?

It's a maintenance risk more than an immediate problem. Conditions typed directly into a flow filter have to be updated by hand in every flow that repeats them, while a saved segment referenced by name updates every flow that points at it the moment you edit the segment once. Teams running more than a handful of flows are better served building the segment once and pointing flows at it.

Do unsubscribed profiles get automatically removed from every segment?

An unsubscribe changes the profile's email marketing consent property, so any segment condition built on that property — the kind recommended in Step 7 above — reflects the change immediately. A segment that doesn't check consent at all, built purely on order history, will still include an unsubscribed customer, since order history and email consent are separate facts about the same profile.

Can I export a Klaviyo segment to use in Meta or Google ads?

Klaviyo supports syncing segments to ad platforms as custom audiences on eligible integrations, which keeps a paid retargeting or suppression list in step with the same definition driving your email sends. Exact platform support and sync frequency are account and integration specific, so confirm the current options directly in your Klaviyo integrations settings rather than assuming every platform behaves the same way.

Next step

Is this your lifecycle flows problem, or a symptom of another one?

Bring your numbers — the churn split, the decline rate, whatever your flows are earning — and we will tell you which of them is the expensive one.

Book a call →