Short answer: to verify WooCommerce COD orders by phone call, create a REST API key with Read/Write permission in WooCommerce, paste it with your store URL at orders.edesy.in, press Register webhooks automatically, and turn on a call rule. Each new COD order gets a call in Hindi or English; pressing 1 moves the order to the status you choose and adds a note, pressing 2 sets it to cancelled. There is no WordPress plugin. It costs Rs 3 per confirmed order, with 25 orders free.
For the background on how COD appears on a WooCommerce order and the manual workflow this replaces, see How to Confirm COD Orders Automatically on WooCommerce. This post is the setup itself.
What you need
| Item | Where to find it |
|---|---|
| WordPress admin with WooCommerce | Your site |
| Store URL (https, without /wp-admin) | Your browser address bar |
| REST API consumer key and secret | WooCommerce > Settings > Advanced > REST API |
| Business verification (KYC) | Edesy app; Indian telecom rules require it before outbound calls |
| A phone number to call from | Bought in the Edesy app after KYC, or one you already have on Edesy |
Step 1: Create the REST API key
- In WordPress, open WooCommerce > Settings > Advanced > REST API.
- Press Add key, give it a description such as "Edesy Order Calls", and pick a user with shop-manager rights.
- Set Permissions to Read/Write.
- Press Generate API key and copy the consumer key (
ck_...) and consumer secret (cs_...). WooCommerce shows the secret only once.
Step 2: Connect the store in Order Calls
Sign up at orders.edesy.in (Rs 20 welcome credit, no card), open Integrations and add WooCommerce. Fill in:
- Store URL, for example
https://shop.example.com - Store name as you want it spoken in the call
- Consumer key and consumer secret
- Order status after confirmation (see step 4)
The webhook secret is generated for you. Save, then press Test connection. A good result reads "Connected to the WooCommerce REST API".
If it fails, the usual cause is Cloudflare, a hosting firewall or a security plugin blocking requests to
/wp-json/wc/v3. Allow requests from our servers to that path and test again. More detail is in
Connect WooCommerce.
Step 3: Register the webhooks
Press Register webhooks automatically. Two webhooks are created in WooCommerce:
| Webhook | Why |
|---|---|
| Order created | Starts a confirmation call for a matching COD order |
| Order updated | When the status becomes cancelled, pending calls for that order stop |
You can also add them yourself in WooCommerce > Settings > Advanced > Webhooks using the delivery URL and secret shown in the portal.
Step 4: Decide what a confirmed order looks like
WooCommerce has no tags, so the result is written as a status change, an order note and a hidden order field.
| Outcome | What changes on the order |
|---|---|
| Customer presses 1 | Status moves to your chosen status (or stays put if you left it empty), note "COD confirmed by call", field _edesy_cod_confirmation = confirmed |
| Customer presses 2 | Status set to cancelled, note added, field = cancelled |
| No answer after every attempt | Note "COD confirmation: customer unreachable" |
| Answered, no key pressed | Note "COD confirmation: no answer on the call" |
A common pattern: hold new COD orders as on-hold, and set the confirmation status to processing. Your packing team then only sees orders that a customer has confirmed. Notes are added on every call, so the order history shows each attempt. You can edit these labels in Outcome Actions.
Step 5: Script, number and timing
Pick Hindi or English for the call. The customer's name, store name, order number and COD amount are filled in; they press 1 to confirm or 2 to cancel. Default wording is in Hindi and English Scripts.
Choose the number customers see. The default timing is a 2-minute wait after the order, calls only between 09:00 and 21:00 IST, up to 3 attempts spaced 30 and then 120 minutes apart, and giving up after 48 hours. See Timing and Retries.
Step 6: Test, choose pricing, go live
Use Make a test call to hear the script on your own phone with a sample order. Then press Start free trial to switch on per-order pricing (first 25 orders free) and turn the call rule on.
Pricing
| Plan | Price | Included orders | Overage |
|---|---|---|---|
| Pay-as-you-go | Rs 3 per confirmed order | First 25 free | Rs 3 |
| Starter | Rs 999/month | 400 | Rs 2.50 |
| Growth | Rs 2,999/month | 1,500 | Rs 2.00 |
| Scale | Rs 7,999/month | 5,000 | Rs 1.60 |
An order is charged only when a call to the customer connected; retries are included. Prices exclude 18% GST. See per-order vs per-minute pricing and the WooCommerce page.
No WooCommerce? Any store can upload a CSV of orders instead.
FAQ
Do I need to install a WordPress plugin?
No. Edesy connects through the WooCommerce REST API with a key you create in WooCommerce settings. There is no plugin to install or update.
What permission does the REST API key need?
Read/Write. Read lets us receive and look up orders; Write lets us change the status, add notes and set the confirmation field.
What status does a confirmed order get?
The one you choose. Leave it empty to keep the status and only add a note, or set processing if you hold COD orders on-hold until they are confirmed.
Why does Test connection fail on my site?
Usually a firewall, Cloudflare rule or security plugin is blocking requests to /wp-json/wc/v3. Allow requests from our servers to that path and test again.
What does it cost?
Rs 3 per confirmed order on pay-as-you-go, charged only when a call connects, with the first 25 orders free. Plans start at Rs 999 a month for 400 orders. Prices exclude 18% GST.