Skip to main content
Every shipment created through TLDP progresses through a defined sequence of statuses, from the moment a courier is assigned right through to final delivery. You can observe this progression in real time using either the tracking API or webhooks, and you can choose between a lightweight public endpoint (safe for customer-facing pages) and a detailed backend endpoint that returns the full event history with timestamps and locations.

Shipment Status Lifecycle

A shipment moves forward through the following statuses under normal conditions. Two terminal failure states — cancelled and failed — can occur at any point if the delivery cannot be completed.

Two Ways to Track a Shipment

TLDP provides two tracking endpoints to suit different use cases. Choose based on who is making the request and how much detail they need.

Public Tracking

No authentication required — or pass your publishable key for higher trust. Returns a PublicTracking object with recipient name, courier, estimated delivery, and an event timeline. Designed for embedding in customer-facing tracking pages.

Detailed Tracking

Uses your secret key. Returns a full TrackingEvent[] array with precise timestamps, status codes, human-readable descriptions, and location data. Designed for backend monitoring and ops dashboards.

Public tracking response fields (PublicTracking)

Detailed tracking event fields (TrackingEvent)

TypeScript Examples

The public tracking endpoint is unauthenticated — no key is required. You may optionally pass a publishable key if you want to use the SDK client you already have initialised.

Handling Terminal States

When a shipment reaches cancelled or failed, no further status transitions will occur. Build your integration to handle these states explicitly:
Use webhooks instead of polling the tracking endpoints for real-time status updates. Webhooks push a shipment.status_updated event to your endpoint the moment a status transition occurs — no polling interval lag, and no wasted API quota. See the Webhooks guide to configure your endpoint.

Rate Limits for the Tracking Endpoints

Keep these limits in mind when building tracking UI or bulk monitoring scripts:
The public tracking endpoint enforces a per-IP rate limit rather than a per-key limit. If you are proxying customer tracking requests through your own server, all requests will share your server’s IP allocation. Consider caching the last-known status for a short TTL (e.g. 30 seconds) to stay well within the limit during traffic spikes.