Marketplaces / NordStrom Technical Scope / NordStrom Order management / NordStrom Ship Orders

NordStrom Ship Orders

Summary of Changes: (The purpose of this table is to keep traceability and Product team to highlight the things that were changed into the scope, based on comments or discussions)

Version Date Name Applied changes
v1.0 29.05.2025 Bogomil First publish

The purpose of this page is to describe the shipment process on MIRAKL.

To ship an order, the order must be accepted & tool status “Ready for shipping“.

Once we have Order Shipment > Status = Pending, first we need to update the shipping details (Courier, Tracking, Tracking URL) using OR23 then we just mark the order as shipped in Mirakl with OR24 but before all this happen we need to validate the shipping details. In order to do so we check if the Orders > Courier is part from the Mirakl shipping list (SH21).

At the moment when sending shipping updates to BestBuy, we are using the courier from Order Shipments > Carrier We want to introduce Courier mapping. Thus we need to create a slave table under Courier called “BestBuy Courier Mapping”. In this table we need to have a dropdown field with all the carriers.

field name notes
BestBuy Courier This should be a drop-down menu with the carriers which we get with the GET SH21 - List all carriers. We need to send the carrier_code related to the carrier as well.

Have all this structure the mapping will works based on: If Order Shipment > Carrier match Courier > Name we send the selected courier from BestBuy Courier Mapping > BestBuy Courier

We also would like to introduce a default case in Account BestBuy called “Default Carrier” where again the same list with carriers (GET SH21 - List all carriers.) to be displayed and to be able to select on specific carrier.

This way the logic will be first we are checking if there is any mapping set in BestBuy Courier Mapping and if we match any of the couriers. If not We are checking if there is default carrier set in Account BestBuy If not we should send carrier as “Other“ with carrier name (Order Shipment > Carrier) and tracking num (Order Shipment> Tracking Number)

We want to be doing this mapping when sending the actual shipping update to the marketplace, so there will be no changes in the record created in Orders > Order Shipments table and we will create the record as we do with our current functionality.

This will be our mapping for a Mirakl integration and ideally we would want to implement it across all Mirakl integrations at some point.

Please note it would be good if we can have button to update the carriers in BestBuy Courier Mapping table.

  • GET SH21 - List all carriers

API Call: /api/shipping/carriers

API Docs: https://help.mirakl.net/help/api-doc/seller/mmp.html#SH21

Example response:

{
  "carriers": [
    {
      "code": "FED",
      "label": "Fed Ex",
      "tracking_url": "http://www.fedex.com/Tracking?action=track&tracknumbers={trackingId}"
    },
    {
      "code": "UPS",
      "label": "UPS",
      "tracking_url": "https://wwwapps.ups.com/WebTracking/track?track=yes&trackNums={trackingId}"
    },
    {
      "code": "DHL",
      "label": "DHL",
      "tracking_url": "http://www.dhl.co.uk/en/express/tracking.html?AWB={trackingId}&brand=DHL"
    },
    {
      "code": "DPD",
      "label": "DPD",
      "tracking_url": "http://www.dpd.co.uk/apps/tracking/?parcel={trackingId}"
    },
    {
      "code": "TNT",
      "label": "TNT",
      "tracking_url": "http://www.tnt.com/webtracker/tracking.do?navigation=1&searchType=CON&respLang=en&genericSiteIdent=.&cons={trackingId}"
    }
  ]
}
  • PUT OR23 - Update carrier tracking information for a specific order.

Via this call, we should push to order the required information as stated into the below example.

API Call: /api/orders/{order_id}/tracking

API Docs: https://help.mirakl.net/help/api-doc/seller/mmp.html#SH21

Parameters:

Parameter Value Required
order_id String
Order identifier Yes

Example Call:

{
  "carrier_code": "UPS",
  "carrier_name": "UPS",
  "carrier_url": "https://ups.com",
  "tracking_number": 5555
}

Mapping:

Integration Field Integration Notes Integration required Hemi Mapping Note
carrier_code String
The code of a carrier. This information is mandatory for a registered carrier. N N/A We Get this from the Shipping List if we match our Order Shipment > Courier with the label
carrier_name String
The name of a carrier. This information is mandatory for an unregistered carrier. Y N/A We will send first if our mapping match any of the set carrier or we have set a default carrier
carrier_url String
The tracking url of a carrier. This information is unused for registered carriers (because computed automatically). This information is optional for unregistered carriers. Y N/A
tracking_number String
The carrier tracking number. This information is mandatory for a registered carrier with a URL requiring a tracking number. Y Order Shipment > Tracking Number
  • PUT OR24 - Validate the shipment of an order

Using this call we simply make a validation of the shipment, after success, the status of the order in Hemi will be “Shipped“

Note: first we update shipping details then we just mark it as shipped

API Call: /api/orders/{order_id}/ship

API Docs: https://help.mirakl.net/help/api-doc/seller/mmp.html#OR24

Parameters:

Parameter Value Required
order_id String
Order identifier Yes

*Note:** OR23 & OR24 API calls should be incorporated into 1 cron! First we update shipping information (OR23) and then we should validate the shipment (OR24).

Because Mirakl do no support partial shipping we still need to add the shipments in the order but will always ship the full order. However we might have the case where the order will be shipped on Mirakl so we will have to add additional case where if we receive error:

{ "message": "Cannot mark the order with id 'DUX004667443-A' to the new status. Current status is 'SHIPPED', expected is one of '[SHIPPING]'.", "status": 400 }

Again to update our orders > tool status as “Shipped” and update all the shipping information.

Is this article helpful?
0 0 0