To get repeat purchases on Shopify without constant discounts, message customers about the next thing they actually need (a refill, a compatible accessory, a useful tip) at roughly the time they'll need it. Exclude anyone who already reordered or has an open complaint. Test a discount only as an experiment, and measure profit after costs rather than revenue or clicks.
Why constant discounts backfire
A discount isn't a reason to buy. It's a reason to buy now instead of later. Used on every campaign, it does two bad things: it eats margin on orders that would have happened anyway, and it teaches your regulars that full price is for people who don't wait.
I'm not against discounts. I'm against using them as a substitute for relevance. If the product in the message isn't something the customer wants, 15% off just makes the irrelevant thing slightly cheaper.
Start with the customer's next need
Before you write a word, finish this sentence: "People who bought X will probably want Y because..."
Some examples:
People who bought a refillable soap dispenser will want refills, because the starter bottle runs out.
People who bought a pour-over coffee set will want filters, because they come in packs of 40.
People who bought a leather bag might want a leather conditioner, because the care guide says to treat it every few months.
People who bought a dining table probably don't want anything from you next week. Leave them alone.
If you can't finish the sentence honestly, don't run the campaign for that product. Run it for one where you can.
Check compatibility before you build the audience. Recommending a refill that doesn't fit the version they own is worse than not messaging them. Our guide to helpful cross-sell recommendations covers how to map products to accessories without guessing.
For a one-off retention send, start with the eligible repeat buyers you can actually identify in Shopify, or upload an opted-in spreadsheet to WhatFlow Team Inbox. Personalize an approved template and test the product link before scheduling. If someone replies with a question, pick up that conversation in the same inbox instead of sending another automatic reminder. See the broadcast setup and checks.
Pick timing you can test
Estimate how long the first product lasts. Use what you know (the bottle holds 500ml, a typical household uses about 100ml a week) and what your order history shows (repeat buyers tend to come back around week five).
Then treat that estimate as a hypothesis, not a fact about every customer. A family of six uses soap faster than someone living alone. Someone who bought it as a gift may never need a refill.
Start with one product and one timing rule. If the replies are mostly "I've still got loads", you're early. That's good feedback even if few people bought. For consumables specifically, our guide to replenishment reminders goes into intervals and stop rules in more detail.
Exclude people for clear reasons
Before every send, remove:
Anyone who already bought the follow-up product recently.
Anyone with an open return, refund or complaint.
Anyone who opted out of marketing messages.
Anyone in a region you can't ship the product to.
Nothing makes a store look careless like "Running low? Reorder now!" arriving an hour after the customer reordered. If you run reminders from more than one app, decide which one owns the audience so they don't both fire.
Repeat-purchase message examples
Refill, no discount:
Hi {{1}}, it's been about five weeks since your {{2}} arrived, so you might be getting near the end of the starter bottle. Refills are here: {{3}}. Not sure which size fits your dispenser? Reply with a photo and we'll tell you.
Accessory based on use:
Hi {{1}}, quick tip for your leather tote: a light conditioner every 3 months keeps it from drying out, especially in summer. We stock the one we use in the workshop: {{2}}
Content-first, product second:
Hi {{1}}, a few people asked how to get a stronger brew from the pour-over set. Our 2-minute guide is here: {{2}}. Filters are restocked if you need them.
Notice there's no "Hurry!" and no "You've run out!". You don't know they've run out. "You might be getting near the end" is honest, and customers can tell the difference.
These need opt-in and, outside the 24-hour customer service window, an approved WhatsApp marketing template. Run the campaign preflight checklist before sending to a full list.
When a discount does make sense
Use one when you're testing whether it adds anything. Split your audience: half get the plain message, half get the plain message plus 10% off. Compare profit, not revenue. If the discounted group buys a little more but makes less money, you have your answer.
Other times a discount earns its place:
Clearing a product you're discontinuing.
Getting a customer to try a second product line for the first time.
A genuine seasonal event your customers expect (and that has a real end date).
If you want to give regulars something without a coupon, there are better options. Early access to a restock, a free sample of the new scent in their next order, free shipping on the refill, or a personal "we kept one aside for you" when a limited batch comes in. These cost less than a blanket 15% and feel more like being looked after than being marketed to. Our guide to treating VIP customers on WhatsApp has more ideas along these lines.
Make room for replies
Product-based messages get more replies than discount blasts. People ask whether the formula changed, whether the strap fits the older bag, whether there's a subscription. That's good. It means they're considering it.
Someone has to answer, though. WhatFlow's shared team inbox lets you assign these to whoever knows the product, and there are no seat fees, so bringing in the person who actually knows which refill fits which dispenser costs nothing extra. Saved replies help with the common questions. Our guide to saved replies that don't sound robotic has examples.
Free plan available
Run WhatsApp for your Shopify store with WhatFlow
Templates, COD confirmation, Shopify Flow automations and a shared team inbox with no seat fees. Every feature is included on every plan, including Free.
A repeat-purchase campaign isn't a win because it shows revenue in a dashboard. Count:
Orders from the campaign audience in a fixed window (say 14 days).
Profit after product cost, discount, shipping and message cost.
Returns from those orders.
Replies, opt-outs and blocks.
Attribution flatters every campaign, because some of those customers would have reordered anyway. If you have enough volume, keep a random holdout group that gets no message and compare. Meta charges per delivered template message, so check current WhatsApp pricing for your customers' countries and include it in the sum.
The next iteration should usually be a sharper audience or better timing, not a bigger discount.
Frequently asked questions
How do I increase repeat purchases without discounts?
Message customers about the next thing they genuinely need: a refill, a compatible accessory, or advice that helps them use what they bought. Time it to the product's use cycle and exclude people who already reordered.
Do repeat-purchase campaigns need a discount to work?
Not usually. The right product at the right time often does the job, and you can test a discount later against a no-discount version to see whether it actually adds orders.
What should I measure in a repeat-purchase campaign?
Profit after discounts, message costs and returns, plus replies and opt-outs. Revenue and click counts alone hide whether the campaign made money.