Tracking
How often tracking data refreshes, and how to schedule around it
There is no fixed daily sync time. A shipment re-syncs at most every 12 hours, and every 4 hours while it is arriving — and the timestamp on the shipment is the only reliable answer to how current it is.
The short answer
There is no fixed sync time. We do not run a 9am or 10am batch. Each shipment re-syncs on a rolling gap measured from its own last sync:
- At most every 12 hours for a shipment with a long way to go.
- Every 4 hours while it is arriving — from 48 hours before its arrival date until 7 days after it.
The shorter window exists because that is when a carrier actually revises a date. A box three weeks out rarely changes; one due on Tuesday can move to Saturday at any hour, and waiting half a day to find that out is half a day of showing you a date that has already passed.
After 7 days overdue it goes back to the 12-hour gap. At that point the line has stopped publishing anything about the box, and asking more often costs money and returns the same row.
What actually triggers a sync
- Somebody opens the shipment. Viewing a shipment refreshes it, on every plan including free. Attention is the best signal there is that a number matters.
- The background sweep. On paid plans, shipments are re-synced even when nobody is looking. This is what a paid plan buys — not refreshing at all, but refreshing while you sleep.
- You ask. The refresh control on a shipment, and the tracking endpoints on the API, both re-sync on the spot.
All three share the same gap. A manual refresh is not extra on top of the automatic one — it is two per rolling day in total, or six while the shipment is arriving, however they are triggered.
If you are scheduling a job around it
The mistake to avoid is picking a time. Because the gap runs from each shipment's own last sync rather than from a wall clock, shipments drift relative to each other and there is no window that is reliably "after the refresh".
Ask for what changed instead of guessing when it changed:
- Pull the delta.
GET /api/v1/shipments?updated_since=<ISO timestamp of your last run>returns only the shipments whose tracking data has moved since then. This is the primitive built for exactly this job — it is far cheaper than re-reading your whole book, and it cannot miss a change by landing between syncs. - Read the timestamp. Every row carries
last_synced_at, andnext_refresh_eligible_atsays when that row can next change — already adjusted for which of the two gaps applies to it. - Force the few that matter. For shipments that are both stale and important, call the tracking endpoint for those references. They re-sync on the spot if they are outside their gap.
Reading the timestamp rather than assuming a schedule is also the only approach that stays correct if the cadence ever changes.
Why a timestamp can look old and not be stale
Ocean carriers publish in batches, not continuously. A status that last synced eight hours ago is often not us being behind — it is the most recent thing the line has said about that box. The timestamp tells you when we last asked; if nothing changed, asking again produces the same row with a newer timestamp and no new information.
If a shipment is clearly moving and we appear to be more than a day behind on it, that is worth reporting — send us the reference and we will look at the feed.
Not sure what applies to your account?
Ask the assistant in the help drawer — it can read your plan and tell you whether the background sweep is on for you, when a specific reference last synced, and when it is next eligible.
Was this helpful?