Tracking
Tracker sessions, milestones, ETAs, and public links — how chrt knows where things are.
chrt tracks shipments through a mix of driver location (the chrt mobile app reporting the driver’s GPS), flight data (FlightAware feeds), and tracker devices (Tive and similar hardware reporting independently of any phone). On any active order, all three streams can flow at once. This page is the model behind every map, timeline, and ETA badge in the product.
The two tracking surfaces
The two surfaces share the same underlying objects but are entered from
different routes (/orders/<order-ref> versus /tracking/sessions/<id>).
Tracker session
A tracker session is a window of recording for a single tracker device. Sessions have a start time, an optional end time (or auto-termination after three days by default), a status (active or ended), and a stream of timestamped data points — latitude, longitude, battery, temperature when supported.
Each session can optionally be associated with one or more flights so chrt can alert you if the device’s location is inconsistent with the flight (for example, the device hasn’t reached the airport in time for boarding).
Milestones
Every task on a task group emits a milestone event when its state changes. The set of possible milestones depends on the task-group type:
- Ground tasks —
pickup,deliver,tender_to_airline,recover_from_airline,consolidate,hold,other. - Flight tasks (auto-completed from FlightAware) —
cargo_received_by_airline,cargo_loaded_onto_flight,flight_departed,flight_arrived,cargo_offloaded_from_flight,cargo_cleared_customs,cargo_ready_for_recovery. - OBC tasks — the courier-and-cargo lifecycle from
courier_departed_for_pickup_locationthroughcourier_arrived_at_delivery_location.
Milestones become entries on the order timeline (the Details tab on the order page) and trigger any matching email or webhook notifications. See Orders, task groups, segments, stops for the full task model.
ETA
The ETA for each upcoming task on an order is calculated live and shown on the order timeline and on stop event panels. The calculation differs for ground-only orders versus orders that include a flight.
Ground-only orders
For each task in order, chained:
drivingDuration comes from the Mapbox Directions API; the buffer is 20
minutes between consecutive tasks. If a task group is in progress and a
driver location is known, the next ETA is recalculated from the driver’s
current position via Mapbox routing.
Orders with flight task groups
Flight legs override the chain at their boundary:
Flight departure and arrival times pull from FlightAware in this priority:
- Departure —
actual_out>estimated_out>scheduled_out. - Arrival —
actual_in>estimated_in>predicted_in>scheduled_in.
Time windows override ETA
Every task can have a time window with left_boundary_timestamp (earliest
acceptable) and right_boundary_timestamp (latest acceptable). When a time
window is set, ETA prefers right_boundary_timestamp (the deadline) over the
routed estimate, and uses the latest of multiple overlapping windows.
Constants
Public links
A public tracking link is a chrt-hosted page anyone can open with just the URL — no chrt account required. Two flavors:
Public links are revocable at any time. The on-order public link uses a share dialog with per-segment toggles; the standalone-session public link is created from the session detail page.
See Public tracking links (shippers) and Share a tracking session for the share flows.
Map layers
The Map tab on an order page can show three layers simultaneously:
Use the layer toggle in the top-left of the map to switch between them.
Related guides
- Orders, task groups, segments, stops — the task and milestone model.
- Tracking shipments (shippers) — reading the order page as a shipper.
- Public tracking links (shippers) — sharing on-order tracking.
- Standalone trackers — creating sessions for your own cargo.
- Tracker API — programmatic access to sessions and data points.
- Trackers on orders — attaching devices to cargo on a chrt order.

