17TRACK fields in every export
Tracking output carries the tracking number, the carrier the aggregator resolved it to, the raw status text as the aggregator words it, our normalised status, the event timestamp with time zone, the event location and the aggregator's own delivery state.
Two status columns exist for the same reason as on any carrier: the raw wording is what lets somebody audit a decision months later, and the normalised value is what lets a dashboard count anything. On an aggregator there is a third consideration, because the wording you see has already been translated once by the aggregator from the carrier's own vocabulary.
Latency fields are recorded explicitly and this is the part that distinguishes a careful pipeline from a careless one: when the carrier says the event happened, when the aggregator first showed it, and when we read it. Without those three you cannot tell a slow carrier from a slow aggregator from a slow schedule.
Carrier coverage records come from the published carrier list: carrier name, country, the identifier the aggregator uses and the tracking number formats it recognises. That is a useful dataset in its own right for anyone building a multi carrier product.
Every row carries the collection timestamp and the source, because a mixed pipeline that also talks to carriers directly needs to know which rows came from where.