The situation
Orders arrived from the online store, the ERP and email. Coordinators re-typed each one into two or three carrier portals, then reconciled invoices against shipments at the end of the day.
It worked — until volume doubled. One typo meant a misrouted pallet, a missed delivery window and an evening on the phone with carriers.
Where it broke
- 01Five systems and no single source of truth: each held part of the order.
- 02Failures were silent. A rejected booking surfaced only when a customer called.
- 03Reconciliation was manual, so errors were found days after they happened.
What we built
An n8n orchestration layer, running in hardened Docker containers on the client's own server, receives every order, validates it and writes one reconciled record to PostgreSQL. From there it books the carrier, generates labels and syncs invoices to the ERP and accounting.
Failures don't disappear: they go to a dead-letter queue, retry automatically, and alert a coordinator — with the fix already suggested — only when a person is genuinely needed. Drivers can send a bill of lading on WhatsApp; it is read, matched to the shipment and filed.
- OrdersFrom the store, the ERP and email
- ReconcileValidates and matches every record
- CarriersBooks, labels and tracks automatically
- Ops teamSees exceptions only — with context
How we rolled it out
- Days 1–3Every system, field and failure mode mapped; one order schema agreed with operations.
- Days 4–9Pipeline built on staging, with real historical orders replayed through it.
- Days 10–12Parallel run: pipeline and team processed the same orders, and differences were reviewed daily.
- Days 13–14Cut-over carrier by carrier, with the manual path kept as a fallback for a week.
What changed
Coordinators stopped re-typing data. They now handle exceptions, carrier relationships and customers — and the evening firefighting is gone, because problems are caught when they happen, not when a customer calls.
Evenings belong to the coordinators again. Exceptions arrive with the fix already suggested.
Representative outcomes from comparable engagements.
What we'd tell another team
Reliability is a design decision. Retries, dead-letter queues and clear alerts are what let a team trust automation with real money and real shipments.
