Copying a 30, 60 or 90 day engaged segment from a template is a guess. The window that actually protects your deliverability and your revenue is a function of how often your customers buy. The one line answer: set the window to roughly 1.5 times your median days between a customer's first and second order, then raise it to whatever floor your send frequency demands. A store whose customers reorder every 45 days should not treat someone as unengaged at day 30, because that person is still mid cycle and about to purchase.
Key takeaways
- Size the window to about 1.5x your median repurchase interval, then take the larger of that number and your send frequency floor.
- Klaviyo ships default 30, 60 and 90 day engaged segments defined as opened or clicked an email at least once, and they stay empty until you send your first email.
- Klaviyo's Average Time Between Orders is an account level predictive metric that needs at least 500 customers with orders, 180 days of history and some customers with 3 or more orders before it appears.
- Send cadence sets a hard floor: Klaviyo's schedule guidance puts a daily sender's most engaged track at a 30 day window and a monthly sender's at 275 days.
- The cost of getting this wrong is asymmetric. Too tight and you suppress buyers mid cycle; too loose and you mail unengaged addresses that damage the sending domain.
What you need
- A Klaviyo account with an ecommerce integration (Shopify or equivalent) syncing the Placed Order metric.
- Permission to create and edit segments (a Manager or Admin role).
- Order level history to compute the repurchase interval, either through a Shopify orders export or the Admin API, or Klaviyo predictive analytics if your account qualifies.
- A view of your current send cadence per list, so you know the deliverability floor you cannot go below.
How to size and build the engagement window
- Pull the repurchase interval from your order data. The reliable source of truth is order history, not a model. Export your orders to CSV from the Shopify admin, or query the Admin GraphQL orders query, which returns each order's
createdAttimestamp and lets you filter withprocessed_at. Pull enough history to cover at least two full purchase cycles.{ orders(first: 250, query: "processed_at:>=2025-01-01", sortKey: PROCESSED_AT) { edges { node { createdAt email customer { numberOfOrders } } } } } - Compute the median gap between the first and second order. Group orders by customer, sort each customer's orders by
createdAt, and take the difference in days between order one and order two. Use only customers with 2 or more orders, otherwise one time buyers drag the number toward infinity. Take the median, not the mean, because a handful of very long gaps will distort an average. In a spreadsheet, once you have one row per customer with both dates:
This first-to-second gap is the number that matters most for lifecycle timing, and it is the same input that should drive your replenishment timing decisions.days_to_second = second_order_date - first_order_date window_base = MEDIAN(days_to_second) * 1.5 - Cross-check with Klaviyo's Average Time Between Orders. If your account qualifies, Klaviyo exposes Average Time Between Orders in predictive analytics, defined as the average number of days between each of a customer's orders. Treat it as a sanity check on your Shopify median, not the primary input. The metric is account wide and averages best across many customers, so do not trust it for any single profile. If it disagrees with your order level median by more than a few days, trust the raw order data.
- Set the send frequency floor. Klaviyo's sending schedule guidance ties the engaged window to cadence: a daily sender's most engaged track is 30 days, while weekly senders sit at 180 days and monthly senders at 275. This exists to keep daily open rates above 15 percent. Your window can never drop below this floor, whatever the repurchase math says.
- Choose the window. Take the larger of the two numbers:
window = MAX(send_frequency_floor, round(median_interval * 1.5)). Round to the nearest window Klaviyo already supports (30, 60, 90, 180, 275) so the segment stays legible to the rest of the team. - Build the segment in Klaviyo. Go to Audience, then Lists & segments, then Create segment. Define it as: What someone has done, Opened Email, at least once, in the last N days, then add an OR condition for Clicked Email, at least once, in the last N days, using your chosen N. Clicks are a stronger signal than opens now that privacy features inflate open counts, so if you want a tighter definition, drop the Opened Email leg and keep Clicked Email only. Save it with the window in the name, for example
Engaged 90d (opened or clicked).
Choosing between the standard windows
The default windows are not interchangeable. Each one fits a different combination of send cadence and repurchase cycle.
| Window | Fits this cadence | Fits this repurchase cycle | Main risk if misapplied |
|---|---|---|---|
| 30 day | Daily senders | Consumables reordered under ~20 days | Suppresses slower buyers still in cycle |
| 60 day | Several sends per week | Median gap around 30 to 40 days | Slight over-mailing of the tail |
| 90 day | Weekly to twice weekly | Median gap around 45 to 60 days | Includes some genuinely lapsed contacts |
| 180 day | Weekly senders | Median gap around 90 to 120 days | Higher share of unengaged, watch open rate |
| 275 day | Monthly senders | Considered or seasonal purchases | Only safe at low frequency |
Why the repurchase cycle, not the calendar, sets the window
An engaged segment exists to answer one question: who is safe to mail without hurting the domain. A copied 30 day window answers that question with a number pulled from a help article, not from your customers. If your median customer reorders every 50 days, a 30 day engaged segment quietly drops every customer who is between purchases and has not happened to open a campaign in the last month. Those are exactly the people a replenishment or browse flow is trying to reach. Aligning the window to the cycle keeps them in the mailable population until they are genuinely lapsed. Sending only to people who are truly engaged is also how you protect reputation, since a single unengaged segment can drag down your whole sending domain.
Troubleshooting
- The engaged segment is empty. Default engaged segments, per Klaviyo's default lists and segments reference, stay empty until you send your first email. If you have been sending and it is still empty, check that the Opened or Clicked Email metrics are actually recording, which requires open and click tracking enabled on your sends.
- Average Time Between Orders is blank. The predictive section requires at least 500 customers with a non cancelled, non zero order, 180 days of history and orders in the last 30 days. If you are below any threshold, skip step 3 entirely and rely on the Shopify median. The same reliability limits are why Klaviyo's predicted values can be wrong for an individual store.
- The median looks implausibly long. You are almost certainly including one time buyers, whose second order never arrives. Filter to customers with 2 or more orders before computing the gap.
- The computed window is below your send floor. The floor wins. A 20 day repurchase cycle does not license a 20 day engaged window if you mail daily; hold at the 30 day track and let cadence, not the cycle, govern.
How to verify it worked
Three checks confirm the window is sized correctly rather than merely changed.
- Segment size delta. Note the member count of the old and new engaged segments. A window that moved from a copied default to a cycle aligned number should change the count in the direction you expect: larger if you widened to match a longer cycle, smaller if you tightened.
- Coverage of buyers in cycle. Build a temporary segment of customers whose Expected Date of Next Order falls within the next window length. A correctly sized engaged segment should contain nearly all of them. If a large share sit outside it, your window is too tight and is excluding people about to buy.
- Deliverability holds. After two or three sends to the new segment, confirm daily open rates stay above the 15 percent line from Klaviyo's schedule guidance and that spam complaint rate stays under 0.1 percent. If open rate falls, the window is too loose for your cadence and should step back one level.