Time every reorder touch to the gap customers keep, measured in your order file.
Your replenishment flow fires on a delay somebody typed in. For example, the label says sixty days, so the template nudges at day 55. Customers skip days, travel and keep a spare in the drawer, and the order file shows them reordering later. A nudge that lands while they still have product teaches them the mail isn't for them. When the right day comes, they skip it.
The label interval is a claim about dosage. It assumes the customer opens the package the day it arrives and uses it as directed. The number to time against is the Kept Interval. It's the median days from first to second order, by first product, from your order file.
Group by first product, because one interval for the catalog averages clocks that don't match. A thirty-serving tub and a ninety-day bottle don't run out together. Use the median, since a few customers who came back after a year drag a mean to a date that serves nobody. In accounts I've audited, the kept gap often runs longer than the label.
For every customer whose first order is at least a year old, take the date of the first order, the date of the second, and the product on the first. The age filter isn't optional. Customers who first bought last month can only have come back fast, and including them pulls the median early.
If you need recent customers in the read, have an analyst fit a survival curve that treats not-yet-returned customers as still waiting rather than dropping them. And don't trust a product's median on fewer than about 50 repeaters. Below that, time the flow off the product class.
Take the 25th and 75th percentiles of the same gaps. The middle half of your repeaters came back between them, and the width tells you how many touches the flow needs. The full pull is in For Your Analyst.
Put three reminders on the measured number: one at three-quarters of the Kept Interval, one on it, and one at a third past it. The first lands while there's product left, so shipping arrives before the runout. The second meets the median customer on the day. The third catches the slow half, and after it the customer leaves replenishment.
Take an invented product with a Kept Interval of 60 days and a 75th-percentile gap of 75 days. The reminders go at day 45, 60 and 80.
One timing error sits between two flows, so neither flow looks wrong on its own. Call it the Early Winback. It's any winback that fires before your last replenishment touch, and it calls a healthy customer lapsed. In one account, the winback fired at day 45 while replenishment fired at day 70. The brand declared customers lost 25 days before it reminded them to reorder.
It happens because the winback goes up first, from a template's default delay. The replenishment flow arrives later, built by someone else. A winback usually carries a code, so a customer who'd have reordered at full price learns to wait for one.
The fix is one rule for every winback. It fires after the 75th-percentile first-to-second gap for that entry product, and never before the last replenishment touch. In the invented example, that means after day 80.
A reminder only works on a customer with enough product to run out of. A sample, a sachet or a two-week supply mostly won't reach a runout date, so there's no day for the reminder to meet. Ask whether your entry offer contains enough to run out. If it doesn't, fix the offer before you write a reminder.
A new brand has no pairs to pull. A zero-to-one program starts on a written, dated assumption, the way a launch has to, and swaps in the order file's median once about 50 repeaters exist. Power Provisions, a protein ramen brand, produced its first $100K in email and SMS revenue inside 30 days (platform-reported). Mike's Mighty Good is the twelve-month version of the same job: $500K+ across a year (platform-reported).
Over a year, the work shifts from building to upkeep. The interval gets re-measured as the product mix changes, and a customer who switches flavors starts a new clock.
Klaviyo's predictions switch on once you have about 500 customers with orders, six months of history, recent orders, and some three-time buyers. Each profile then gets an expected date of next order, estimated catalog-wide.
The Kept Interval by entry product is sharper, because it keeps each product's clock separate. Treat the predicted date as a second opinion. Use it, check it against your own medians, and don't let it set a flow delay on its own.
The first is no reason. The reminder says it's time to reorder and attaches nothing, when the customer needed the size, the shade or the routine said back to them. The second is the wrong reason: a discount code on the first reminder. It converts this month and teaches the customer to wait, so every full-price reminder after it reads as notice that a code is coming.
Timing makes both worse. A reminder that lands with more than a third of the bottle left reads as a sales push, whatever it says.
Your median first-to-second gap by entry product lands within a week of the label interval. Your timing is already right; spend the hour on the offer.
This is one chapter of The Second Order, which is free and readable in full on a single page with no form in front of it.