COD Desk documentation

COD Desk checks cash-on-delivery (COD) orders, gets them confirmed and keeps buyers who refused parcels away from cash on delivery. This guide covers setup, the risk score, confirmation, the desk, lists, checkout rules, plans and troubleshooting. Questions: support@kaviolabs.com.

Install and set up

  1. Install the app from the Shopify App Store and open it from Apps → COD Desk.
  2. COD Desk reads your orders of the last 60 days once. Orders tagged with your RTO tags (default: RTO, Refused, Returned to sender) count as refused parcels; their buyers go on the prepay list. Paid orders count as good history.
  3. Add the confirmation block:
    • Settings → Checkout → Customize, open the Thank you page, Add block → Apps → COD Desk: confirm cash on delivery, save.
    • Settings → Customer accounts → Customize, open the Order status page and add the same block.
  4. In the app, open Settings and check:
    • Payment methods that count as cash on delivery: the default matches Shopify's "Cash on Delivery (COD)" method. Add the name of your own manual payment method if it differs.
    • Your WhatsApp number (optional) for the Confirm on WhatsApp button.
    • Cost of one refused parcel for the money saved figure.

COD Desk never sends e-mails, SMS or WhatsApp messages. Your Shopify order confirmation e-mail already links to the order status page, where the buyer finds the block.

The risk score

Every new cash-on-delivery order gets a score from 0 to 100. Each signal adds points (you can change them in Settings → Risk score):

Signal Default points
Each earlier refused or returned parcel of the same phone, e-mail, address or customer (max 3) 25
Each earlier COD order the buyer never confirmed (max 2) 10
On your prepay list, but the order still came in with cash on delivery 40
On your block list 100
Same buyer and same products within 24 hours (possible duplicate) 20
3 or more orders from one phone, e-mail or IP address within 24 hours 20
Very short or made-up street address 10
Test or placeholder name 15
No phone number 15
Phone number not valid for the shipping country 20
Phone number of another country 10
Disposable e-mail address 15
Order total at or above your high value 10
First order with a high value 15
Shopify's fraud analysis recommends cancel or investigate 20
Earlier delivered parcels and no problems -20
Watch list entry the entry's points

Buyers on your allow list always score 0 and are never asked to confirm. Levels: low below Medium risk from (30), medium from 30, high from High risk from (60). The score and its reasons are written into Shopify's risk card on the order page ("COD Desk"), and orders get the tags COD pending, COD review, COD high risk.

Confirmation

Ask buyers to confirm: every COD order (default), risky orders only, or never.

State Meaning
Waiting for buyer The buyer can confirm or cancel on the thank-you / order status page, or on WhatsApp.
Needs review Score at or above Hold for your review from score (60), or a block list match. A buyer confirmation is recorded, but your team approves or cancels.
Confirmed By the buyer, on WhatsApp, on the desk or on the order page. The fulfillment hold is released and the order is tagged COD confirmed.
Cancelled By the buyer or your team. COD Desk cancels the order in Shopify and restocks the items.
Not confirmed in time After Hours to confirm (48). On Growth and Pro the order is cancelled and restocked when Cancel orders nobody confirmed in time is on; otherwise it waits on the desk.

Fulfillment hold (Growth and Pro): while an order waits, its fulfillment is on hold in Shopify (reason "Waiting for the buyer to confirm"), so neither your team nor a fulfillment partner ships it by mistake.

Shopify's cancellation notification goes to the buyer only if you switch it on in Settings.

WhatsApp

With your number in Settings, the buyer block shows Confirm on WhatsApp. It opens WhatsApp on the buyer's phone with a ready message such as "Hello Souk Lane, I confirm my order #5520. Code: 1937". The code is shown on the desk: when the message arrives, press Confirm on that order. Your team can also open WhatsApp from the desk with your own message template (placeholders {name}, {shop}, {order}, {total}, {code}); it opens on their own phone or WhatsApp Web.

The desk

Desk lists the orders that need someone, highest risk first:

  • Waiting: waiting for the buyer or for your review.
  • Needs review: high-risk and blocked orders.
  • Call back: orders with a call back time within the next hour.
  • Not confirmed in time: expired orders that were not cancelled.
  • Confirmed, parcel outcome open: mark them Delivered, Refused or Returned.

Each card shows the buyer's name, phone, address, items, total and the reasons of the score (read live from Shopify; COD Desk does not store names or addresses). Buttons: Confirm (Approve for orders in review), WhatsApp, Call, No answer, Wrong number, Call back in 2 h, Cancel order. Enter Your name on the desk once per computer: it appears in the order history and in the desk statistics.

