Webhook Changelog
Get all the latest webhook updates by AfterShip Tracking here.
2025-04 (2025-04-10)
Change | Before | After |
---|---|---|
as-api-version header’s value | 2025-01 | 2025-04 |
Change | Affected 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 characters | 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 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 |
2025-01 (2025-01-09)
Change | Before | After |
---|---|---|
as-api-version header’s value | 2024-10 | 2025-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 field | API endpoint: - POST /trackings/:id/mark-as-completed |
2024-10 (2024-10-10)
Change | Before | After |
---|---|---|
as-webhook-version header’s value | 2024-07 | 2024-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_date | expected_delivery | courier_estimated_delivery_date |
2024-07 (2024-07-11)
Change | Before | After |
---|---|---|
as-webhook-version header’s value | 2024-04 | 2024-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" |
2024-04 (2024-04-11)
Change | Before | After |
---|---|---|
as-webhook-version header’s value | 2024-01 | 2024-04 |
New tracking model's field | - | failed_delivery_attempts signature_requirement |
Tracking model's field renamed | checkpoints[x].coordinates | checkpoints[x].coordinate |
New event code and reason code are added | - | Event codepicked_up signed_by_customer Reason code outside_delivery_limits not_what_customer_ordered package_oversized_overweight |
2024-01 (2024-01-11)
Change | Before | After |
---|---|---|
as-webhook-version header’s value | 2023-10 | 2024-01 |
New tracking model's field | - | shipping_method location_id carbon_emissions checkpoints[x].events |
Tracking model's field renamed | aftership_estimated_delivery_date.confidence_score | aftership_estimated_delivery_date.confidence_code |
2023-10 (2023-10-12)
Change | Before | After |
---|---|---|
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 renamed | delivery_time | transit_time |
Transit time formula updated | Pick 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" |
4.4.7(2023-04-20)
Update | Example |
---|---|
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) |
4.4.6(2021-12-07)
Update | Example |
---|---|
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"] |
4.4.5(2021-11-03)
Update | Example |
---|---|
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; |
4.4.4(2021-05-10)
Update | Example |
---|---|
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. |
4.4.3(2021-02-04)
Update | Example |
---|---|
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" |
4.4.2
Update | Example |
---|---|
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. |
4.4.1
Update | Example |
---|---|
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 |
4.4
Update | Example |
---|---|
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" |
4.3
Update | Example |
---|---|
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 |
4.2
Update | Example |
---|---|
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" |
Please take note that
checkpoint_time
andexpected_delivery
is a string that returns possible value: YYYY-MM-DD, YYYY-MM-DDTHH:MM:SS, or YYYY-MM-DDTHH:MM:SS+TIMEZONE