# WooCommerce COD Verification by Phone Call: Setup Guide

> Step-by-step WooCommerce COD verification by phone call: REST API key with Read/Write, webhooks registered for you, confirmed orders moved to your chosen status with a note, cancelled orders set to cancelled. Rs 3 per order, 25 free.

Source: https://edesy.in/blog/woocommerce-cod-verification-phone-call-setup-2026

**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](https://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](https://edesy.in/blog/woocommerce-cod-order-confirmation-guide-2026). 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

1. In WordPress, open **WooCommerce > Settings > Advanced > REST API**.
2. Press **Add key**, give it a description such as "Edesy Order Calls", and pick a user with shop-manager rights.
3. Set **Permissions** to **Read/Write**.
4. 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](https://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](https://edesy.in/docs/order-calls/connect-your-store/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](https://edesy.in/docs/order-calls/call-rules/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](https://edesy.in/docs/order-calls/scripts/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](https://edesy.in/docs/order-calls/call-rules/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](https://edesy.in/blog/cod-confirmation-call-cost-per-order-vs-per-minute-2026) and the
[WooCommerce page](https://edesy.in/cod-order-confirmation/woocommerce).

No WooCommerce? Any store can [upload a CSV of orders](https://edesy.in/cod-order-confirmation/csv-upload) instead.

[Start with 25 free orders](https://orders.edesy.in)

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

## Related reading

- [COD order confirmation](https://edesy.in/cod-order-confirmation)
- [Free trial: 25 orders](https://edesy.in/cod-order-confirmation/free-trial)
- [COD order tags and fulfilment workflow](https://edesy.in/blog/cod-order-tags-fulfilment-workflow-2026)
- [How to filter fake COD orders](https://edesy.in/blog/fake-cod-orders-how-to-filter-2026)
