Cash on delivery confirmation
Ask Shopify shoppers to confirm cash-on-delivery orders on WhatsApp before you ship, so you stop paying to send parcels that get refused.
A cash-on-delivery order is the most expensive order you can ship. Nobody has paid yet, so if the shopper changes their mind or never really meant to order, you pay to send the parcel and pay again to get it back.
Cash on delivery confirmation asks the shopper to confirm the order on WhatsApp within seconds of it being placed. Your assistant answers their questions about delivery, the product, or sizing while they decide, and their answer is written straight onto the Shopify order as a label so your packing team only ships orders somebody actually wants.
It is off until you turn it on, and it only ever affects cash-on-delivery orders. Prepaid orders are untouched.
What the shopper sees
They receive one WhatsApp message using the wording you approved, naming them, their order number and total, and what they ordered — including the size, colour, or other option they chose, so they can see it is the right order before answering. Long orders list the first few items and then say how many more there are.
The message offers three choices:
- Confirm Order — you are clear to ship.
- Change Order — they want something different. The order is held and your team is told what they asked for.
- Cancel Order — nothing is shipped and there is nothing to collect.
They can also just reply with a question first. Your assistant answers it from your store's own information, then asks them again to confirm. Asking a question never decides the order either way.
Before you start
You need three things:
- A connected Shopify store. See Shopify.
- A connected WhatsApp business number. See WhatsApp.
- An approved WhatsApp message. WhatsApp only lets a business start a conversation using wording it has approved in advance. You create and submit this in WhatsApp Manager; approval is usually quick.
Fetchply also needs permission to update your orders, so it can put the label on them. If your store was connected before this feature existed, simply open the Fetchply app in your Shopify admin once and approve the updated permissions when prompted.
If any of these is missing, the Cash on delivery screen tells you which one and will not let you switch the feature on. That is deliberate: starting a conversation we cannot finish would leave your team shipping an order the shopper had already cancelled.
Your approved WhatsApp message
Create this on the WhatsApp messages tab of the same Cash on delivery page. Choose Cash on delivery confirmation, let Fetchply write the wording, and submit it — Fetchply handles the category, the placeholders, and the three buttons for you, and shows you when WhatsApp approves it. See WhatsApp messages for the full walkthrough.
The wording carries three details, in this order: the shopper's first name, the order number, and the order total. It looks like this: Hi {{1}}, thanks for your order {{2}}. The total is {{3}}, payable when it arrives. Please confirm so we can ship it.
Once it shows Approved, come back to the Cash on delivery screen and pick it under Approved WhatsApp message.
Approval is not permanent. WhatsApp can pause a message if shoppers react badly to it, and switch it off entirely if that keeps happening. When that happens the Cash on delivery screen says so, shows the message as (cannot be used) in the picker, and holds new orders instead of sending confirmations that would reach nobody. Create a replacement under WhatsApp messages and pick it.
If you replace a message that WhatsApp turned down, the replacement is approved under a new name. You do not have to re-pick it: Fetchply uses whichever cash-on-delivery message is currently approved.
Already built a message by hand in WhatsApp Manager? It keeps working. It stays selectable on the Cash on delivery screen, listed as added earlier. Fetchply cannot check its approval for you, though, so if confirmations stop arriving, check the message in WhatsApp Manager first.
Set it up
Open Cash on delivery
In your Shopify admin, open the Fetchply app, choose Extras, then select Open cash on delivery on the COD verification box. You can also reach the same screen from Settings → Cash on delivery → Open cash on delivery.
Pick your approved message
Choose it under Approved WhatsApp message. Only messages WhatsApp has approved appear in the list. If you have none yet, select Create a WhatsApp message to switch to the WhatsApp messages tab and make one. If the screen still lists a missing prerequisite, resolve that first.
Choose your reminder settings
Pick how long to wait before the first reminder, how many reminders to send (up to three), and how long to keep waiting before giving up. The defaults wait six hours, send two reminders, and give up after two days.
Check your label wording
Orders are labelled COD Awaiting Confirmation, COD Confirmed, or COD Cancelled. Change the wording if your team filters on different words.
Turn it on and save
Switch on Ask customers to confirm cash-on-delivery orders and save. The next cash-on-delivery order that comes in gets a message.
Order labels
Every order in the flow carries exactly one label at a time, so you can filter your Shopify orders list and ship with confidence:
| Label | Meaning |
|---|---|
| COD Awaiting Confirmation | Applied within moments of the order arriving, always before any message goes out. Do not ship yet. |
| COD Confirmed | The shopper confirmed. Safe to ship. |
| COD Cancelled | The shopper cancelled. Do not ship. |
| COD Change Requested | The shopper wants something different. Held for your team. |
If you used the optional extra item offer before, it has been removed. Orders that were waiting on an add-on answer are now treated as confirmed, since the shopper had already confirmed the order itself.
The order itself is left open when a shopper cancels: the label tells your team not to ship it, while leaving you free to change your mind. Cancel or archive the order in Shopify yourself whenever you are ready.
An order nobody answers keeps its awaiting label. It is never quietly treated as confirmed.
Recognising your cash-on-delivery orders
Shopify shows the payment method differently depending on how your store is set up, so Fetchply recognises the common spellings automatically: "Cash on Delivery", "Cash on delivery (COD)", and "COD".
If your store labels it differently, add your own wording under Cash-on-delivery payment names. You can check what your store actually sends by opening a recent COD order in Shopify and looking at its payment method.
If your COD orders show a payment method of Manual, add manual under Cash-on-delivery payment names yourself. It is not recognised automatically, because Shopify also uses "Manual" for bank transfer and pay-by-invoice orders — and telling one of those shoppers their order is payable on delivery would be worse than not asking at all. Add it only if manual payment means cash on delivery in your store.
Seeing your results
In the Shopify app, open Analytics and choose the COD Verifications tab. The tab only appears once you have switched cash-on-delivery confirmation on. You can also open Cash on delivery in your Fetchply dashboard sidebar.
Choose any date range at the top of the Analytics page and the tab follows it. For the period you pick you get:
- total cash-on-delivery orders, with how each figure moved against the period before;
- how many were confirmed, cancelled, or still awaiting an answer;
- a day-by-day chart of confirmations, cancellations, and orders still waiting;
- every outcome side by side, including change requests, orders nobody answered, and orders that were never messaged;
- estimated shipping cost you avoided;
- anything needing your attention, such as change requests or a missing WhatsApp message.
The shipping figure needs one number from you: your average shipping cost, which you enter on the Cash on delivery screen. Until you do, the card says so rather than showing a zero, because we would otherwise be inventing a saving you cannot verify.
Troubleshooting
I cannot find the COD Verifications tab. It appears on the Analytics page only once Ask customers to confirm cash-on-delivery orders is switched on and saved. If you turn the feature off, the tab disappears from Analytics, but nothing is deleted — open Cash on delivery in your Fetchply dashboard sidebar to look back at earlier periods, or switch the feature on again to bring the tab back.
The tab says there are no cash-on-delivery orders yet. Only orders placed after you switched the feature on are counted, and only those inside the date range chosen at the top of the page. Widen the range, or wait for your next cash-on-delivery order.
The comparison arrows show no change. Each figure is compared against the period immediately before the one you selected. When that earlier period had no cash-on-delivery orders there is nothing to compare against, so you will see no movement until you have two periods of activity.
The totals do not match my Shopify orders list. Only orders Fetchply recognised as cash on delivery are counted here. If your store labels the payment method with wording Fetchply does not know yet, those orders are skipped — open one in Shopify, read its payment method, and add that exact wording under Cash-on-delivery payment names.
A cash-on-delivery order did not get a message. Check the Needs your attention card on the COD Verifications tab, which names the reason. The most common one is that your store labels COD differently from the spellings Fetchply knows — open the order in Shopify, read its payment method, and add that exact wording under Cash-on-delivery payment names. If it says Manual, see the note above before adding it. Note that only orders placed after you switched the feature on are included; your existing orders are never messaged.
The screen says Fetchply needs permission to update orders. Open the Fetchply app from your Shopify admin and approve the updated permissions. Until then, cash-on-delivery confirmation stays off and everything else keeps working normally.
The shopper answered, but the order carries no label — or still the old one. The shopper's answer is recorded the moment they tap, and the label is put on the order straight after. If Shopify is briefly unreachable at that moment, Fetchply keeps retrying on its own and the label catches up within a few minutes; you do not need to do anything. The COD Verifications tab always shows the real answer, so use that if you need to act before the label appears. If a label is still missing well after that, check that the Fetchply app in your Shopify admin is not waiting for you to approve updated permissions.
The Cash on delivery screen says my WhatsApp message can no longer be used. WhatsApp has paused, switched off, or turned down the message you chose, so it will not send it any more. New cash-on-delivery orders keep their awaiting label and are listed in Needs your attention rather than being messaged, because a message WhatsApp refuses reaches nobody. Open the WhatsApp messages tab, create the cash-on-delivery confirmation again, and wait for approval. Orders that were held are picked up once a usable message is in place, as long as they are still inside the deadline you set under Give up after.
The Cash on delivery screen says WhatsApp is not delivering your confirmations. Your setup is fine and your number is connected — WhatsApp is accepting the confirmations and then not delivering them. That happens when the WhatsApp Business account has no working payment method, because WhatsApp charges for conversations a business starts and every confirmation is one. Replies to shoppers who message you first keep working, which is why nothing else looks wrong.
Add a payment method in Meta Business Settings under Billing and payments, and set it as the default card even if it is the only one. Select Check WhatsApp status on the banner to confirm. Orders placed meanwhile keep their waiting label, so nothing is shipped unconfirmed, and any still inside your Give up after window are messaged once it is working again.
You are also notified in Fetchply when this happens, so you do not have to be on this screen to find out.
The screen says my WhatsApp message needs correcting. The message you chose does not fit what a confirmation has to say. It must carry three details in this order — the shopper's first name, the order number, and the order total — offer the three Confirm, Change and Cancel buttons, and be used in the language it was approved in. WhatsApp does not translate a message or substitute another language, so this has to match exactly. The simplest fix is to let Fetchply create the message for you on the WhatsApp messages tab, which sets all of that up.
You will also see this if an order has no total on it. Nothing is sent for that order, because WhatsApp refuses a message with an empty detail in it.
The message the customer received does not match the wording I approved. Check the Approved WhatsApp message picker on the Cash on delivery screen actually points at the message you edited, and that the message shows as approved on the WhatsApp messages tab. If you changed the wording, it has to be submitted and approved again before customers see the new version. Shoppers who messaged you in the last day are sent your approved wording as an ordinary reply, so both routes now read the same.
The customer's name is missing from the message. The name comes from the order's delivery address, then the customer record. If neither has a first name, the message uses a neutral greeting rather than leaving a blank gap. Ask for a name at checkout if this happens often.
I can see a {{1}} or similar in the message.
That means a placeholder in your approved wording has no matching value. Open the WhatsApp messages tab and check the wording only uses the numbered placeholders listed above it, then submit it again.
Needs your attention says a confirmation did not reach the customer. WhatsApp accepted the message and then reported afterwards that it could not deliver it. That happens when the number is not a working WhatsApp account, when the shopper has blocked your business, or when WhatsApp stopped the message on its way out. Those orders stop being chased — sending reminders about an order nobody was ever told about is worse than sending nothing — and they keep their awaiting label so your team can follow up another way.
Not all of the ordered items are listed. WhatsApp limits how long a message can be, so long orders show the first few items and then how many more there are. The full order is always in your Shopify admin.
The screen says I need an approved WhatsApp message. WhatsApp does not allow a business to open a conversation with free wording. Switch to the WhatsApp messages tab, create the cash-on-delivery confirmation, and submit it for approval — it usually takes a few minutes. Then come back to Confirmation and pick it. Shoppers who happen to have messaged you in the last day can be reached without one, but most cannot.
Some orders got a confirmation and others did not, on the same day. WhatsApp treats the two situations differently. A shopper who messaged your business in the last day gets an ordinary reply. Everybody else can only be reached with your approved message, so anything wrong with that message affects only the second group — which is why the problem can look intermittent. Needs your attention names the reason for the orders that were not messaged.
WhatsApp is limiting how much my number can send. Confirmations are held and tried again shortly, not written off, for as long as the order is inside the deadline you set under Give up after. This is temporary and clears on its own. The same applies while WhatsApp is doing maintenance on your account, or while it is spacing out messages to one particular shopper.
The message list here is empty. Only approved messages appear. If yours still shows Pending on the WhatsApp messages tab, wait for it to be approved and then come back.
The shopper has no phone number on the order, or it is missing a country code. Nothing is sent and the order keeps its awaiting label, so your team can follow up by another route. A number saved in local form — for example starting with a single 0 — is not used, because without a country code it could reach a different person entirely. Ask for a phone number including the country code at checkout if this happens often.
The shopper never answers. They get your configured reminders, then the order is left unconfirmed with its awaiting label. Nothing is shipped on the strength of silence. They can still reply later and the conversation carries on.
The shopper asks a question instead of choosing. Your assistant answers from your store's information and asks again. If it does not know something — an exact delivery date, for instance — it says so rather than guessing, and offers to pass the question to a person.
One shopper has two cash-on-delivery orders open. Every message names its order number, and each set of buttons only ever applies to the order it was sent about, so confirming one never touches the other.
The shopper tapped a button from an older message. They are told the current state of that order and what they can still do, rather than an old choice being applied to a decision that has moved on.
I cancelled the order in Shopify myself. Fetchply stops chasing the shopper immediately and closes the confirmation. No further messages are sent.
WhatsApp disconnected. No confirmations are sent while it is disconnected, and the reason appears in Needs your attention. Reconnect your number and new orders resume; orders still inside their deadline can still be answered.
My message allowance ran out. Confirmations and reminders are held rather than sent, and are checked again periodically. They resume on your next renewal or as soon as you add more messages, as long as the order is still inside the deadline you set under Give up after. Orders that arrive while you have no allowance left are listed in Needs your attention with the reason.
I uninstalled and reinstalled the app. Your settings and results are kept for a short while, so a quick reinstall picks up where you left off. You may need to approve permissions again.
Good to know
- Only cash-on-delivery orders are touched. Prepaid orders never receive a confirmation message.
- A shopper is never messaged twice about the same order, and never gets more reminders than you configured.
- The whole conversation appears in your Fetchply inbox, so you can read it and step in at any point. While one of your team is handling a chat, automatic messages stay out of the way.
- A shopper who asks not to be contacted stops receiving reminders.
- Confirmation messages count towards your plan's message allowance.