Send tracking events to Shippit

Providing timely and accurate tracking updates is essential for a good customer experience. You are responsible for sending tracking events to Shippit as shipments move through your network.

You can send tracking events using one of two methods:

  • CSV file uploads for batch updates
  • Webhooks for real-time updates

Shippit strongly recommends that you use webhooks, as they provide a much better customer experience.

CSV file upload

To use this method, your system generates a single CSV file containing all new tracking events and uploads it to the Shippit SFTP server. You must upload a tracking file as soon as you have updated tracking information, to maintain service level agreements (SLAs).

  • Host name: carrier-sftp.shippit.com
  • Directory: /inbound/tracking/
  • Filename: Tracking_YYYY-MM-DD_HHMMSS.csv

For example, a tracking file generated on 29 August, 2025, is named Tracking_2025-09-05_113343.csv.

When Shippit have processed the tracking CSV file, it’s moved to the processed folder on the SFTP server.

The tracking CSV file

Column Heading Description Example
status The short code representing the tracking event. For a complete list, see the Status Codes section. IT
labelNumber Unique tracking number for this consignment CARR00098765
timestamp Date and time of the event, in ISO 8601 UTC format 2025-09-05T01:33:43Z
reason A human-readable description of the tracking event In Transit

Webhooks

This is the preferred method of sending tracking event updates.

To use this method, send updates to Shippit in real-time as soon as a tracking event occurs in your system. For each tracking event, send an HTTP POST request with a JSON payload to Shippit’s webhook endpoint:

  • Endpoint URL: https://app.shippit.com/carrier-gateway/external/tracking/<carrierCode>
  • HTTP Method: POST

Use these headers:

  • Content-Type: application/json
  • Authorization: Bearer <YOUR_SECRET_TOKEN>

Shippit provides your secret token during setup.

The webhook payload must use this JSON format:

{
  "status": "completed",
  "labelNumber": "00065432101000066",
  "timestamp": "2025-06-01T12:00:00+10:00",
  "reason": "Delivered successfully",
}
Field Type Description Example
status String The short code representing the tracking event. For a complete list, see the Status Codes section. IT
labelNumber String Unique tracking number for this consignment CARR00098765
timestamp String Date and time of the event, in ISO 8601 UTC format 2025-09-05T01:33:43Z
reason String A human-readable description of the tracking event In Transit

Handling responses and retries

When you send the webhook payload, Shippit responds with an HTTP status code to indicate success or failure:

  • Success: Shippit responds with HTTP 202 Accepted to acknowledge receipt.
  • Errors: For any other status (4xx or 5xx), treat the request as failed. Implement a retry policy with exponential back off for failed requests.

For a list of error codes, along with remedies to try, see the Troubleshooting section.

Status codes

Both CSV and webhook methods use the same set of status codes:

Code Description
awaiting_collection Awaiting collection
awaiting_drop_off Awaiting drop off
cancelled Cancelled
completed Completed
completing Completing
customs_awaiting_payment Customs awaiting payment
customs_failed Customs failed
customs_on_hold Customs on hold
damaged Damaged
delivery_attempted Delivery attempted
delivery_failed Delivery failed
ignore Ignore
in_transit In transit
in_transit_with_onforwarder In transit with onforwarder
insufficient_address Insufficient address
lost Lost
parcel_completed Parcel completed
partially_completed Partially completed
pickup_failed Pickup failed
ready_for_pickup Ready for pickup
return_booked Return booked
return_booking_failed Return booking failed
return_requested Return requested
returned_to_sender Returned to sender
untrackable Untrackable
with_customs With customs
with_driver With driver