Shipment ASN
This webhook is triggered when the “Submit ASN” button is clicked during step 3 (Shipping and Packing Labels) of the Wholesale Order processing flow. This does not apply to SPS Commerce orders.
The packing_layout field in the webhook body contains the full container hierarchy for the order. For a detailed explanation of the packing layout structure, container types, and field definitions, see Export Packing Layout.
The webhook requires:
- A Shipment ASN webhook configured on the account
- The wholesale order must have a packing configuration
- The webhook’s
shop_namemust match the order’strading_partner_name, or be set to*to match all trading partners
Note
The webhook can fire before a shipment exists. When no shipment is available, shipment_identification and ship_date will be null.
The payload varies depending on whether the order ships via Freight or Courier.
Freight Orders
In addition to the common fields, freight orders include scac, bill_of_lading, pro_number, and trailer_number in the shipping details. The carrier and shipping_method are sourced from the shipping details, falling back to the order’s carrier and shipping_method if not set.
{
"account_id": 8444,
"order_id": 666678858,
"shipment_identification": "666678858",
"webhook_type": "Shipment ASN",
"shipping_details": {
"scac": "OTH",
"carrier": "Trucking Co",
"shipping_method": "Freight",
"bill_of_lading": "bolnumber01",
"pro_number": "0123456789",
"trailer_number": "trailer-number0123",
"shipment_id": null,
"ship_date": null,
"requested_delivery_date": "2025-11-15T00:00:00",
"ship_not_before_date": "2025-11-01T00:00:00",
"ship_no_later_than_date": "2025-11-10T00:00:00",
"trading_partner_id": "TP-001",
"trading_partner_name": "some-retailer"
},
"packing_layout": {
"created_at": "2025-09-03T16:51:54",
"updated_at": "2025-09-03T16:51:54",
"containers": [
{
"type": "Pallet",
"details": {
"height": 60,
"length": 48,
"width": 40,
"weight_in_oz": 448,
"barcode": null,
"shipping_box_id": "custom-46376",
"container_number": 1
},
"containers": [
{
"type": "Box",
"details": {
"height": 12,
"length": 12,
"width": 12,
"weight_in_oz": 192,
"barcode": null,
"shipping_box_id": "custom-9247",
"container_number": 1
},
"line_items": [
{
"order_line_item_id": 1631737888,
"partner_line_item_id": "MO44-472777084",
"sku": "coca-lata",
"name": "coca-lata",
"quantity": 3
}
]
}
]
}
]
}
}Courier Orders
Courier orders do not include freight-specific fields (scac, bill_of_lading, pro_number, trailer_number). The carrier and shipping_method are sourced directly from the order.
{
"account_id": 8444,
"order_id": 666678859,
"shipment_identification": "666678859",
"webhook_type": "Shipment ASN",
"shipping_details": {
"carrier": "ups",
"shipping_method": "Ground",
"shipment_id": "315518042",
"ship_date": "2025-10-02",
"requested_delivery_date": "2025-12-01T00:00:00",
"ship_not_before_date": "2025-11-20T00:00:00",
"ship_no_later_than_date": "2025-11-28T00:00:00",
"trading_partner_id": "TP-002",
"trading_partner_name": "some-retailer"
},
"packing_layout": {
"created_at": "2025-09-03T16:51:54",
"updated_at": "2025-09-03T16:51:54",
"containers": [
{
"type": "Box",
"details": {
"height": 12,
"length": 12,
"width": 12,
"weight_in_oz": 192,
"barcode": null,
"shipping_box_id": "custom-9247",
"container_number": 1
},
"line_items": [
{
"order_line_item_id": 1631737888,
"partner_line_item_id": "MO44-472777084",
"sku": "coca-lata",
"name": "coca-lata",
"quantity": 3
}
]
}
]
}
}Shipment Identification Field
A string identifier that represents a portion of the order that will ship together. Currently, orders ship as a single unit, so this defaults to the order ID.
It is provided as a string to accommodate future formats.
Contrary to the shipment_id his field is always present, even before a shipment exists, since it is determined at the order level rather than at fulfillment time.
Shipping Details Fields
| Field | Freight | Courier | Description |
|---|---|---|---|
scac | ✅ | ❌ | Standard Carrier Alpha Code. null if not set. |
carrier | ✅ | ✅ | Shipping carrier. Freight: from shipping details, falls back to order. Courier: from order. |
shipping_method | ✅ | ✅ | Shipping method. Same fallback logic as carrier. |
bill_of_lading | ✅ | ❌ | Bill of lading number. null if not set. |
pro_number | ✅ | ❌ | PRO tracking number. null if not set. |
trailer_number | ✅ | ❌ | Trailer number. null if not set. |
shipment_id | ✅ | ✅ | Internal identifier for the shipment, null if no shipment exists yet. |
ship_date | ✅ | ✅ | Shipment creation date (ISO format, date only). null if no shipment exists yet. |
requested_delivery_date | ✅ | ✅ | Requested delivery date. null if not set. |
ship_not_before_date | ✅ | ✅ | Earliest allowed ship date. null if not set. |
ship_no_later_than_date | ✅ | ✅ | Latest allowed ship date. null if not set. |
trading_partner_id | ✅ | ✅ | Trading partner identifier. null if not set. |
trading_partner_name | ✅ | ✅ | Trading partner name. null if not set. |
Webhook Matching
The webhook uses shop_name to determine which configured endpoint receives the payload:
- If the webhook’s
shop_namematches the order’strading_partner_name, the webhook fires. - If the webhook’s
shop_nameis set to*, it matches all trading partners.
This allows configuring a single webhook endpoint for all trading partners, or separate endpoints per trading partner.