A 3PL buddy called me last week: "We spent tens of thousands on an in-transit tracking system, and customers still call every day asking where their freight is — did we just burn that money?" I asked him three questions: what's your carrier data feed rate? At how many minutes of ETA slip do you fire an alert? How many alerts go off per day? He couldn't answer a single one. Then I could tell him: yes, the money is probably burned. Not because the system is bad, but because you never treated this as an engineering problem.

Where in-transit data comes from: get the physics right first

There are exactly three sources of in-transit position data. Stitched together, that's "visibility." Buy only one and don't complain the picture is blurry.

First, GPS telematics devices. Think of it as a smartphone's location service bolted onto a truck: the device throws a coordinate at the platform every few dozen seconds to a few minutes. Highest accuracy, most real-time — and you pay for hardware plus data plans. Best value for your own fleet.

Second, ELD data. Since the US mandated ELDs (electronic logging devices) on interstate trucks at the end of 2017 — originally for hours-of-service compliance — position data rides along as a byproduct. With the carrier's authorization, you can use that feed for tracking without installing anything new. It's like buying a washer and getting the dryer thrown in; use it. One catch: the carrier owns that data. No authorization, no feed, no workaround.

Third, carrier APIs or EDI 214. The cheapest pipe: the carrier pushes a status update whenever something changes — picked up, in transit, delivered. Think of it as the "typing…" indicator in a chat app — you know something's happening, but it's not a live stream. Free or nearly free, at the cost of coarse granularity and big delays; some small carriers push two or three updates a day.

The analogy that settles every buying conversation: GPS is the HD livestream, ELD is the official broadcast, EDI 214 is the text play-by-play. Want the livestream, pay for the bandwidth. Only need the score, the text feed will do. Before you sign anything, ask yourself: do I need the livestream or the score?

An ETA isn't calculated. It's guessed.

The formula looks simple — remaining miles divided by predicted speed — but "predicted speed" is where all the bodies are buried.

It's exactly like your phone's navigation ETA: it doesn't divide by the speed limit. It blends historical speeds for that road at that hour, live traffic, and whether you're stopping for coffee. Freight ETAs add three more variables: hours-of-service rules (a driver hitting the legal limit must rest — ten dead hours the algorithm has to subtract); dwell at facilities (three hours in line at the last customer's dock adds three hours to the ETA, full stop); and status latency (that "in transit" EDI 214 might describe where the truck was two hours ago — compute from a wrong starting point, get a wrong answer).

So an ETA is maybe 30% algorithm, 70% how fresh the data is. A five-minute feed interval and a two-hour interval produce two different species of ETA. Don't expect one algorithm to serve both.

Fall 2024, a 3PL in Ontario, California: 400 loads a day in peak season, a brand-new tracking platform, and customers still furious about ETAs. I took one look: 70% of their freight moved with small carriers that only sent EDI 214, two or three updates a day. The algorithm was computing ETAs from six-hour-old coordinates — of course they were fiction. We switched that segment to milestone tracking: pickup and delivery events only, no ETA in between. Complaints went down. Admitting you can't compute it beats publishing a wrong ETA — a wrong ETA burns customer trust, and trust costs more than no ETA at all.

Exception alerts: wrong thresholds equal no thresholds

Three layers of alerting are enough. More than that is noise.

Layer one: ETA deviation. Thirty minutes behind promise — yellow, dispatcher only. Sixty minutes — red, notify the customer and escalate to the supervisor. These numbers aren't vibes: thirty minutes is the window where a dispatcher can still recover it (swap drivers, reroute); sixty is where the customer starts replanning production. Thresholds belong exactly on the "still fixable" line — too early and you're the boy who cried wolf, too late and you're writing history.

Layer two: geofences. Dwell at a pickup or delivery point beyond two hours with no movement — alert. Maybe the truck's detained, maybe it's in line, maybe the driver's asleep; the cause doesn't matter, what matters is someone asks.

Layer three: the freight itself. Reefer box temperature drifting more than 3°C off setpoint for 15 minutes — pick up the phone, don't wait for a push notification. Some exceptions can't wait for a ticket queue.

Rant time: the most common pseudo-requirement I see is "push every exception to the customer's phone in real time." Two hundred alerts a day, and by day three the customer mutes notifications — which equals no alerting at all. An alert's value isn't volume; it's "every ping gets a human." My line: customer-facing alerts, max one per load per day. Internal alerts can be chattier, but they must be tiered. An untiered alert is noise.

Summer 2023, a fresh-food distributor: a reefer load running Fresno to LA, box sensor screaming — refrigeration unit failure. The system fired three escalating tiers within 15 minutes: dispatcher, supervisor, customer. The dispatcher found a nearby cold storage for a cross-dock within 20 minutes and the whole load was saved. That load was worth hundreds of thousands of dollars; the temperature sensors rented for a few hundred a year. That's what alerting is for: silent for months, decisive in the one hour that matters.

The buy line: three players, three ways to buy

Own fleet under 50 trucks: don't build a platform, buy SaaS, pay per truck per month. You can't afford a data team, and you don't need one.

Mostly outsourced carriers: buy an aggregation platform — there are several on the market, each doing exactly one thing: stitching tracking feeds from thousands of carriers into one pipe. One metric decides the purchase: what percentage of your carriers does it cover? Ninety percent versus fifty percent coverage is a different product.

3PL or forwarder: start with the tracking module inside your TMS, extend later. Don't buy the full suite on day one — first make "can the customer self-serve the where's-my-freight question" true, then make "is the ETA accurate" true. Reverse that order and the money burns.

The line in one sentence: if your annual freight spend isn't seven figures (USD), don't talk about building — buy. In-transit visibility without scale is a bonfire for cash.

The maintenance potholes: go-live is the starting line

Pothole one: GPS drift. Downtown high-rises, indoor lots — coordinates wander hundreds of meters. Set a 200-meter geofence radius and the truck "exits" it daily, drowning you in false alerts. Start at 500 meters, go to a full kilometer in cities. When precision fails, widen the fence.

Pothole two: drivers killing the feed. ELDs are federally mandated — untouchable. But a phone-app tracker gets swiped closed in seconds. Feed rate drops from 90% to 40%, and every ETA dies. No technical fix exists; the fix is contractual: write "keep tracking on" into carrier terms, tie feed uptime to rate. Non-compliant carriers get phased out.

Pothole three: time zones. Interstate freight, one wrong time-zone conversion, and every arrival time in the batch is off by three hours. Check time-zone handling in week one. Everyone steps in this one.

Pothole four: treating delayed data as live. Some carrier APIs batch-push hourly. Build "real-time" alerting on that and you're always an hour late to your own emergency. Ask before signing: what's the push frequency? Can't answer — walk away.

So was it worth it? Look at one number: carrier-initiated feed rate. Hold it above 80% and the system prints money — dispatchers reclaim two to three hours a day of phone-chasing, customer complaints get cut in half. Below 60%, don't renew; renegotiate the tracking clauses in your carrier contracts first. Technology is never the bottleneck. People not cooperating is. Feed the algorithm garbage data and even the smartest model is furniture.

By Da Liu, Automation Engineer