datathere
← Blog | Supply Chain & Logistics

Cross-Carrier Tracking Consolidation: One View of Shipment Milestones

Mert Uzunogullari|

The problem starts with “delivered”

FedEx calls it DL. UPS calls it D. DHL sends delivered as a free-text string inside a status description field. A regional carrier in the Midwest sends a numeric code 7 that means “proof of delivery scanned.” Another regional carrier sends 7 to mean “held at depot.”

Every carrier in your network reports the same physical event — a package reached its destination — using different codes, different field structures, and different definitions. Multiply that across every milestone in a shipment’s lifecycle (pickup, in transit, out for delivery, exception, return) and you have a data problem that grows with every carrier you onboard.

Most logistics operations manage somewhere between 5 and 30 carriers. Each one provides tracking data through a different API, a different file format, or a different EDI transaction set. The data arrives in different schemas, at different frequencies, with different levels of granularity. Some carriers report 4 milestones. Others report 40.

Building a unified tracking view across all of them is not a technology problem in the traditional sense. The APIs work. The data arrives. The problem is that none of it means the same thing.

What fragmented tracking actually costs

The operational cost of fragmented tracking data is not abstract. It shows up in specific, measurable ways.

Inaccurate ETAs. Estimated time of arrival calculations depend on knowing where a shipment is in its lifecycle. If “in transit” means different things for different carriers (one reports it when the truck leaves the origin facility, another when it reaches a regional hub), your ETA model is working with inconsistent inputs. The result is delivery predictions that are off by hours or days, depending on the carrier.

Manual status checks. When the consolidated view is unreliable, customer service teams fall back to checking individual carrier portals. A single “where is my package” inquiry can take 5-10 minutes if the agent needs to log into a carrier site, find the tracking number, interpret the carrier-specific status, and translate it into something the customer understands. At scale, this becomes a staffing problem.

Exception handling delays. A shipment exception (a failed delivery attempt, a customs hold, a damaged package) requires fast response. If exception events are buried in carrier-specific formats that your systems do not parse correctly, the delay between the event and your team’s awareness of it can stretch from minutes to hours. That gap is where customer complaints originate.

Reporting distortion. Carrier performance metrics (on-time delivery rates, transit time averages, exception frequencies) are only meaningful if the underlying events are comparable. Comparing FedEx’s on-time rate against a regional carrier’s rate is meaningless if “on time” is measured against different milestone definitions.

The mapping challenge beneath the surface

Normalizing carrier tracking data is fundamentally a field mapping problem, but a particularly nasty one.

A typical carrier tracking event contains a status code, a timestamp, a location, and sometimes a description. The challenge is that each of these fields varies across carriers in ways that are not obvious until you start processing real data.

Status codes. Some carriers use standardized code sets. Others use proprietary codes documented in a PDF that was last updated three years ago. Some carriers overload a single code with multiple meanings depending on a secondary field. Mapping all of these to a canonical milestone set (picked up, in transit, out for delivery, delivered, exception, returned) requires understanding each carrier’s specific semantics.

Timestamps. UTC, local time at origin, local time at destination, local time at the scanning facility. Carriers are inconsistent about which timezone they report in, and some do not include timezone information at all. A tracking event timestamped 2026-03-07 14:30:00 is ambiguous without knowing whether that is Eastern, Pacific, or UTC. Sorting events chronologically across carriers requires normalizing every timestamp to a common reference.

Locations. One carrier sends a structured object with city, state, and country fields. Another sends a single string: "CHICAGO IL US". A third sends a facility code like ORD5 that maps to a specific warehouse but contains no geographic information unless you maintain a lookup table. Standardizing locations for mapping and visualization requires parsing, geocoding, or joining against reference data.

Event granularity. FedEx might report a “departed FedEx location” event that has no equivalent in a regional carrier’s tracking feed. The regional carrier reports only pickup, in-transit, and delivered. Your unified schema needs to accommodate both levels of detail without losing information from the verbose carriers or creating false gaps for the sparse ones.

How datathere approaches carrier normalization

This kind of multi-source normalization is where AI-assisted field mapping earns its value. Each carrier feed is a separate source with its own schema. The destination is your canonical tracking event model, the unified structure your systems consume.

datathere’s approach works at the field level. The AI analyzes each carrier’s tracking schema, examines sample data, and generates mappings to your canonical model with confidence scores. A carrier status code field containing values like DL, IT, PU gets mapped to your milestone field with transformation logic that converts each code to your standard terminology.

The multi-source join capability matters here because carrier tracking data often needs enrichment. A tracking event might reference a shipment by the carrier’s tracking number, but your systems need the order ID. Joining carrier feeds against your order management data during the integration, rather than after, means the unified tracking stream arrives ready to use.

Quality enforcement handles the edge cases that break downstream systems. A tracking event with no timestamp gets flagged. A status code that does not map to any known milestone gets quarantined for review rather than silently dropped or incorrectly categorized. The difference between flagging an anomaly and ignoring it is often the difference between catching a carrier API change the day it happens and discovering it three weeks later in a customer escalation.

Timestamps deserve their own strategy

Timestamp normalization is worth calling out separately because it affects everything downstream.

The cleanest approach is to normalize all carrier timestamps to UTC at the point of ingestion. This requires knowing each carrier’s timestamp convention, which is not always documented. Some carriers switched from local time to UTC in a recent API version, meaning historical data follows one convention and current data follows another.

Once timestamps are in UTC, deriving local times for display purposes becomes a location lookup rather than a carrier-specific rule. “What time was this package delivered?” is answerable from the UTC timestamp plus the delivery location, regardless of which carrier handled the shipment.

datathere’s transformation layer handles this conversion as part of the mapping. The AI examines sample timestamps from each carrier, identifies the format and likely timezone convention, and generates the appropriate transformation expression. When the convention is ambiguous (a carrier that sends timestamps without timezone indicators), the mapping gets a lower confidence score, prompting a human reviewer to confirm the correct interpretation before the mapping goes to production.

The payoff of a clean milestone view

A properly consolidated tracking stream changes what is possible operationally.

ETA models improve because they are working with consistent inputs. When “in transit” means the same thing regardless of carrier, transit time calculations become reliable enough to share with customers.

Exception response times drop because every carrier’s exception events surface in the same stream, in the same format, with the same severity model. An operations team monitoring one dashboard catches problems that previously required checking five carrier portals.

Carrier performance comparisons become meaningful. On-time delivery rates, average transit times, and exception frequencies are calculated against the same milestone definitions. Procurement teams negotiating carrier contracts can back their positions with clean data instead of spreadsheets full of caveats.

The work to get there is not trivial. Carrier tracking normalization is a genuinely hard data problem with edge cases that multiply as your carrier network grows. But it is a solvable problem — one that starts with treating each carrier feed as a source schema and your canonical tracking model as the destination, then letting AI-assisted mapping do the tedious work of connecting the two.