Webhook Changelog

Get all the latest webhook updates by AfterShip Tracking here.


ChangeBeforeAfter
as-api-version header’s value2025-012025-04
ChangeAffected Endpoints
New fields in Tracking model:
latest_estimated_delivery.revise_reason
API endpoint:
- GET /trackings
- GET /trackings/:id
- DELETE /trackings/:id
- POST /trackings
- PUT /trackings/:id
- POST /trackings/:id/mark-as-completed
- POST /trackings/:id/retrack

Tracking Webhook
The length of the tracking ID has been updated from a 32-character string to a string ranging from 0 to 128 charactersAPI endpoint:
- GET /trackings
- GET /trackings/:id
- DELETE /trackings/:id
- POST /trackings
- PUT /trackings/:id
- POST /trackings/:id/mark-as-completed
- POST /trackings/:id/retrack

Tracking Webhook
The existing fields will be deprecated:
- tracking_origin_country_region
- tracking_destination_country_region
- tracking_postal_code
- tracking_state
API endpoint:
- GET /trackings
- GET /trackings/:id
- DELETE /trackings/:id
- POST /trackings
- PUT /trackings/:id
- POST /trackings/:id/mark-as-completed
- POST /trackings/:id/retrack

Tracking Webhook
ChangeBeforeAfter
as-api-version header’s value2024-102025-01
Tracking modal new fields:
first_mile.tracking_number
first_mile.slug
first_mile.transit_time
first_mile.courier_tracking_link
first_mile.courier_redirect_link
last_mile.transit_time
customers[x].role
customers[x].language
checkpoints[x].source
API endpoint:
- GET /trackings
- GET /trackings/:id
- DELETE /trackings/:id
- POST /trackings
- PUT /trackings/:id
- POST /trackings/:id/mark-as-completed
- POST /trackings/:id/retrack

Tracking Webhook
- The existing fields tracking.next_couriers will be replaced with tracking.last_mile
- The existing field tracking.customer_name will be replaced with tracking.customers[x].name
- The existing field tracking.smses will be replaced with tracking.customers[x].phone_number
- The existing field tracking.emails will be replaced with tracking.customers[x].email
API endpoint:
- GET /trackings
- GET /trackings/:id
- DELETE /trackings/:id
- POST /trackings
- PUT /trackings/:id
- POST /trackings/:id/mark-as-completed
- POST /trackings/:id/retrack

Tracking Webhook
The existing field tracking.last_updated_at will be deprecated.API endpoint:
- GET /trackings
- GET /trackings/:id
- DELETE /trackings/:id
- POST /trackings
- PUT /trackings/:id
- POST /trackings/:id/mark-as-completed
- POST /trackings/:id/retrack

Tracking Webhook
tracking.tracking_ship_date supports new value formats:
- YYYY-MM-DD
- YYYY-MM-DDTHH:mm:ss
- YYYY-MM-DDTHH:mm:ssZ
API endpoint:
- GET /trackings
- GET /trackings/:id
- DELETE /trackings/:id
- POST /trackings
- PUT /trackings/:id
- POST /trackings/:id/mark-as-completed
- POST /trackings/:id/retrack

Tracking Webhook
A new checkpoint will be created when the user marks a tracking as completed.API endpoint:
- GET /trackings
- GET /trackings/:id
- DELETE /trackings/:id
- POST /trackings
- PUT /trackings/:id
- POST /trackings/:id/mark-as-completed
- POST /trackings/:id/retrack

Tracking Webhook
- Rename tracking.courier_destination_country_iso3 to tracking.courier_destination_country_region
- Rename tracking.origin_country_iso3 to tracking.origin_country_region
- Rename tracking.destination_country_iso3 to tracking.destination_country_region
- Rename tracking.checkpoints[x].country_iso3 to tracking.checkpoints[x].country_region
- Rename tracking.checkpoints[x].country_name to tracking.checkpoints[x].country_region_name
- Rename tracking.tracking_origin_country to tracking.tracking_origin_country_region
- Rename tracking.tracking_destination_country to tracking.tracking_destination_country_region
- Rename courier.service_from_country_iso3 to courier.service_from_country_regions
- Rename estimated_delivery_date.origin_address.country to estimated_delivery_date.origin_address.country_region
- Rename estimated_delivery_date.destination_address.country to estimated_delivery_date.destination_address.country_region
API endpoint:
- GET /trackings
- GET /trackings/:id
- DELETE /trackings/:id
- POST /trackings
- PUT /trackings/:id
- POST /trackings/:id/mark-as-completed
- POST /trackings/:id/retrack
- GET /couriers
- GET /couriers/all
- POST /couriers/detect
- POST /estimated-delivery-date/predict-batch
- POST /estimated-delivery-date/predict

