Most Shipment Status Change Notifications follow the default notification structure as defined in the Overview and are only differentiated by the values of the event type and order state parameters. Those notifications can be identified by the name of the state that the order is in, such as those described with their triggers below, but they all use that basic template.
- Pull Inventory Notification – Sent when the order goes into the Validate Stock state and the fulfiller must pull the inventory before the order goes into the Print Packing List state (or back to Waiting for Manufacturer Acceptance if declined).
- Print Packing Slip Notification – Sent when the order goes into the Print Packing List status.
- Shipment Integration Notification – Sent when the fulfiller has printed the slip and the order moves out of the Print Packing List status. The order moves into either the Prepare For Shipment state or the Customer Pick Up state, depending on whether it is Ship To Home or In-Store Pick Up.
However, the notifications listed below use templates that vary slightly from the usual structure. This guide explains them in further detail.
- Complete Package Notification – Sent when the order is marked Fulfilled either by tracking number being entered for a STH order or the customer picking up their ISPU order.
- Cancel Shipment Notification – Sent when an individual shipment from an order is canceled. If an entire order is canceled, a cancel notification will be sent for each shipment within an order.
- Cancel Order Item Notification – Sent when an individual item from an order is canceled. This is the same as the Cancel Order Item Notification that is listed in the Order Item Modification topic bucket.
All of these shipment notifications primarily apply to the usual Ship to Home and In-Store Pick Up order types. For Ship-to-Store Transfer and Ship-to-Store (Automated) orders, there are more complicated fulfillment processes that require different notification templates. See the guides linked for those processes to learn more about those cases.
Complete Package Notification
The Complete Package notification is sent when the order state changes to Fulfilled AND when the final criteria for fulfillment is met – either a tracking number is entered or the order is marked as picked up by the customer.
Regardless of the order type (e.g. Ship to Home, In-Store Pick Up, etc.), this notification is the same as the default structure except with the data element populated with the fields described in the table below, rather than an empty object.
In the case of an In-Store Pick Up order, the following fields will be sent with a null value because an In-Store Pickup order does not contain this information. Also, the shipDate field will show the time when the customer picked up their order.
- trackingNumber
- shippingType
- carrier
- transitTime
Note that regardless of fulfillment type, the Complete Package notification will only be sent if the order is inventory-based.
Field | Type | Description |
trackingNumber | string | The tracking number for the shipment. |
shippingType | string | The delivery method for the shipment. |
carrier | string | The carrier that the shipment was sent with. e.g. USPS, UPS, FedEx. |
shipDate | string | The date that the shipment was sent. |
transitTime | string | In human readable text, the expected time for the shipment to arrive. |
retailerID | integer | The ID number of the retailer that made the shipment. |
fulfillerLocationID | integer | The ID of the fulfillerLocation for the fulfiller that made the shipment. |
externalStoreID | string | The name used externally to refer to the fulfiller that made the shipment. |
storeName | string | The store name for the location that made the shipment. |
This example demonstrates how these parameters might be defined for Complete Package.
{ "eventTypeID": "CompletePackage", "stateFromCode": 400, "stateFromName": "shipment_integration", "stateToCode": 500, "stateToName": "complete_order", "orderID": "987654", "shipmentID": "456789", "orderItemID": null, "data": { "trackingNumber": "11024379356034613", "shippingType": "USPS", "carrier": "USPS", "transitTime": "1-2 Days", "shipDate": "2013-08-06 07:00:00", "retailerID": "00000", "fulfillerLocationID": "11111", "externalStoreID": "123abc", "storeName": "Canada Post Test" }, "scope": { "mfgID": "1111", "catalogID": "0" } }
Cancel Shipment and Order Item Notifications
The Cancel Shipment Notification and Cancel Order Item Notification use the same template, which is the default notification structure with different values returned for the fields described in the below table. If an entire order is canceled, a cancel notification will be sent for each shipment within an order. If an entire order is canceled, then only a Cancel Order Notification will be triggered as seen in the Order Status Change bucket – there is not an individual notification sent for each order item. These notifications are sent for any order type (Ship-to-Home, Ship-to-Store, In-Store Pickup, etc.).
Field | Type | Description |
eventTypeID | string | Will be either cancel_item if item(s) within a shipment are canceled or cancel_shipment if an entire shipment is canceled. |
orderItemID | integer | The ID of the item canceled. This field only has a value in the cancel_item notification. |
stateType | string | Contains the value “Standard” if the order does not use the current transition model. If the order uses the current transition model, it returns “Controlled”. The data element contains the stateType. |
This example shows the cancellation of a specific shipment. For an example featuring the cancellation of an order item, see the example in the Order Item Modification topic.
{ "eventTypeID": "cancel_shipment", "stateFromCode": 0, "stateFromName": "Available", "stateToCode": 51, "stateToName": "Canceled", "orderID": "545454", "shipmentID": "343434", "orderItemID" null, "data": { "stateType" : "Standard" }, "scope": { "mfgID": "0000", "catalogID": "0" } }