Packed, out, delivered — and the customer told once
Most order software stops at payment. The part that actually consumes your afternoon is what happens after it.
Two doors, one engine
PACK, SHIP and DELIVERED from WhatsApp while your hands are full, or the Fulfilment card in the dashboard. Both run the same code, so neither can forget to tell the customer and neither can skip a guard the other applies.
- Owner verbs, not internal names — nobody types OUT_FOR_DELIVERY while loading a van.
- Forward only, and a refusal names the status the order is actually in.
- Repeating an action sends the customer nothing.
Skipping is normal and handled properly
A customer collects from the shop; a driver drops it off on the way past. Going straight from paid to delivered sends one message about where the order actually reached — not three narrating a journey it did not take.
- A skipped stage leaves its timestamp empty, because empty is the record that it was skipped.
- The order timeline reads those gaps rather than inventing moments.
Paper for the parts that need paper
A packing list grouped by order, and a run sheet grouped by delivery area. Both print black on white from a phone.
- A packing group never splits across a page break.
- Both show everything outstanding, not just today — an order paid yesterday and not yet packed is still work.
- Stops with no saved address still print, grouped last.
A failed message never rolls back a real change
The status change commits first and the customer message is sent afterwards. If WhatsApp refuses it you are alerted, and the conversation view marks it as not delivered rather than showing it as though it arrived.
See fulfilment tracking on your own shop
Onboarding is hands-on — a number provisioned for you, your catalogue loaded, your payment details set up with you on the call.

