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

The file must follow these rules:

  • The first line is the header row, exactly status,labelNumber,timestamp,reason, in that order.
  • Use LF line endings.
  • Don't quote or escape values. A comma inside a value splits the row.
  • Every status value must come from the Status Codes section. One unrecognised value rejects the whole file.
Column HeadingDescriptionExample
statusThe tracking event status. Use one of the values in the Status Codes section exactly as written.in_transit
labelNumberUnique tracking number for this package00093275101964204450
timestampDate and time of the event, in ISO 8601 format with an explicit offset or Z. Shippit treats Australian Eastern time as the event's local timezone2025-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": "in_transit",
  "labelNumber": "00093275101964204450",
  "timestamp": "2025-09-05T01:33:43Z",
  "reason": "In transit"
}

Identify the event with either field:

  • labelNumber applies the event to one package
  • consignmentNumber applies the event to the whole consignment

Send one or the other, not both.

FieldTypeDescriptionExample
statusStringThe tracking event status. Use one of the values in the Status Codes section exactly as written.in_transit
labelNumberStringUnique tracking number for this package. Send this or consignmentNumber00093275101964204450
consignmentNumberStringConsignment identifier in GS1 GINC format. Send this or labelNumber401935350000000000000003488492
timestampStringDate and time of the event, in ISO 8601 format with an explicit offset or Z. Shippit treats Australian Eastern time as the event's local timezone2025-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 confirm the request was received. Shippit validates the payload after sending the response, so a 202 confirms that the request arrived, not that Shippit recorded the event. During testing, check the order in Shippit to confirm the event landed.
  • 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