How we normalise status events from six carrier feeds so a container reads the same wherever it is.
Six carriers publish six different vocabularies for the same event. One calls it discharged, another calls it gate-out full, a third sends nothing at all until the box moves inland. Until those feeds agree, a tracking page is just a place where spreadsheets go to be re-typed.
We map every carrier status onto a single set of nine milestones and keep the raw event underneath it. The client sees one language; when something looks wrong, the desk can still read the original message from the carrier rather than a lossy summary.
Two of the six feeds go quiet between departure and arrival. We fill those windows with terminal and agent data instead of leaving a blank, and we label the source so nobody mistakes an inference for a scan.
Next is predicted ETA against actual berth performance rather than published schedule, so the number on the screen is the one worth planning against.
3/8
23:59
73
Every milestone carries its origin — carrier scan, terminal record or agent confirmation. A tracking page that hides its sources is a tracking page nobody trusts twice.
Every carrier status maps onto one shared vocabulary, with the raw event kept underneath so the desk can always check the original.
Multi-carrier API integration
Normalised milestone tracking
Source labelling on every event
Terminal and agent gap filling
Exception alerts by email and webhook
The goal was never a prettier dashboard. It was to end the daily spreadsheet reconciliation that three of our clients were still doing by hand at eight in the morning.
Tell us what you're shipping and where it needs to be. A coordinator — not a bot — will reply with routing options and a landed cost.