ShippitDeveloper Centre

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 HeadingDescriptionExample
statusThe short code representing the tracking event. For a complete list, see the Status Codes section.IT
labelNumberUnique tracking number for this consignmentCARR00098765
timestampDate and time of the event, in ISO 8601 UTC format2025-09-05T01:33:43Z
reasonA human-readable description of the tracking eventIn 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:

JSON
{
  "status": "completed",
  "labelNumber": "00065432101000066",
  "timestamp": "2025-06-01T12:00:00+10:00",
  "reason": "Delivered successfully",
}
FieldTypeDescriptionExample
statusStringThe short code representing the tracking event. For a complete list, see the Status Codes section.IT
labelNumberStringUnique tracking number for this consignmentCARR00098765
timestampStringDate and time of the event, in ISO 8601 UTC format2025-09-05T01:33:43Z
reasonStringA human-readable description of the tracking eventIn 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:

CodeDescription
awaiting_collectionAwaiting collection
awaiting_drop_offAwaiting drop off
cancelledCancelled
completedCompleted
completingCompleting
customs_awaiting_paymentCustoms awaiting payment
customs_failedCustoms failed
customs_on_holdCustoms on hold
damagedDamaged
delivery_attemptedDelivery attempted
delivery_failedDelivery failed
ignoreIgnore
in_transitIn transit
in_transit_with_onforwarderIn transit with onforwarder
insufficient_addressInsufficient address
lostLost
parcel_completedParcel completed
partially_completedPartially completed
pickup_failedPickup failed
ready_for_pickupReady for pickup
return_bookedReturn booked
return_booking_failedReturn booking failed
return_requestedReturn requested
returned_to_senderReturned to sender
untrackableUntrackable
with_customsWith customs
with_driverWith driver