Confirming COD orders by phone, SMS or WhatsApp: costs and trade-offs
Confirming a COD order means contacting the shopper before you ship, to check that they placed the order, that the address is right and that they will be there with the money. The three usual ways cost money in different ways. Phone calls cost staff time. SMS costs a per-message fee set by your provider. WhatsApp Business Platform messages are charged by Meta for each delivered message, at a rate that depends on the message type and the shopper's country. Whichever you pick, combine it with checkout rules that hide COD on the riskiest carts, so fewer orders need a check.
What should a confirmation check?
Keep it short. A good confirmation asks the shopper to confirm:
- that they placed the order (this catches pranks and orders placed by mistake);
- the address, with a landmark or building name;
- the total to pay, including delivery, so the amount at the door is no surprise;
- the delivery day.
Record the answer on the order, for example with an order tag or note, so the person packing knows it was confirmed. To make sure every COD order has a number to contact, set Shipping address phone number to Required in Settings > Checkout. Shopify can't require both an email and a phone as the contact method, so this setting is how you get a phone number on every order.
Phone calls: you pay in staff time
A person calls each COD order and talks to the shopper.
What it costs: the minutes each call takes, including calls nobody answers, multiplied by what that staff time costs you, plus any call charges.
Where it works well: you hear hesitation in the shopper's voice, you can fix a confusing address while you're on the line, and it works for shoppers who don't reply to messages.
Where it struggles: it grows with your order count, shoppers miss calls from unknown numbers, calling hours are limited, and there is no written record unless your team writes one.
SMS: you pay a per-message fee to a provider
You send a text such as "Reply 1 to confirm order #1234 for AED 450" through an SMS provider or an SMS app for Shopify.
What it costs: a price per message, set by your provider. It varies by provider and by the country you send to. Ask your provider how it counts message length, especially for Arabic text, and whether replies cost extra.
Shopify's own SMS order confirmations don't solve this for GCC stores. Shopify sends them only when the store's business address is in one of a short list of countries (Australia, Brazil, Canada, France, Germany, Ireland, Italy, Japan, New Zealand, Spain, the UK and the US), and they can't be edited, so you can't add a question to them. You need a provider or an SMS app.
Where it works well: it reaches any phone and costs little staff time once set up.
Where it struggles: texts are easy to ignore, collecting replies depends on your provider, and business texts can look like spam. Ask your provider about sender name registration rules in each country you send to.
WhatsApp: Meta charges per delivered message
There are two ways to use WhatsApp for confirmations:
- By hand, with your team chatting from the WhatsApp Business app on a phone. The main cost is staff time, as with calls.
- Automatically, through the WhatsApp Business Platform, which apps and messaging providers connect to your store. This is where Meta's rate card applies.
How Meta charges on the WhatsApp Business Platform, from Meta's pricing page as checked on October 26, 2026:
- Per delivered message. Since July 1, 2025, Meta charges per message instead of per conversation, and only when the message is delivered.
- The rate depends on two things: the message category (marketing, utility or authentication for templates, service for normal chat replies) and the shopper's country calling code. The UAE (971), Saudi Arabia (966), Qatar (974), Kuwait (965) and Oman (968) each have their own rates, while Bahrain (973) is priced in Meta's "Rest of Middle East" group. Qatar, Kuwait and Oman moved to their own rates during 2026. Meta publishes the rates in rate cards on that page.
- A confirmation request is a utility message, as long as it stays non-promotional. Meta's examples of utility messages include confirming, updating and cancelling an order. If you add a discount code or an upsell, Meta treats the whole template as marketing.
- Shopper replies are free. Meta doesn't charge for messages from a shopper to a business.
- A reply opens a 24-hour window. While it's open, you can answer with normal chat messages, which Meta calls service messages. Each business phone number gets 1,000 free service messages a month. After that, service messages are charged (this changed on October 1, 2026).
- Utility messages inside that window are no longer free. From July 1, 2025 they were free; since October 1, 2026 they are charged at the normal rate.
- High volume lowers the utility rate. Meta has monthly volume tiers for utility messages in each market.
Your messaging provider may add its own fee on top of Meta's, so check its pricing too. Meta has changed this pricing more than once since 2025, so check the pricing page before you budget.
Where it works well: shoppers can tap a button, send a location pin or ask a question in the same chat, and you get a written record.
Where it struggles: you need a provider and approved message templates, Meta may move a template it considers promotional into the marketing category, and you still need a plan for shoppers who don't answer.
Side by side
| Method | What you pay for | Staff effort | Written record |
|---|---|---|---|
| Phone call | Staff time, call charges | High, every order | Only if staff note it |
| SMS | Provider's per-message fee | Low once set up | Yes, if replies are collected |
| WhatsApp by hand | Staff time | Medium | Yes, in the chat |
| WhatsApp Business Platform | Meta's per-message rate, provider fee | Low once set up | Yes |
You can also mix them: send an automatic WhatsApp or SMS message first, and call only the orders with no reply.
What if the shopper doesn't answer?
Decide this in advance and write it in your COD policy, so it isn't a surprise. For example: send the message, try once more the next day, then call. If there is still no answer after the time you set, hold or cancel the order. Shipping an unconfirmed COD order is an expensive way to find out nobody was home. See what one refused COD order really costs for the full sum.
Combine confirmation with hiding COD on risky carts
Confirmation catches problems after the order is placed. Hiding COD stops the riskiest COD orders from being placed at all. Used together:
- Hide COD where a refusal costs you most: customers who refused before, large carts, large first orders, and products you can't resell. Those shoppers can still buy by paying online, and prepaid orders don't need a COD confirmation.
- Confirm the COD orders that remain. There are fewer of them, so each method costs less.
- After a refusal, tag the customer
cod-refusedso COD is hidden on their next order. See how to block COD for specific customers with tags.
Khaleeji COD handles step 1 and step 3: it hides COD at checkout when a rule matches, and its refuser scan lists customers with recently cancelled COD orders for you to tag. Confirmation stays your team's job, with whichever method fits your order volume.
Sources
- Meta for Developers: Pricing on the WhatsApp Business Platform (checked October 26, 2026)
- Meta for Developers: WhatsApp template categorization
- Shopify Help Center: SMS notifications
- Shopify Help Center: Checkout form options
Checked on the date above. Shopify and courier settings change, so check the source if something looks different.