Shipping Carrier & Shipping Class Data

Summary

  • Inbound order processing configurations in the ChannelAdvisor Platform can alter the shipping carrier and class of an order.
    • Shipping Mappings (Inbound)
    • Shipping Rules
  • Best Practice Recommendation
    • Place GetOrderList request to retrieve order data
    • Then place GetOrderFulfillmentDetailList request to capture fulfillment level detail (including shipping CarrierCode and shipping ClassCode).
    • This accomplishes two things that cannot be accomplished via the GetOrderList only:
      • Captures appropriate fulfillment data whether Shipping Mappings or Shipping Rules are used (or not used).
      • Captures multiple fulfillments in the event of an order is split across more than one distribution center.

More Detail / Background

  • There are very specific rules that determine how the SOAP API and user interface see shipping Carrier and Class values.
  • The SOAP API response may not align with what is shown in the Order Details page in the UI - the following examples below why/when this occurs.
  • GetOrderList returns the ShipmentList element, which provides ShippingCarrier and ShippingClass values that display different values based on which inbound order processing configuration was used.
    • When Shipping Mappings are configured in ChannelAdvisor, GetOrderList will surface only a single fulfillment carrier/class and may be sufficient to capture the appropriate carrier and class data for an order.
    • When Shipping Rules are configured, GetOrderList will not surface the appropriate carrier and class data for fulfilling order - a separate request to GetOrderFulfillmentDetailList must be used to capture fulfillment level detail, including shipping CarrierCode and shipping ClassCode converted from Shipping Rules.
  • Developers can consult with the seller to determine if these ChanneAdvisor tools are used and make the secondary request to GetOrderFulfillmentDetailList if appropriate.



Making Sense of the UI Values Compared to SOAP API Values

  1. This is the Order level Requested Carrier and Class as defined by the marketplace
    1. This is the data supplied in the ShipmentList element of the GetOrderList response when either of the following two conditions exist:
      1. No Shipping Mappings (Inbound) were configured for the channel
      2. When Shipping Rules define the carrier/class value
  2. The Fulfillment/Shipping level Carrier and Class - this data is only supplied in the GetOrderFulfillmentDetailList request
    1. It will be populated as a result of one of these three conditions:
      1. Shipping Mappings (Inbound)
      2. Shipping Rules
      3. Default - will reflect the same values as the Requested Shipping Carrier
    2. Note: these all assume that a user has not altered the value after creation either via the UI or file tracking upload to the UI

Shipping Mappings (Inbound) 

Where to find this configuration option in the Platform: Fulfill > Settings & Tools > Shipping > Mappings > Inbound

  • Inbound Shipping Mappings apply their result to the order level.  This mapping will replace the Requested Shipping Carrier and Requested Shipping Class, but this does NOT reflect in the UI.
    • The Requested Carrier in the Order Details page will still show what was sent from the marketplace. 
    • The result of the Inbound Shipping Mapping is placed at the Fulfillment Level (#2 in the example image above).
  • The GetOrderList request will reflect the Inbound Shipping Mapping converted value.
    • Shortcoming: if the order has been split across more than one fulfillment, only one carrier/class value is provided in the ShipmentList element.

Shipping Rules

Where to find this configuration option in the Platform: Fulfill > Settings & Tools > Shipping > Shipping Rules

  • Shipping Rules on the other hand, apply their result to the fulfillment level directly.  This will NOT edit the requested method values in the UI either.
  • It will also NOT show in the GetOrderList which pulls it's data from the order level, not the fulfillment. 
  • So in order to see this value in the API, a developer should use the Fulfillment Service using GetOrderFulfillmentDetailList.


GetOrderList

This example reflects an order where:

  • No Shipping Mappings were configured
    OR
  • Shipping Rules were configured

Note: may omit other fulfillments.


This example reflects an order where:

  • Shipping Mappings were configured

Note: may omit other fulfillments.

GetOrderFulfillmentDetailList

This example reflects an order where:

  1. Shipping Mappings were or were not configured
    OR
  2. Shipping Rules were or were not configured

The takeaway: requesting this endpoint ensures all scenarios are covered.