Put ocean and air tracking on your own site
Two drop-in widgets: a container tracker and an air waybill tracker. Each is a <div> and a <script> tag — no build step, no framework, nothing to install. Both can sit on the same page.
The widget runs in your visitor's browser, so it never sees your API key. It calls one endpoint on your server, and that endpoint adds the key and forwards the request to Tracking One.
Get an API key · Container Tracking · Air Tracking
How it works
Every integration is the same two steps: embed the widget's <div> and <script> tag on your page, then host a small proxy endpoint that adds your API key and forwards the widget's request to Tracking One.
The embed snippet, the parameters that widget sends and four ready proxy samples (Node, Python, WordPress, Laravel) are on that widget's own page — Container Tracking or Air Tracking. Nothing here repeats them.
Every URL on these pages that starts with https://your-site.example is a stand-in for your own domain: those endpoints are ones you write and host, not ones we run.
Things that break a proxy
- Swallowing the status code — the widget branches on 401, 402 and 429. A proxy that answers 200 with an error body, or turns everything into a 500, leaves the visitor with a generic failure where there was a specific message.
- Reshaping the body — the widget parses the upstream document as it is. Unwrapping it, renaming keys or re-encoding it is what makes a working key look like a broken widget.
- Dropping
routeDetails/routePath— those flags are what fill the map. Without them the widget renders a shipment with no route to draw. - Forwarding empty parameters —
carrierCode=is not the same as an absentcarrierCode: the upstream autodetects the carrier only when the parameter is absent. - Cross-origin without credentials — the widget sends its request with credentials, so if your proxy is on another origin it needs
Access-Control-Allow-Credentials: trueand an explicitAccess-Control-Allow-Origin— the*wildcard is rejected by the browser in that combination. Same-origin proxies need no CORS headers at all.
Cost and limits
Every lookup the widget makes is one request against your account, billed exactly as a direct API call — the proxy adds no charge of its own and repeat lookups of a shipment you have already tracked stay free.
The API rate limit is per key, not per visitor, so a widget on a busy page shares one budget. Cache the upstream response in your proxy if that becomes tight.
API reference → · Your API keys →
Need help?
If a widget mounts but never answers, check its proxy in isolation first: call it with the parameter the widget sends and confirm you get the upstream JSON and its status back — the parameter name is on that widget's own page.