Verify risky COD orders on WhatsApp before you pack them

By General Input

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

Integrations

  • Heyy
  • Shopify
  • Google Sheets

Type

App

Categories

  • Operations
  • Sales

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.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seatsBuild audience segments from product usage and push to LoopsTurn the people who engage with your posts into Pipedrive leads