Tracking Webhook
Tracking marked as completed endpoint supportsevent_datetime fieldAPI endpoint:
- POST /trackings/:id/mark-as-completed
ChangeBeforeAfter
as-webhook-version header’s value2024-072024-10
Tracking modal new fields:
aftership_tracking_url
aftership_tracking_order_url
next_couriers[x].courier_tracking_link
next_couriers[x].courier_redirect_link
-aftership_tracking_url
aftership_tracking_order_url
next_couriers[x].courier_tracking_link
next_couriers[x].courier_redirect_link
The existing field expected_delivery will be deprecated and replaced with courier_estimated_delivery_dateexpected_deliverycourier_estimated_delivery_date
ChangeBeforeAfter
as-webhook-version header’s value2024-042024-07
Tracking response new fields:
delivery_location_type
legacy_id
-delivery_location_type
legacy_id
tracking.checkpoints[x].events.code supports new enum values:
carrier_pickup_failed
dropped_off_for_carrier_pickup
delayed
handed_over_to_last_mile_carrier
received_by_last_mile_carrier
returning_to_sender
address_corrected
customer_enquiry_raised
address_verified
-carrier_pickup_failed
dropped_off_for_carrier_pickup
delayed
handed_over_to_last_mile_carrier
received_by_last_mile_carrier
returning_to_sender
address_corrected
customer_enquiry_raised
address_verified
tracking.order_promised_delivery_date supports new value formats:
- YYYY-MM-DDTHH:mm:ss
- YYYY-MM-DDTHH:mm:ssZ
YYYY-MM-DD- YYYY-MM-DD
- YYYY-MM-DDTHH:mm:ss
- YYYY-MM-DDTHH:mm:ssZ
The length of the tracking ID has changed from 24 characters to 32 characters.id: "q12m966070t6vlvwnspqn02o"id: "8243e0c68fe64c7a871ef868cdb7899d"
ChangeBeforeAfter
as-webhook-version header’s value2024-012024-04
New tracking model's field-failed_delivery_attempts
signature_requirement
Tracking model's field renamedcheckpoints[x].coordinatescheckpoints[x].coordinate
New event code and reason code are added
-Event code
picked_up
signed_by_customer
Reason code
outside_delivery_limits
not_what_customer_ordered
package_oversized_overweight
ChangeBeforeAfter
as-webhook-version header’s value2023-102024-01
New tracking model's field-shipping_method
location_id
carbon_emissions
checkpoints[x].events
Tracking model's field renamedaftership_estimated_delivery_date.confidence_scoreaftership_estimated_delivery_date.confidence_code
ChangeBeforeAfter
New request header-There is a new request header as-webhook-version e.g. "2023-10" added in the versioned Webhook.
Tracking model's field renameddelivery_timetransit_time
Transit time formula updatedPick up date is considered as 1 transit day

When the shipment is delivered:
Transit time (in day) = Delivered date - picked up date + 1

When the shipment is not delivered:
Transit time (in day) = Current date - picked up date + 1
Pick up date is not considered as 1 day in transit

When the shipment is delivered:
Transit time (in day) = Delivered date - picked up date

When the shipment is not delivered:
Transit time (in day) = Current date - picked up date
The allowed values of first_estimated_delivery.source has been changed"Carrier EDD", "AI Predictive EDD", "Custom EDD", "Order EDD""Carrier EDD", "AfterShip EDD", "Custom EDD", "Order EDD"
The allowed values of latest_estimated_delivery.source has been changed"Carrier EDD", "AI Predictive EDD", "Custom EDD", "Order EDD""Carrier EDD", "AfterShip EDD", "Custom EDD", "Order EDD"
UpdateExample
A new user agent header will be appended to our webhook requests. The user agent header in webhook requests can provide valuable information to the server and help to improve the performance, security, and reliability of the system.User-Agent: AfterShipTrackingWebhook/4.0.0 (https://www.aftership.com)
UpdateExample
New field order_tags added as part of the tracking object. The field indicates the date and time when the order is created."order_tags": ["unfulfilled", "unpaid"]
UpdateExample
New field 'on_time_status' and 'on_time_difference' added as part of the tracking object. The field indicates whether the tracking delivery is on time or not."on_time_status": "late", "on_time_difference": 3;
UpdateExample
Webhook headers key case updated. No changes are made in the header key, header content, and body section. As HTTP headers naming is conventionally case-insensitive, your code should treat these headers in a case-insensitive manner. If your server is not compliant to process HTTP headers correctly, webhook data processing may fail at your end. Please review the latest webhook header sample for the latest version.
UpdateExample
New field order_date added as part of the tracking object. The field indicates the date and time when the order is created.For example, "order_date": "2021-01-01T08:52:54Z"
UpdateExample
New subtag is added as part of the tracking and checkpoint object
A new subtag EXCEPTION_013 is added.
New field courier_redirect_link added in tracking object. Delivery instructions (delivery date or address) can be modified by visiting the link if supported by a carrier.
UpdateExample
New tag and subtag is added as part of the tracking and checkpoint object
A new tag AvailableForPickup is added
The existing subtag OutForDelivery_002 is replaced with the new subtag AvailableForPickup_001
UpdateExample
first_attempted_at (string) - Time of the first delivery attempt made by the carrier"first_attempted_at": "2020-02-24T05:43:38+00:00"
courier_tracking_link (string, URL) - Courier website direct tracking URL"courier_tracking_link": "https://www.fedex.com/apps/fedextrack/?tracknumbers=111111111111&cntry_code=US"
raw_tag (string): - Status code returned by carriers"raw_tag": "FPX_L_RPIF"
UpdateExample
Add digital signature aftership-hmac-sha256 in the request header. This signature is generated by encrypting the webhook body with the webhook secret using SHA256
UpdateExample
order_promised_delivery_date (String, YYYY-MM-DD)"order_promised_delivery_date": "2019-04-23"
delivery_type (String, Enum) Available options: pickup_at_store, pickup_at_courier, door_to_door"delivery_type": "door_to_door"
pickup_location (String)"pickup_location": "Store branch"
pickup_note (String)"pickup_note": "some free text"