# Verify risky COD orders on WhatsApp before you pack them

> A morning queue that ranks pending and unpaid orders by value, shows each buyer's return history, and queues WhatsApp confirmations before anything ships.

- Workflow type: app
- Services: Heyy, Shopify, Google Sheets
- Categories: Operations, Sales
- Published: 2026-08-24

## What it does

- Builds a morning verification queue of every pending or unpaid order, biggest value first, with the order total, items, phone number, address quality and how long each one has been waiting
- Shows the buyer's past behaviour beside each order, including prior cancellations and refunds, so your team can spot repeat returners before packing anything
- Queues a WhatsApp confirmation for any order with one click, using your pre approved template and your connected business number
- Runs a background check on any buyer that writes back a short verdict, a recommended action and a personal line for the message
- Logs every outcome to a dated Google Sheet and keeps a running count of orders verified versus cancelled today

## What you'll need

- A Shopify store with orders that need verifying before dispatch
- A Heyy account with WhatsApp connected, a confirmation label, and a pre approved message template already set up
- A Google account and a spreadsheet to keep the daily audit trail in

## Prompt

Build me an app my fulfilment team opens every morning to verify risky cash on delivery and unpaid Shopify orders over WhatsApp before anything gets packed. The point is to catch bad orders before we spend money shipping them, so it has to be fast to work through and it has to leave an audit trail outside the app.

The main surface is a verification queue. Build it from Shopify "List Orders" filtered to orders that are pending or unpaid, sorted biggest order value first. Each row shows the order number, the order total, the line items, the buyer's phone number, a simple read on how complete the shipping address looks (flag a missing street number, a missing postcode, or an address that is too short to be real), and how many hours the order has been waiting since it was placed.

Selecting a row opens a side panel with the buyer's past behaviour, pulled with Shopify "Get Customer Orders" for that customer and Shopify "Get Order" for detail on individual past orders. Show prior order count, how many were cancelled, how many were refunded, and the total value they actually kept. That history is what tells the team whether this is a repeat returner or a good customer.

Each row has a "Verify on WhatsApp" button. Important: Heyy has no direct send message operation, so do not try to send anything. Outreach is queued by calling Heyy "Create Contact" with the buyer's phone number, attaching the confirmation label, and writing the order number, the line items and the order total into custom contact attributes. Creating that contact with that label is what fires the pre approved WhatsApp template automation inside Heyy. Those custom fields are defined once with Heyy "Create Contact Attribute", so include a one time setup step that creates the attributes if they are missing and remembers their external ids. Attributes are referenced by external id, not by display name.

Each row should also show which template will render, read with Heyy "List Message Templates", and which connected number it will send from, read with Heyy "List Channels". The team wants to see what the buyer is about to receive before pressing the button.

Each row also has a "Check this buyer" button that kicks off a background agent. The agent reads that customer's Shopify order history with "Get Customer Orders" and "Get Order", judges address quality and repeat return risk, and writes back onto the card a short verdict, a recommended action (verify, call first, or cancel), and a one line personalisation the WhatsApp template can render. Store the agent output in the app so the card displays it and so the "Verify on WhatsApp" handler can pass the personalisation through into the contact attributes.

Every outcome (verified, still waiting, cancelled) is logged to a Google Sheet with "Append Values" and kept current with "Update Values", so ops keeps a dated audit trail outside the app. Each sheet row carries the date, order number, order total, payment method, outcome, and the agent verdict when there is one.

Rules to bake in. Orders the team already handled today must drop out of the queue, so persist per order handling state with its date in the app's own store. Heyy has no list contacts read, so anything the app shows about a person comes from Shopify or the app's own store, never from Heyy. Give the team filters for minimum order value, payment method, and whether the phone number looks valid. Put a simple daily counter at the top showing orders verified versus orders cancelled today, so the saving on returned shipments is visible.

## How to customize

- Change the order value threshold so only orders above a certain amount need verifying, and filter by payment method or whether the phone number looks valid
- Adjust what counts as a risky buyer, such as how many past cancellations or refunds trigger a warning
- Swap which message template and which connected number the confirmations go out from
- Change what gets written to the audit sheet, or point it at a different spreadsheet per team

## FAQ

### Does this send the WhatsApp message itself?

Not directly. The app hands the order over to your messaging platform with the right label and details attached, and your existing pre approved WhatsApp template goes out automatically from there. That keeps every message inside the templates WhatsApp has already approved for your business.

### Why is this built on pending and unpaid orders rather than abandoned carts?

Abandoned carts are people who never ordered. This is about orders you already have and are about to spend money shipping, which is where cash on delivery losses actually happen. The queue pulls orders that are still pending or unpaid so you confirm real buyer intent before packing.

### Will an order I already dealt with show up again tomorrow?

No. Once you mark an order verified, still waiting, or cancelled, it drops out of the queue for the day and the outcome is written to your audit sheet with the date.

### Can the whole team use it at once?

Yes. It is a shared queue, so anyone on fulfilment can open it in the morning and work through the same list, and the daily counter at the top shows the team's combined progress.

### What does the buyer check actually look at?

It reads that customer's order history in your store, judges how complete and plausible the shipping address is, weighs how often they have cancelled or returned before, then writes a short verdict and a recommended action onto the order card.

Use this prompt in General Input: https://www.generalinput.com/prompts/verify-risky-cod-orders-on-whatsapp-before-you-pack-them