Remind customers to restock products that are about to run out. This flow works for any product that customers buy on a predictable cycle — shampoo, diapers, laundry pods, contact lenses, pet food, vitamins, coffee pods, or anything else with a roughly fixed replenishment interval.
What this flow does
When a customer receives an order containing a replenishable product, Maestra schedules a reminder campaign timed to land shortly before that product is expected to run out. The reminder can recommend the same product (so the customer can reorder their favorite) and, optionally, similar alternatives.
Key things to know before you start
Three characteristics shape how this flow is built:
-
You’ll need to extend your product feed. The flow relies on knowing how long each product lasts, so you’ll need to send a shelf-life or replenishment interval for every product in your feed.
-
The flow runs per line item, not per order. Replenishment timing is tracked at the product level. If a single order contains two qualifying products, the flow triggers twice — once for each line item — and the customer can receive two separate reminders timed independently.
-
You can skip the feed change if you prefer. As an alternative, you can pass the next purchase date directly in a custom field on the order line item. This is useful when replenishment timing depends on something other than a fixed shelf life (for example, a subscription cadence or a quantity-based estimate).
Step 1. Extend the product feed
Add an <expiry> parameter inside each <offer> element in your YML feed. The value uses ISO 8601 duration format:
| Replenishment interval | Value |
|---|
| 1 year | P1Y |
| 2 months | P2M |
| 3 days | P3D |
| 4 hours | PT4H |
Set the value to how long the product typically lasts a customer between purchases — not its physical shelf life on a warehouse shelf.
If you’d rather not modify the feed, send the next purchase date in a custom field on the order line item instead. The flow can read either source.
Step 2. Create the reminder campaign
Build the campaign you want to send in your preferred channel — email, SMS, Viber, mobile push, or web push. Make it an automated (transactional) campaign so the flow can trigger it on demand.
What to include in the campaign
- A clear reminder that the product is about to run out
- A direct link or one-click reorder button for the original product
- Optionally, recommendations for similar products so the customer can either restock their favorite or try an alternative
A/B test the “same product only” version against a version that also shows alternatives. Different categories respond differently — replacements work well when customers are open to trying new things, while a single-product reminder tends to win for habitual repurchases.
Step 3. Build the flow
Trigger: Product in order delivered
Start the flow from the Product in order delivered event. A few things to know about how this event behaves:
- It fires only once the order reaches a delivered status.
- It can fire again on the same line item if something about that line item changes after delivery.
- It also fires on orders added retroactively, as long as those orders still meet the freshness conditions you set.
Delay until the reminder window
Add a wait step that holds the customer in the flow until shortly before the product is expected to run out. A common choice is one week before the expected run-out date, but you can tune this to whatever lead time fits the category — coffee drinkers may want a couple of days, while annual products may warrant a month.
Cap the send window to your normal sending hours so reminders don’t go out in the middle of the night.
Check conditions
Before sending, verify that the customer:
- Has an active subscription for the channel you’re using
- Has a valid contact (email address, phone number, or push token) for that channel
Customers who fail these checks exit the flow without receiving the reminder.
Send the campaign
Send the reminder campaign you built in Step 2. Pass the original product (and any recommended alternatives) into the campaign so the content is personalized to what the customer actually bought.
Cap how often a customer can enter
In the start block, set a maximum frequency per customer. This prevents a customer who places several qualifying orders in a row from getting flooded with reminders.
Recommendations for the campaign content
Along with the product that’s running out, consider showing alternatives. This gives customers two options in one message — restock the product they already like, or try something similar. Whether alternatives lift or hurt performance depends on the category, so validate the choice with an A/B test before rolling it out everywhere.