Scores WooCommerce cash-on-delivery orders for risk before the shop ships them, lets you confirm doubtful ones over WhatsApp, and records who refused a delivery so the next order from that person is scored higher.
Install it from wordpress.org/plugins/codvane — this repository is the source of that build.
If you sell cash on delivery you already know it: you pack the goods, you pay the courier, the customer refuses the parcel at the door, and it comes back. You paid freight both ways and sold nothing. In the trade it is called RTO — return to origin — and for small shops across South Asia, MENA and Southeast Asia, where COD is the normal way to pay, it is the single largest avoidable loss.
Every other plugin in this space bolts on a paid SMS, IVR or WhatsApp Business gateway and charges per order. That prices out exactly the merchants losing the most. CODVane charges nothing per order because it calls nothing.
The plugin contacts nothing. There are no wp_remote_* calls, no cURL, no remote
file reads, no API key, no account and no telemetry. It bundles no third-party
code and ships no JavaScript whatsoever — 15 files, all PHP and one stylesheet.
Every signal it uses is read from the order in front of it, or from orders the shop already has. No customer data leaves the site, which is why the plugin's readme has no external-services section: there is nothing to disclose.
WhatsApp confirmation is a plain wa.me click-to-chat link that opens on the
shop owner's own device. No Business API, no per-message fee.
Six readable rules, not a model. The shop owner is about to refuse someone's order on the strength of a number, so every point has to be traceable to a named rule shown on the order itself.
- Who has refused a delivery before — the strongest signal, and the only one based on something that actually happened. Mark a refusal once and every future order from that phone or email scores higher.
- Whether the phone number can be real — too short, one digit repeated, or a run of consecutive digits.
- Several orders within minutes from the same phone or address.
- A large first order from someone who has never taken a delivery.
- An address a courier cannot find — two words and no number.
- Throwaway email domains that delete the mailbox after a few minutes.
Good customers earn points back. Completed deliveries subtract from the score. Without that, the plugin flags a shop's best customers, which is how it ends up deactivated.
All off until switched on: minimum and maximum order value, postcode rules
(12* covers a range), country rules, a blocklist of particular phone numbers or
emails, and optionally anyone who has refused before.
Phone numbers are matched on their digits, so +8801711111111 and 01711111111
are recognised as the same person.
One deliberate refusal to act: if cash on delivery is the only payment method the shop offers, none of these rules apply. Removing the only way to pay loses the sale rather than protecting it.
Fixed or percentage, added at checkout like any other fee, waivable above an order value — and it can be charged only to customers who have refused a delivery before. Everyone else pays nothing, and the people who actually cost the shop money are the ones covering it.
WordPress 6.0+, WooCommerce, PHP 7.4+. Every release is syntax-checked against PHP 8.3 and 8.4.
GPL-2.0-or-later, the same as WordPress. See LICENSE.
Built by SaifBrand.