COD order confirmation calls: cutting refusals
In a shop working with cash on delivery there is a distance between an order being placed and money being taken, and that is where the loss lives: goods are picked, handed to a courier, and at the door the answer is «I changed my mind». One refusal means paying for delivery twice. This article builds the confirmation call: the five reasons refusals happen, the two calling windows, a four-outcome script, the five fields to settle, a filter for risky orders, and what to do after a refusal.
With cash on delivery, a placed order is not yet a sale
For a shop working with cash on delivery there is a distance between an order being placed and money being taken, and the loss lives in that distance. The customer presses the button, the order lands in the system, the goods are picked and handed to a courier — and at the door the answer is «I changed my mind».
That loss costs more than an ordinary cancellation, because the paid-for work has already happened: the goods left the warehouse, were packed, travelled and now travel back. One refusal means paying for delivery twice, and neither payment brings a customer.
The confirmation call exists to close that gap. Its purpose is not to sell the order again — it is to confirm that the order is real, the address is right and the customer knows the amount to expect. This article covers how that call is built, when to place it, and when it does harm instead.
Why refusals happen
Door-step refusals fall into a few groups, and each needs a different fix. The confirmation call solves only some of them; the rest are process problems.
- They changed their mindThe largest group. The order was placed in the moment, a day or two passed and the need faded. An early confirmation call holds part of this group, because the conversation happens while the decision is still fresh.
- Duplicate orderThe customer pressed twice, or ordered the same item through two channels. One question on the call finds it and one order is cancelled — the call cuts cost directly here.
- The address or the time does not workThe address is incomplete, or the customer will not be home that day. The courier travels, finds nobody, the order comes back. This loss is entirely preventable.
- The amount is not what they expectedDelivery fee, tax or the terms of a promotion were misread. That surprise at the door is among the most common causes of refusal.
- The order is not realA wrong number, a test order, an order placed by a child. This group has to be cut before the courier is involved.
Producing the distribution of those five over a month matters more than writing the script. Which group is largest decides what the script should focus on: a shop with a duplicate problem and a shop with an address problem should not be making the same call.
Timing: two windows
A confirmation call can be placed at two different moments, and the two produce different results.
- Right after the order (30–60 minutes): the decision is fresh, duplicates and address errors surface here, and the chance of refusal is lower
- Before handing to the courier (morning of the delivery day): address and time are settled, and delivery is rescheduled if the customer will be out
- Both: two touches make sense for high-value orders
- Neither: for low-value repeat orders the cost of a call can exceed the gain — a message is enough
The last line matters. Not every order needs a call: the decision follows order value, customer history and delivery distance. In practice, calling a returning customer about a small order is both a cost and an irritation.
The script: four outcomes
The script is short and ends in one of four outcomes. Each has its own code and its own continuation.
- ConfirmedOrder, address, approximate time and final amount are repeated back. Result: the order goes to the courier and the status changes.
- Needs clarifyingThe address is incomplete, the time does not suit, or an alternative number is needed. Result: corrected, order kept, delivery rescheduled.
- HesitatingThe customer is unsure. Pressure does not work here, one question does: is the delivery time wrong, or do you have a question about the product? In the second case the call goes to an operator, because a product question is a sales question.
- CancelledAsk for the reason and write it down. A cancelled order is not handed to a courier — that is the call's direct saving.
Working with carts that were never converted into orders is a different script entirely, covered in abandoned cart recovery calls. Here the order already exists and the goal is to protect it.
The fields the call has to settle
A confirmation call should settle five fields. When these stay empty in the system, the courier ends up settling them in the street and delivery time stretches.
- The full address: building, flat, entrance and a landmark
- The delivery window, and the hours the customer is reachable that day
- The final amount: goods, delivery, discount — all in one figure
- An alternative contact number
- The contents: quantity and variant (size, colour) confirmed
The last line cuts part of the returns in advance. Discovering a wrong size or colour at the door means both a return and a bad experience; one sentence of confirmation on the call prevents it.
Filtering risky orders
Not all orders carry the same risk. A simple split protects most of the courier cost.
- New customer + high value + distant address: a confirmation call is compulsory
- Returning customer + medium value: a message is enough, a call only if there is no reply
- A number with a history of refusals: call compulsory, prepayment where possible
- Unreachable, or no answer on two attempts: the order moves to a holding status
- The company's own numbers and test orders are removed from the list
No complex model is needed to build this split — order value, customer history and delivery zone are enough. What matters is that the rule is written down and that not every order is treated the same way.
A customer who refuses is not a lost customer
A customer who refuses at the door is usually deleted, and that is a mistake. If the reason was recorded, this customer is one of the most precise targets a future campaign has: what they wanted is known, only the conditions did not fit.
The continuation depends on the reason: if the timing was wrong, contact them in two weeks with a different delivery window; if the amount surprised them, explain the promotion clearly; if the product did not fit, offer the alternative. The general rules for returning to a base with segments like these are in the win-back calling campaign.
How Vexvon supports this flow
Vexvon's AI voice agent calls from each company's own scenario, approved information and escalation rules. The parts a confirmation flow uses:
- Campaign targets are built from a CRM filter — segments by status, value and date become separate campaigns
- The scenario defines the fields to extract: confirmation, corrected address, delivery window, cancellation reason
- With webhook tools the agent can read order data from the company's own system and write the outcome back
- A question about the product or the terms hands the call to an operator
- Retry plans and reminders cover the numbers that did not answer
How an order system is connected is shown on the integrations page, and how product questions are handled on the chat channel in the e-commerce product chatbot article.
Measurement and where to start
Three numbers carry this flow, and all become readable after a month.
- Confirmation rate — what share of called orders is confirmed
- Door-step refusal rate — measured separately for called and uncalled orders
- Share of errors found on the call — address, duplicate, amount; this figure is the call's direct return
The simplest start: for one week call only high-value and new-customer orders, then compare the refusal rate with the rest. Once the difference shows, widen the coverage. To build this flow, get in touch.