The order page in the app (and the COD Desk block on Shopify's order page) shows the full score, the history, the parcel outcome buttons and Block buyer, Always prepay, Trust buyer.

Refused parcels

Mark a parcel as Refused or Returned on the desk, the order page or the COD Desk block in Shopify's order page, or tag the order with one of your RTO tags (your courier app can do this). Then:

  • the order is tagged COD refused and the customer gets the tag kv-cod-refuser;
  • after this many refused or returned parcels (1) the buyer's phone, e-mail and customer account go on the prepay list (street addresses are never added automatically, so neighbours keep cash on delivery);
  • the next order of that buyer scores higher and, on Growth and Pro, cash on delivery is hidden at checkout.

A COD order marked as paid counts as delivered (switch this off in Settings if you mark orders paid early).

Lists

List Effect
Block Checkout is refused with your neutral message (Growth and Pro); orders that still come in wait for review.
Prepay Cash on delivery is hidden at checkout (Growth and Pro); the order gets +40 if it still comes in.
Allow Never limited, never asked to confirm. Wins over every other list.
Watch Adds the entry's points to the score only.

Entry types: phone (matched on the last 9 digits, any format), e-mail (Gmail dots and +tags ignored), postcode (country code first, for example MA 20250), address (EG | 11511 | 12 Tahrir Street), e-mail domain, IP address and customer ID. Domains and IP addresses only change the score. One value is on one of block, prepay and allow at a time.

CSV import and export (Growth and Pro): columns list,type,value,note, for example prepay,phone,+971501234567,Refused twice.

Customer tags work too: customers tagged kv-cod-prepay or kv-cod-refuser never see cash on delivery, kv-cod-blocked are refused, kv-cod-trusted are never limited.

Checkout rules (Growth and Pro)

COD Desk adds two rules to your store:

  • COD Desk: cash on delivery rules (Settings → Payments → Customizations) hides cash on delivery for prepay and block list matches, the tags above, carts above Hide cash on delivery above (any buyer) and first orders above Hide cash on delivery above (first order). Optionally it renames the method, for example "Cash on delivery (we confirm by phone)".
  • COD Desk: blocked buyers (Settings → Checkout → Checkout rules) refuses checkout for block list matches with your message.

Lists reach checkout as compact, hashed filters in your store (no buyer data is sent to our server during checkout). Very long lists make the filters a little less exact: the Home page warns you when they are almost full. On the Free plan the rules stay switched off.

Shopify Flow (Growth and Pro)

Triggers: High risk COD order received, COD order confirmed, COD order cancelled, COD parcel refused. Each carries the order and the fields Risk score, Risk level, Risk reasons and Confirmed by. Use them to notify your team, add notes, or send messages with an SMS or WhatsApp app you already use.

Analytics

Confirmation rate (by buyers and by your team), orders stopped before shipping, shipping saved (stopped orders × your parcel cost), RTO rate, orders per day, and refused parcels by risk level. Pro adds refused parcels by postcode, city and product and the desk work per team member.

Plans

Free Growth $9.99 / month Pro $24.99 / month
Cash-on-delivery orders checked per month 50 1,000 Unlimited
Risk score, buyer confirmation, WhatsApp, desk Yes Yes Yes
List entries 100 5,000 Unlimited
Hide COD / refuse blocked buyers at checkout Yes Yes
Fulfillment hold, automatic cancellation, Flow Yes Yes
CSV import and export Yes Yes
RTO by postcode, city, product; desk statistics Yes

Paid plans have a 14-day free trial and are billed by Shopify. Prepaid orders never count toward the limit. Over the limit, new COD orders are recorded but not scored until the 1st of the next month (UTC).

Troubleshooting

  • Orders are not checked: the payment method name must contain one of the names in Settings. Check the order's payment method in Shopify and add its name.
  • The buyer block does not show: add it in the checkout editor (Thank you) and the customer accounts editor (Order status). It shows only for COD orders that wait for a confirmation, and after a confirmation it shows a thank-you.
  • Cash on delivery is still shown for a listed buyer: checkout rules need Growth or Pro, and the buyer must match the entry (phone, e-mail, postcode or address used at checkout). Customers with the kv-cod-trusted tag are never limited. Changes reach checkout within a few minutes.
  • "Shopify did not accept every change" on an order: for example the order was fulfilled or cancelled in the meantime. The rest of the order is unaffected.

Privacy and uninstall

See the privacy policy. Uninstalling removes the checkout rules and blocks; we delete the access token at once and all data of your store 48 hours later.

Need help? Write to support@kaviolabs.com with your store's .myshopify.com address.

COD Desk is coming to the Shopify App Store. Notify me at launch.