A missed delivery shouldn't mean a lost order.
Non-delivery reports (NDRs) are where logistics operations leak money. This demo shows four reschedule branches — self-serve, agent call, deposit-required and a clean release path after repeated failures.
What triggers this workflow
Driver app fires the NDR event with the reason (not home, refused, address unreachable).
Source: Driver app / OMS event
Workflow steps
- OMS + n8nCaptureNDR recorded against the order with attempt number and reason.
- n8nBranchSelf-serve / agent-call / deposit-required / release — depending on attempt and value.
- Listmonk + SMSCustomer choiceSelf-serve branch hands the customer a slot picker link.
- ChatwootHandoffAgent-call branch pages the dispatcher; release branch sends a refund-or-rebook message.
Tools used
Human handoff
Repeated failures go to a person
After two failed attempts, the deposit-required branch protects the next slot; after three, a real person calls the customer to confirm refund or rebook.
- Second missed delivery on the same order
- Customer reports damage or refused goods
- Address has been flagged as inaccessible in past deliveries
Try it in your browser
Edit the sample inputs, choose a branch, and see what the workflow produces. The sandbox runs offline — no accounts touched, no messages sent.
Try it in your browser
Edit the inputs, pick a branch, and see what the workflow produces. Runs entirely in your browser — no messages are sent, no accounts are touched.
1. Driver marked non-delivery
- Order
- ORD-22841
- Attempt
- 1
- Reason
- Customer not home
- Time
- Fri, 2 Oct, 2:44 am
2. Branch handling
Hi Hannah, we missed you for order ORD-22841 (Customer not home). Pick a new slot: cardr.example/r/abc. We'll hold your order for 48 hours. — Cardinal Couriers
Sample data only. Numbers, names and messages are placeholders for illustration. Wire the live workflow separately using the setup notes below.
n8n workflow template
n8n template — LGM 08 Dispatcher (SIMULATED, inactive). Ships with active: false — no live integrations are wired. See the setup section below for the wiring checklist, and download the JSON to inspect or import it.
Setup for production
Wiring it for production
Live deployment needs the NDR source, a slot picker and a clear deposit policy.
- Configure the NDR event source (driver app or OMS).
- Set the attempt thresholds in the n8n workflow (default: 1 → self-serve, 2 → deposit, 3 → release).
- Wire the slot picker so the customer can pick a real slot, not a placeholder.
- Document the deposit policy in plain English and include it in the customer message.
Production prerequisites
- NDR event source with a reliable webhook
- Slot picker integration (Cal.com or your OMS slots)
- Deposit / refund policy signed off and clearly worded
Nothing here runs by default. Configuration has to be in place before any live send, booking or contact write.
Questions
Does the workflow auto-charge a deposit?
Only with explicit customer consent. The deposit-required branch asks the customer to confirm a small re-stocking confirmation — never an automatic charge.
What if the customer says they were home?
The agent-call branch pages a dispatcher with the order and the claim. The driver-side investigation happens out of band; this workflow only handles the reschedule and the customer-facing message.
More demos you can run in your browser
Failed-Delivery Reschedule (NDR) across the platform
Want this failed-delivery reschedule (ndr) workflow running on your stack?
Pick the demo you're curious about or describe your own. We'll come back with what a real deployment looks like for your business — the workflow, the prerequisites, the people involved.