Delivery updates and failed-delivery recovery
When to use it
Section titled “When to use it”- You run a courier, last-mile or dispatch-rider business, and customers keep calling to ask where their parcel is.
- Failed deliveries (nobody home, phone off, wrong location) cost you a second trip because nobody follows up.
- Your riders or dispatchers can log a status in your dispatch app, or on a short form if you don't have an app.
Where the data comes from
Section titled “Where the data comes from”| How | What |
|---|---|
| A form your staff fill in | The Dispatch form this playbook creates: your dispatcher or rider logs each parcel as out for delivery, delivered or failed, with the customer's phone number. Use this if you have no dispatch app. |
| Events from your app or website (needs a developer) | Or your dispatch app sends an event when a parcel goes out for delivery, is delivered or fails, with a reason on failures. |
| A form people fill in | The Reschedule and Rating forms this playbook creates. Customers open them from the SMS links. |
What it sets up
Section titled “What it sets up”| Kind | Name | What it does | Lands |
|---|---|---|---|
| Team | Dispatch | Follows up failed deliveries and reschedule requests. | Empty |
| Team | Operations | Calls unhappy customers; gets the weekly report. | Empty |
| Form | Dispatch | Staff-only form where a dispatcher or rider logs a parcel as out for delivery, delivered or failed. Matched to the customer by phone. | Draft, not published |
| Form | Reschedule my delivery | The form customers open from the failed-delivery SMS to pick a new day and time window. | Draft, not published |
| Form | Rate your delivery | A one-page rating form with an optional comment. The score is saved on the customer. | Draft, not published |
| Template | Out for delivery (SMS) | Out-for-delivery message with the time window and a number to call. No address. | Ready |
| Template | Delivery missed (SMS) | Failed-delivery message with the reschedule link. No reason, no address. | Ready |
| Template | Reschedule received (SMS) | Acknowledgement when a customer asks for a new day. | Ready |
| Template | Rate your delivery (SMS) | Rating request after delivery. | Ready |
| Question | Report: out for delivery | Parcels out for delivery in the report's period. | Ready |
| Question | Report: delivered | Parcels delivered in the report's period. | Ready |
| Question | Report: failed deliveries | Failed deliveries in the report's period. | Ready |
| Question | Report: reschedule requests | Reschedule requests in the report's period. | Ready |
| Question | Report: low ratings | Low delivery ratings in the report's period. | Ready |
| Report | Weekly: deliveries | The week's parcels out, delivered and failed, reschedule requests and low ratings, sent to operations. | Off |
| Follow-up | Delivery 1: out for delivery (form) | Dispatcher logs "out for delivery" on the form; the customer gets the ETA SMS. | Off |
| Follow-up | Delivery 1: out for delivery (app) | Your app sends "out for delivery"; the customer gets the ETA SMS. | Off |
| Follow-up | Delivery 2: delivered (form) | Dispatcher logs "delivered" on the form; a rating request follows an hour later. | Off |
| Follow-up | Delivery 2: delivered (app) | Your app sends "delivered"; a rating request follows an hour later. | Off |
| Follow-up | Delivery 3: delivery failed (form) | Dispatcher logs "failed" on the form; the customer gets the reschedule link and dispatch gets a task. | Off |
| Follow-up | Delivery 3: delivery failed (app) | Your app sends "delivery failed"; the customer gets the reschedule link and dispatch gets a task. | Off |
| Follow-up | Delivery 4: reschedule request | A reschedule request gets an SMS and a dispatch task to confirm the new day. | Off |
| Follow-up | Delivery 5: low rating | A low rating gives operations a call task; the outcome is saved. | Off |
The questions it asks
Section titled “The questions it asks”| # | Question | Default | Fills in |
|---|---|---|---|
| 1 | What should messages call your delivery company? | none, must answer | org_name |
| 2 | How do you record delivery status? Choose form if your dispatcher fills in a form, or app_events if your dispatch app sends events. | form | dispatch_via |
| 3 | Which team handles failed deliveries and reschedule requests? (your dispatchers, or one person) | Dispatch | dispatch_team |
| 4 | Which team follows up on unhappy customers and gets the weekly report? | Operations | ops_team |
| 5 | Which number should customers call about a delivery? | ‹workspace phone› | dispatch_phone |
Other settings
Section titled “Other settings”These have defaults. Change any that don’t fit.
| Setting | Default | Key |
|---|---|---|
| Out for delivery event | Out For Delivery | out_event |
| Delivered event | Delivered | delivered_event |
| Delivery failed event | Delivery Failed | failed_event |
| Ratings at or below this (out of 5) give operations a task | 2 | low_score |
| How long after delivery to ask for a rating | 1h | rating_delay |
| Hours dispatch has to follow up a failed delivery | 4 | failed_due_hours |
| Hours dispatch has to confirm a reschedule request | 4 | reschedule_due_hours |
| Hours operations has to call after a low rating | 24 | ops_due_hours |
| Default phone country on the forms | ‹workspace country› | default_country |
| Time zone for the report | ‹workspace timezone› | timezone |
| Weekly operations report | 0 8 * * 1 | report_cron |
| Greeting when a first name is missing | there | greeting_fallback |
Timings
Section titled “Timings”- Out for delivery: an SMS straight away with the time window and a number to call.
- Failed delivery: an SMS straight away with the reschedule link, and a task for Dispatch due in 4 hours.
- A reschedule request: an SMS straight away and a task for Dispatch, due in 4 hours.
- Delivered: a rating form by SMS 1h later (at most once every 3 days per customer).
- A rating of 2 or lower: a call task for Operations, due in 24 hours.
- Weekly operations report: 0 8 * * 1 in ‹workspace timezone›.
Channels
Section titled “Channels”| Channel | Needed for | Before it can send |
|---|---|---|
| sms | Every message to customers | An SMS provider, or Origamy managed SMS after business verification (KYC). |
What you need to do
Section titled “What you need to do”- If you use the Dispatch form, give it to your dispatchers and riders and have them fill it in for every parcel: the customer's phone number, the status, and for out-for-delivery an ETA window such as "2pm to 5pm". If you use a dispatch app, send Out For Delivery, Delivered and Delivery Failed with the customer's phone as a trait, and optional eta_window, rider_phone, sender, tracking_ref and (on failures) reason properties.
- Never put a full address in a message. These messages show only the time window, a phone number and links. Keep addresses in your dispatch system.
- Add people to the Dispatch and Operations teams. A task assigned to an empty team reaches nobody.
- Publish the Reschedule and Rating forms. Their links go out in the SMS.
- Tell customers when you collect their phone number that you will text them about their delivery.
- Connect an SMS provider or finish business verification, switch the follow-ups and report on, and test each status with your own phone.
- With a dispatch app, send
Out For Delivery,DeliveredandDelivery Failedwith the customer’s phone as a trait, and optional propertieseta_window,rider_phone,sender,tracking_refand (on failures)reason. On the Dispatch form, the same details are fields. The messages use the time window and phone number you send, and fall back to your dispatch number. - Keep full addresses out of SMS and out of the forms’ free text. Messages show only a time window and links; the rider has the address in your dispatch system. Delivery messages go to whoever holds the phone, which is often not the person at the address.
- Failed deliveries are mostly “nobody home” or “phone off”. A reschedule link that needs no call saves the second trip. In Nigeria and much of Africa, riders and customers also use WhatsApp, so a rider’s number the customer can message helps; send it as
rider_phone. - The rating form goes to everyone. Only low ratings add a task for your team, so scores aren’t filtered before they reach you.
This playbook is synthesized: no customer has run it with us yet. If you build it, tell us what you changed, and we’ll replace it with the real version.
Copilot eval
Section titled “Copilot eval”The request used to test the copilot on this playbook (a live eval):
We're a courier company. When our dispatcher marks a parcel out for delivery on a form, text the customer that it's on the way with a time window and our phone number. If a delivery fails, text them a link to pick a new day and give our dispatch team a task due in four hours. When someone submits the reschedule form, give dispatch a task to confirm it. An hour after a delivery, text a rating link, and if someone rates it 2 or below give our operations team a task to call. Never put a full address in a message. Send operations a weekly report.
It passes when every piece is a valid draft and everything lands off, with at least: form, workflow, message_template, report.
