Getting Started
Interface Basics
Printers and Scales
Shipping
Order Processing
Order Allocation
Order Processing Loop
Packing Solutions
Backorders
Ready to Ship
"Unable to Process" Order status
Address Validation and Classification
Packaging Features
Orders
Custom Fields for Orders
Reference Numbers
Other Shipping Options
Packing Instructions
Shipping Accounts
External Shipping Methods
Third Party Billing
Manifest Couriers
Packing Slip Design
Service Levels and Target Ship Dates
Outbound SSCC Barcodes
International Shipping
Tracking Numbers for Offline Shipments
Serial Number Tracking
Receiving
Deliveries (ASNs, RMAs, etc.)
Double-Scan to Begin Count
Auto-Advance to Put-Away After Processing ASN
Actionable Reports
Catalog
Bill of Materials/Work Orders
Bill of Materials
Bill of Materials - Quantity-types
Work Orders
Import Bill of Materials
Virtual Inventory
Regulations
Products
Product Attributes
Lots/Expirations Tracking
Product Velocity
Import Products
Operations
Warehouse
Picking Classes
Picking Batches
Bulk Fulfill Orders
Manifests (Loading)
License Plates
Time Tracking for Administrators
Time Tracking for Staff
Relocations
Import Locations, Lots and Inventory
Rating
Rate Shopping
Rating Maps
Rate Groups and Plans
Fee Schedules and Adjustments
Virtual Shipping Methods
System
Configuration
Merchants and Brands
Warehouses
User Management
User Roles
User Groups
Login via Badge
Protected Customer Data
Enumerations
Technical Contact
Integrations
Shopify
Integrations Overview
Amazon Merchant Fulfillment
Amazon Selling Partner
CartRover
EasyPost
eHub
External Shipping Method API
Freight Club
Magento 1 / OpenMage
Merchant API Users and Roles
SPS Commerce
ShipStream Plugin Fostering Program
Webhooks
WooCommerce
UPS
Scripting
Scripting Basics
Before Create Order Scripts
Preprocess Packing Solution Scripts
Ready to Ship Time Scripts
Picking Class Shipment Matching Scripts
FAQ
How-To: FedEx Production Key Certification
How-To: Brand-Specific Shipping Account
Pattern and Replacement RegEx
ShipStream's Subprocessors
ISO Alpha-2 Country Codes
Printer Troubleshooting
ShipStream Flow
Release Notes
ShipStream Releases
Version 2024.4
Version 2024.3
Version 2024.2
Version 2024.1
Version 2024.0
Version 2023.2
Version 2023.1
Version 2023.0
Package Tracking API Migration Guide (2023.0)
Version 2022.2
Version 2022.1
Version 2022.0
Version 2021.6
Version 2021.5
Version 2021.4
Version 2021.3
Version 2021.2
Version 2021.1
Version 2021.0
Version 2020.2
Version 2020.1
Version 2020.0
Version 2019.9
Version 2019.8.1
Version 2019.8
Version 2019.7
Version 2019.6
Version 2019.5
Device Hub Client Updates
Table of Contents
- All Categories
- Release Notes
- Package Tracking API Migration Guide (2023.0)
Package Tracking API Migration Guide (2023.0)
Updated by Colin
The Package Tracking update released in version 2023.0 brought some new functionality by introducing a new entity called "Trackers" as well as a few changes to the Shipment and Package statuses.
What's New
If you weren't already using one of the following endpoints before the update was deployed, there are no changes needed! Otherwise, please continue reading.
Statuses
- Orders (
order.info
/order.search
)- No changes
- Shipments (
shipment.info
/shipment.search
)- Renamed "Loaded" to "Shipped" (
loaded
->shipped
)
- Renamed "Loaded" to "Shipped" (
- Packages (
package.search
)- Renamed "Not On Manifest" to "Packed" (
not_on_manifest
->packed
) - Renamed "On Manifest" to "Manifested" (
on_manifest
->manifested
) - Renamed "On Truck" to "Shipped" (
on_truck
->shipped
) - Added new status "Delivered" (
delivered
)
- Renamed "Not On Manifest" to "Packed" (
The following diagram shows the relationship between the different states and timestamps (described below).
Timestamps
The following new timestamps were added - no existing fields were changed.
order.info
/order.search
- Addedshipped_at
anddelivered_at
shipment.info
/shipment.search
- Addedpacked_at
,shipped_at
anddelivered_at
for shipments andshipped_at
anddelivered_at
for packages.package.search
- Addedshipped_at
anddelivered_at
Webhook Topics
The following new webhook topics were added for your consideration. Many of these are effectively duplicates so choose the ones that best suit your specific needs.
order:shipped
(all non-canceled items picked up by carrier)order:delivered
(all non-canceled items shipped and all non-voided shipments delivered)shipment:shipped
(all packages picked up by carrier)shipment:delivered
(all packages delivered)package:manifested
(added to a manifest)package:shipped
(picked up by carrier)package:delivered
(delivered to destination)tracker:updated
(all status updates)tracker:delivered
(status changed to delivered)tracker:exception
(status changed to return_to_sender,failure,cancelled,error)- Added
trackers
object key toshipment:packed
payload.
Compatibility
To make the transition to the new statuses easy, we have deloyed the update on your system with a "compatibility flag" which causes the old statsus codes to be used. This way, you can update your integrations on your own time as described below. We plan to remove this compatibility flag on June 1, 2024 but it is advised to go ahead and make your code compatible as soon as possible.
How to Update
As the updated values are all read-only, the best way to accomodate the new statuses is to write your code so that it recognizes both the old and new status codes as the same. For example, this code:
switch ($shipmentStatus) {
case 'packed':
// Do something with packed shipment
break;
case 'loaded':
// Do something with loaded shipment
break;
}
could be updated to this:
switch ($shipmentStatus) {
case 'packed':
// Do something with packed shipment
break;
case 'loaded':
case 'shipped':
// Do something with shipped/loaded shipment
break;
}
In this way the code works for both the old API response and the new one and so no special actions are needed, nor is it required to coordinate the update.