WapifyDocs

COD Confirmation

Confirm cash-on-delivery orders on WhatsApp before you ship — with reminders, order tags, risk levels and a support button.

Event → order tag → risk
🛒 New COD order⚠️ COD UnconfirmedHigh
✅ Confirms✅ COD ConfirmedLow
❌ Cancels❌ COD Cancelled

One message, two buttons — and the Shopify order updates itself from whatever the customer taps. No setup needed for the tagging.

FreeBasicGrowthProIncluded on every plan. Follow-up reminders need Growth or above.

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.
Immediately1h2h3h6h12h

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.

Checked (default)✅ You can inspect the product upon delivery.
✅ تقدر تعاين المنتج عند الاستلام.
Unchecked🚫 Inspecting the product upon delivery isn't available.
🚫 للأسف غير متاح معاينة المنتج عند الاستلام.

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.

EventOrder tagRisk level
🛒 New COD order placed⚠️ COD UnconfirmedHigh Risk, after your chosen window
✅ Customer confirms✅ COD ConfirmedLow 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

GrowthProOn lower plans the card is locked and reads as off, and the preview drops the second bubble.

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 typePhone 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:

Under Meta reviewAwaiting approval. COD messages keep going out on the standard template in the meantime — nothing pauses.
ActiveApproved and live. The preview is marked Custom · Active. Edit and resubmit to change it.
Rejected by MetaUpdate the wording and resubmit. See why Meta rejects templates.

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 historyOrder 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.