COD Confirmation
Confirm cash-on-delivery orders on WhatsApp before you ship — with reminders, order tags, risk levels and a support button.
| 🛒 New COD order | ⚠️ COD Unconfirmed | High |
| ✅ Confirms | ✅ COD Confirmed | Low |
| ❌ Cancels | ❌ COD Cancelled | — |
One message, two buttons — and the Shopify order updates itself from whatever the customer taps. No setup needed for the tagging.
This is the automation most stores install Wapify for. Cash-on-delivery orders are placed with nothing at stake, so a meaningful share of them are never going to be accepted at the door — and every one you ship blind costs you the courier fee both ways. Asking the customer to confirm on WhatsApp before you ship turns that guesswork into a yes or a no.
What fires it
A new order whose payment method is cash on delivery. Wapify matches the order's payment gateway against the usual COD names — cash_on_delivery, cod, cash, pay_on_delivery, cash-on-delivery, الدفع_عند_الاستلام — case-insensitively. If your store uses a custom gateway name, set the COD gateway override so it's recognised.
Each order gets exactly one confirmation, and it's sent once — reopening or editing the order doesn't re-send it.
When to send
By default the message goes out immediately. You can hold it for up to 12 hours, in one-hour steps.
When to send
How long to wait after the order is placed before the confirmation goes out.Immediately is right for most stores — the customer just checked out, so the message arrives while the order is still on their mind. A delay is useful if you batch-process orders, or if you want a chance to catch obvious mistakes before the customer is asked to commit.
COD Confirmation is deliberately exempt from quiet hours. It's the one message that directly answers something the customer just did, and holding a 3am order until 11am leaves it unshipped for hours. Its reminder, on the other hand, does observe quiet hours — nobody needs chasing at 5am.
What the message says
The confirmation lists what the customer needs to check before the courier arrives: the delivery address, the number of items, and the total to have ready. Three things are bolded and no more — the address, the amount, and the inspection policy — because those are the three that cause a delivery to be refused at the door.
Product inspection on delivery
A checkbox that swaps one bolded sentence. The help text under it quotes the exact wording that will be sent, in the language it will be sent in, so you're never guessing.
✅ تقدر تعاين المنتج عند الاستلام.
🚫 للأسف غير متاح معاينة المنتج عند الاستلام.
Set it to whatever your couriers actually do. This is the sentence the customer will quote back at the door, and a mismatch between it and reality is how a delivery turns into an argument.
Mention your return policy
Off by default, because it's a promise to the customer and shouldn't be something you make by not looking. Switch it on and the message carries one extra line:
The line adapts to what you allow and for how long — in both languages, with correct Arabic number agreement.
Two choices control it. Customers can — return, exchange, or both — and Within, a window from 1 to 60 days (14 by default). Picking neither action is the same as switching the whole thing off, and Wapify says so rather than letting you think a line is going out that isn't.
Order tags and risk levels
Every customer response writes back to the Shopify order automatically. There is nothing to set up for this part.
| Event | Order tag | Risk level |
|---|---|---|
| 🛒 New COD order placed | ⚠️ COD Unconfirmed | High Risk, after your chosen window |
| ✅ Customer confirms | ✅ COD Confirmed | Low Risk |
| ❌ Customer cancels | ❌ COD Cancelled | — |
Tags are swapped, not stacked. When a customer confirms, the ⚠️ COD Unconfirmed tag is removed and ✅ COD Confirmed takes its place — an order never carries two contradictory tags, and a customer who changes their mind updates the order correctly. That makes the tags reliable enough to filter and to build Shopify automations on.
Cancelling in WhatsApp tags the order. It never cancels it in Shopify. Cancelling an order is irreversible and touches inventory and payments, so it stays a human decision. Filter your orders by ❌ COD Cancelled and cancel them yourself when you're ready.
Update order risk levels
A switch inside the same card, on by default. With it on, Wapify also writes Shopify's own risk assessment: confirmed orders become Low Risk, and orders still unanswered after your chosen Timeframe become High Risk. The window runs from 1 to 72 hours, 24 by default.
An unanswered order keeps its ⚠️ COD Unconfirmed tag the whole time — only the risk level changes, and only once the window has actually passed.
Follow-up reminder
Most people who don't answer aren't refusing — they missed the message. The reminder sends a second, shorter message to anyone who hasn't tapped a button, between 1 and 48 hours after the first (4 hours by default).
The reminder spells out the consequence — the order stays unshipped — because that's what makes tapping a button feel necessary.
It's sent once. A customer who ignores both is left alone.
Additional Information
Add your own paragraph to the end of the confirmation, a support button, or both. Because this changes the message body, it creates a custom template that belongs to your store and goes to Meta for review.
- Additional message — separate English and Arabic boxes, so each customer reads it in their own language. Appended to the end of the confirmation. Leave one blank to skip it for that language.
- Support phone number — include the country code. Leave blank to skip the button.
- Button type — Phone Call opens the dialpad, WhatsApp opens a WhatsApp conversation with that number.
Press Submit for Review and Meta reviews it like any other template. Statuses shown on the card:
The custom template bakes in your package-inspection and return-policy choices as fixed text. If you change either setting afterwards, resubmit the template so the new wording reaches Meta — a banner on the card reminds you.
While a custom template is awaiting approval, the COD automation can't be switched off and on again — the toggle is held until Meta responds.
Customer acceptance rate
Some customers accept nearly everything they order. Others refuse routinely, and they do it at every store, not just yours. Wapify can note which kind you're dealing with directly on the order.
| Delivery history | Order note |
|---|---|
| 80% or more delivered | ✅ High acceptance |
| 60–80% delivered | ⚠️ Medium acceptance |
| Below 60% delivered | 🚫 Low acceptance |
The rate is built from what couriers actually report — delivered or failed — over a rolling 12-month window. It counts from the customer's first delivery with your store, or from three deliveries across all stores using the app, and the note names the orders they refused from you. Wapify always uses the less flattering of the two: a customer who refused the one delivery you ever sent them is 100% failed for you, whatever other stores saw.
How to switch it on
Tick Note acceptance rate in the Customer Acceptance Rate card. It's off by default — nothing is written to your orders until you ask for it. The checkbox stays disabled until Wapify has finished syncing your store's own delivery history, which takes a few minutes after install.
It writes a note, never a risk assessment. Shopify's risk assessments accumulate rather than replace, and the COD flow already writes risk on the same order — scoring here too would leave orders carrying two contradictory levels. A note is unambiguous and sits where you'll read it.
Privacy
Delivery outcomes are stored against a one-way cryptographic hash of the phone number — never the number itself, never a name, never an order. Scores can't be reversed into a customer list, and the ledger is disclosed in Wapify's privacy policy. Every store contributes outcomes; what the checkbox controls is only whether the result is written onto your orders.
Where the results show up
- Shopify orders — tags, risk level and acceptance notes, filterable in your admin.
- Logs → COD Confirmation — every message with its status and what the customer answered.
- Analytics — confirmation rate, COD value confirmed, how fast customers answer, and the order funnel.
- Feedback Center — the reasons customers gave when they tapped Cancel.
- Inbox — anyone who replied with words instead of a button.
Sending one by hand
Select orders in Shopify, open the ⋯ menu and choose Send order confirmation. A manual send skips the configured delay and ignores quiet hours, and by default won't message someone who already received one. See Actions on the Orders page.