All posts

Product

Four days of chasing unpaid orders on WhatsApp, and what came back

By Clement, founder of ReplaiPublished Updated 5 min read

Quick answer

On 13 September we switched on WhatsApp messages for failed and pending payments on our own WooCommerce store. In four days it chased ten unpaid orders and five of them paid, worth MYR 921. Three paid within the hour and two paid later the same day, which is the part worth paying attention to. The other five were messaged once and left alone.

  • Ten unpaid orders chased in four days, five paid, MYR 921 recovered.
  • Three payments landed 2, 17 and 55 minutes after the message. Two took 8 and 15 hours.
  • Every order got exactly one message. None was chased twice.
  • Only three of the ten order statuses are switched on. Fewer messages, not more.
  • Recovered revenue counts orders paid within 7 days of being chased, which is correlation and is treated as such.

We run Replai on our own shop. On Sunday 13 September we switched on the part that chases unpaid orders, and left it alone.

This is what four days produced. It is a small sample and it is our own store, so read it as one data point rather than a benchmark.

Update at 13 days (26 September 2026). The same setup, still untouched, had chased 49 unpaid orders. 17 paid within a week of the first message, for MYR 1,924. Half paid within an hour (the median was 55 minutes) and 16 of the 17 within a day. From 14 September, orders waiting for payment also get one reminder 24 hours later if nothing has changed; failed payments still get a single message. The table below is still the first four days; the full thirty-day write-up follows around 13 October.

The numbers

Ten unpaid orders were chased. Five paid, for MYR 921.

#Chased fromMessage sentAmountPaid after
1Failed payment13 Sep, 12:59MYR 109not paid
2Failed payment13 Sep, 21:05MYR 224not paid, later cancelled
3Failed payment13 Sep, 23:19MYR 219not paid
4Failed payment14 Sep, 13:58MYR 21755 min
5Failed payment14 Sep, 16:46MYR 21817 min
6Awaiting payment14 Sep, 22:15MYR 1192 min
7Failed payment15 Sep, 11:36MYR 1737 h 52 min
8Awaiting payment15 Sep, 13:21MYR 168not paid
9Awaiting payment15 Sep, 16:49MYR 19415 h 27 min
10Awaiting payment16 Sep, 08:00MYR 149not paid

Times are the shop's own local time. Every order in that table got one message. Order 8 also received the reminder described above, a day later.

Five of ten chased orders were paid, plotted on a logarithmic scale of time from message to payment: 2 minutes, 17 minutes, 55 minutes, 7 hours 52 minutes and 15 hours 27 minutes. The other five were not paid, one of them cancelled. MYR 921 recovered in four days.
Every payment landed inside a day of the message. Three landed inside an hour.

The gaps are the interesting part, not the total

A recovered total on its own proves very little. Any tool can count orders that were chased and later paid, and quietly take credit for the ones that were always going to be paid.

The timings are harder to dismiss. Those five orders had been sitting unpaid. Then a message arrived, and they were paid 2, 17 and 55 minutes later, and in two cases 8 and 15 hours later. Someone who had already decided to pay does not cluster that tightly around a notification they did not know was coming.

The two-minute one is the clearest. That customer was almost certainly still holding their phone.

The fifteen-hour one is the weakest, and worth saying out loud. The message went out at 16:49 and the order was paid at 08:17 the next morning, which looks like someone who saw it in the evening and dealt with it over breakfast. Plausible, but not proof. We count it the same way we count the two-minute one, because keeping only the flattering half of a number is how the number stops meaning anything.

What it actually sends

Nothing clever. The failed-payment message is four lines: what happened, which order, a link to pay, and an invitation to reply if something is wrong.

Hi there, your order #425050 could not be processed successfully.

If you would like to continue, tap PAY on the order below.

The invitation to reply matters more than it looks. A failed payment is often a question in disguise: the card was declined, the bank blocked it, they want to pay a different way. Those replies land in the same inbox and the assistant answers them with the order already in front of it.

Three statuses, not ten

There are ten order statuses available. We have three switched on: failed payment, pending payment and on hold.

That is deliberate. The statuses that recover money are the ones where the customer meant to buy and something got in the way. Announcing every internal state change is how a shop teaches people to mute its number, and then the message that mattered does not arrive either.

What we are not claiming

Five of the ten did not pay. A 50% rate on ten orders is not a rate, it is a coincidence waiting to regress. Ask again at sixty.

One of them cancelled. Order 2 was chased, ignored, and later cancelled outright. A recovery message does not rescue a customer who has changed their mind, and it should not try to.

Recovered revenue is correlation. The number counts orders paid within seven days of being chased. We chose seven rather than thirty precisely because a long window flatters the total, but it is still not proof.

Those five will not be chased again. One reminder is a service. A second is a nudge. A third is the reason people block a number, and it is the same number our actual customers write to.

If you want to try the same thing

Everything above runs on Replai's order messages. The setup is a WooCommerce or Shopify connection and then picking which statuses are worth a message. Sending is off and test mode is on when you connect, so every message goes to your own phone with a [TEST] tag until you decide otherwise.

Two guides cover it end to end: connecting the store and setting up the messages, including the abandoned cart and unpaid order side that this post is about.

We will publish the same numbers again at thirty days, including the months where it recovers nothing.

Frequently asked questions

How is recovered revenue calculated?

An order counts when it was chased and then reached a paid status within seven days. The window is deliberately short, because a long one would credit recovery for orders that were always going to be paid. It is still correlation rather than proof, which is why the time between the message and the payment matters more than the total.

Does a message really change whether someone pays?

On this evidence it moves the timing at least. Five orders that had been sitting unpaid were paid 2 minutes, 17 minutes, 55 minutes, 8 hours and 15 hours after the message arrived. The three inside the hour are hard to explain as coincidence. The two longer ones are weaker evidence and we count them the same way, because picking only the flattering ones is how a number stops meaning anything.

How many times does it chase the same order?

Once. All ten orders here received exactly one message. One reminder is a service, a second is a nudge, and a third is the reason people block a number. It is the same number real customers write to, so the limit is not negotiable.

Which order statuses should I switch on?

Fewer than you think. We run three of the ten: failed payment, pending payment and on hold. Every extra message is a chance for someone to mute the number, and the statuses that recover money are the ones where the customer meant to buy and something got in the way.

What about customers who simply changed their mind?

They ignore it, and that is a fine outcome. Five of the ten we chased have not paid, one of them cancelled outright, and none will be chased again.

Does this need the WhatsApp Business API?

No. The messages go from the shop's own WhatsApp number as a linked device, the same way WhatsApp Web works, so there is no Meta application, no template approval and no per-message fee. The trade-off is that the number has to be treated carefully, which is why the pacing and the opt-out handling are not optional.

Sources

  1. WhatsApp Business Platform pricing, Meta for Developers, 2025-07-01

Keep reading

See it answer your own customers.

Pair your number, paste in what you know, and message it from another phone. Ten minutes, no card.

Start free trial