What is a replenishment flow? Reorder before the product runs out

Define replenishment flows vs thank-you/cross-sell, estimate cadence from last purchase and category, build email/SMS journeys with repurchase exits, Iran examples.

Sara Moradi

Designs customer journeys and marketing automation campaigns for retention and lower churn.

September 14, 2026 · 7 min read

Also available in فارسی

فلو replenishment چیست؟ یادآوری سفارش قبل از تمام‌شدن محصول

What is a replenishment flow?

A replenishment flow is automation timed to the consume cycle: after a purchase, you estimate when the product will run out and send an email or SMS before it runs out — not after, and not as a “thanks for your order” note.

One-line answer for eCRM teams: replenishment = reorder reminder on consume-cycle cadence; thank-you / cross-sell = post-purchase value or adjacent offer in the purchase window. Do not mix them.

If you only send order thanks and “similar products,” you do not have a replenishment flow yet. First learn when buyers of that category typically need more — then build a path with an exit on repurchase.

Where this sits in retention: What is lifecycle marketing? Onboarding, retention, and win-back.

Why it is not thank-you or cross-sell

DimensionReplenishment flowThank-you / post-purchasePost-purchase cross-sell
JobReorder the same/similar item before emptyGratitude, shipping expectations, trustAdjacent or upgrade offer
TimingNear the end of the estimated consume cycleHours to a few days after purchaseUsually the same post-purchase window
SignalLast purchase + category + cadenceorder_completed eventPurchased cart/category
ExitOn repurchase of that goalEnd of a short seriesAdjacent click/purchase or cap
Failure modeToo early/late → ignore / STOPDiscounting the thank-youNoise stacked on welcome

Simple rule: if you would send the same copy with no sense of “almost empty,” it is not replenishment.

How to estimate cadence from last purchase + category

You do not need magical prediction. Three layers are enough:

  1. Last purchase of the same SKU or category (order_completed + category/SKU attributes)
  2. Median repurchase gap for that category over the last ~90 days (among people with at least two purchases)
  3. Safety buffer — remind a bit earlier than the median (about 70–85% of the cycle) so the message arrives before empty

Starter table for Iranian ecommerce

CategoryStarter cadence (practical default)Suggested bufferIran note
Coffee / powder / capsules14–30 days by pack size3–5 days earlyPacks are not 100% consumed; separate repeat buyers first
Skincare (daily serum/cream)28–45 days5–7 days earlyDo not confuse seasonal sales with consume cycle
Pet food7–21 days by bag weight2–4 days earlyStock and pet size matter; keep SKU precise
Supplements / course vitaminsOften ~30 days~5 days earlyChannel consent only; no medical claims
Household consumables20–40 days4–6 days earlyAvoid blasting “all cleaners”

How to improve the number: for each category, compute the median gap between purchase 1 and purchase 2; strip tiny gaps (double orders) and extreme longs (one-time buyers). If data is thin, start with the table above and recalibrate after 60–90 days.

Email/SMS journey structure with exit on repurchase

Leadara runs on events, segments, journeys, email, and SMS. A healthy pattern:

  1. Clean events: order_completed with category, sku, quantity when available
  2. Entry segment: buyers of category X still inside the replenishment window + channel consent + no repurchase of that goal yet
  3. Wait until the reminder point (category cadence, not brand calendar)
  4. Touch 1 — soft email: “If you’re running low, here is the same product/stock link” — no deep discount for everyone
  5. Short wait (2–4 days)
  6. Touch 2 — SMS or short email only for consented people who did not convert on touch 1
  7. Conversion exit: on order_completed for that SKU/category (or stated goal) — kill the path
  8. Caps: max 2–3 touches per cycle; suppress against welcome and abandoned cart

Timed blast vs behavioral path: Journey vs campaign in marketing automation.

Touch table

TouchChannelMessageCondition
0Wait to ~75% of cycleAfter purchase
1EmailStock reminder + same product/category linkNo repurchase yet
2SMS or emailShort shortcut / stock nudgeConsent + no conversion after touch 1
ExitStop pathGoal order_completed

Do not merge welcome with replenishment; welcome is activation, not “your coffee is empty.” Keep welcome separate: Welcome email + SMS series.

Iran examples: coffee, skincare, pet food

1) Online coffee shop

  • Customer buys a 250g bag; repeat buyers often return every 18–25 days.
  • Segment: last coffee purchase 18–22 days ago + no new coffee order.
  • Email around day ~19: same SKU link + two nearby options (not a 30% off for everyone).
  • SMS around day ~22 only for SMS opt-ins.
  • Exit on any coffee-category order_completed.

2) Skincare brand

  • 30ml serum; assume ~35-day cycle, remind on day 28.
  • Copy is about “running low,” not “end-of-season sale.”
  • If they bought a night cream in between, do not auto-exit the serum path unless your goal was “any skincare” — write the goal on day one.

3) Pet-food store

  • 3kg bag; derive cadence from bag weight × rough consumption or from median repurchase of that SKU.
  • SMS is often higher value here because empty is real urgency — but only with separate SMS consent and a hard cap.
  • Do not promise warehouse stock in copy unless you truly sync it; a product link is enough.

Common mistakes

  • Calling every post-purchase email “replenishment”
  • Reminding on day 2 for a 30-day product
  • Deep discount on the first touch for everyone
  • No exit on repurchase → “are you empty?” after they already reordered
  • Treating email consent as SMS consent
  • Weekly blast of “consumables” instead of per-person cadence
  • Mixing win-back (already lost) with replenishment (still in cycle)

Checklist for this month

  1. Written definition: which paths are thank-you, which are replenishment
  2. Category/SKU attributes on order_completed
  3. Starter cadence table for your top 3 categories
  4. One journey with wait + email + repurchase exit
  5. SMS only for consented buyers on touch 2
  6. Suppress against welcome and 24–48h cart flows
  7. After 60 days: compare median repurchase gap to your starter assumption

FAQ

What exactly is a replenishment flow?

An automated path that starts after purchase, waits until near the end of the consume cycle, sends a reorder reminder, and stops when that goal is repurchased.

Is it the same as a post-purchase thank-you email?

No. Thank-you closes the purchase window; replenishment serves the next empty-window.

How do we set cadence with little data?

Start with category defaults (table above), measure repeat buyers separately, then replace the assumption with your median after a few weeks.

How many touches are enough?

Usually two per cycle; a third only if consent and caps allow and there is still no purchase.

Is SMS required?

No. For truly time-sensitive empties (pet food, heavy coffee use) a shortcut SMS helps — only with separate consent.

What if the customer buys early?

The order_completed exit must kill the path; otherwise you burn trust.

What Leadara blocks support this flow?

Events, segments, journeys with waits/branches/exits, email and SMS. You compose cadence logic with those blocks.

Should we send everyone the same fixed calendar date?

Preferably not. Even with a category cadence, each person’s clock starts from their own purchase date — not “every Monday.”

Bottom line and next step

Replenishment flow = reorder reminder before empty on the consume cycle, with a repurchase exit — not thank-you and not cross-sell. This month, pick one top category (coffee, skincare, or pet food), write a cadence, ship one email journey with a purchase exit, add SMS only on touch 2 with consent, and judge success by repurchase rate and STOP — not by thank-you opens.

Keep reading