Logistics

An integration hub that ended manual order entry for a 3PL

We replaced email, spreadsheet and one-off feeds with one integration hub, so client orders reach the warehouse automatically and billing runs itself.

Client
A regional 3PL operator
Industry
Logistics
Duration
6 months
Team
4 engineers, 1 analyst
  • −70%

    hours spent on manual order entry

  • 2 wks

    to onboard a new client, from 6+

  • 96%

    of orders processed with no manual step

The challenge

The client runs several warehouses for e-commerce and wholesale brands. Each brand sent orders in its own way: EDI from the larger retailers, CSV files over SFTP, webhooks from online stores, and a surprising number of spreadsheets attached to emails.

A team of coordinators re-keyed many of those orders into the warehouse management system by hand. Errors were common and expensive: wrong addresses, missed lines and duplicated shipments. Stock levels and shipment confirmations flowed back to clients the same way, usually once a day and often late.

Billing was harder still. Storage, pick-and-pack and shipping charges were calculated in spreadsheets at month end from exports of three systems, which delayed invoices and caused disputes. Onboarding a new client meant building yet another custom feed, a job that took six weeks or more. The sales team had started turning away smaller brands because the onboarding effort was not worth it.

Our approach

We spent the first three weeks on the warehouse floor and with the coordinators, not in a meeting room. We traced orders from arrival to dispatch for every client channel, timed each manual step, and listed the errors that caused the most rework. The resulting integration map showed which system owns each piece of data: orders, stock, shipments and charges.

From that we agreed four principles with the client:

  1. One canonical order model. Every channel translates into the same internal format at the edge, so the warehouse system only ever talks to one interface.
  2. Configuration over code for new clients. Most onboarding should mean mapping fields and choosing a channel, not writing a new integration.
  3. Nothing lost, nothing doubled. Every message is stored, carries a unique ID and can be replayed safely.
  4. Automate the highest-volume workflow first. We started with inbound orders, then shipment confirmations, then billing.

Coordinators reviewed each mapping before go-live and ran old and new processes side by side for the first clients.

What we built

The hub runs on Azure, built in TypeScript on Azure Functions with Azure Service Bus for messaging and PostgreSQL for message storage and configuration. Each client channel has an inbound adapter: EDI X12 850 and 940 documents, SFTP file drops, Shopify webhooks and a REST API for brands with their own systems. Adapters validate and translate messages into the canonical order model, then publish them to a queue the warehouse connector consumes.

Every handler is idempotent and keyed on the client's order reference, so retries never create duplicate shipments. Messages that still fail after automatic retries land in a dead-letter queue. A small operations console shows each failed message with the reason, lets a coordinator correct the data and replay it, and records who changed what.

Shipment confirmations and stock levels flow back out through the same adapters within minutes, and clients can see order status in a simple tracking portal. A billing service reads activity events from the hub and calculates storage, handling and shipping charges against each client's rate card. Finance reviews and approves the draft invoices instead of building them by hand. OpenTelemetry traces follow each order end to end, and alerts go to the operations team rather than to developers.

The results

Six months after kickoff, about 96% of orders reach the warehouse with no manual step, and hours spent on order entry fell by roughly 70%. The coordinators now focus on genuine exceptions and client questions.

Onboarding a new client takes about two weeks, mostly mapping and testing, instead of six or more. The sales team has reopened conversations with smaller brands it had previously turned away.

Month-end invoices go out days earlier, and billing disputes have dropped because each charge can be traced back to the order and event that caused it. The client's in-house developer now maintains the adapters, with runbooks and a configuration guide we wrote together.

Simplified view: one integration hub between the operational systems and everything that consumes their events.

Technology

  • Azure Service Bus
  • Azure Functions
  • TypeScript
  • Node.js
  • PostgreSQL
  • EDI X12
  • SFTP
  • Shopify API
  • REST webhooks
  • React
  • OpenTelemetry

Next case study

HealthcareA multi-site outpatient clinic group

A patient app that took the pressure off a clinic group's phones

We designed and built an accessible booking and intake app, connected to the clinics' practice system, so patients self-serve and front desks get time back.

Want results like these in your business?

Tell us where things are slow, manual or fragile. We'll show you how we'd approach it and what a first phase could deliver.

Reply within one business day. No sales scripts.