Carrier Rate Shopping Simulation

Introduction

Fenix provides a carrier rate shopping platform that helps the retailers to optimize their shipping process and save a significant amount on their shipping spend by selecting the most cost effective service to deliver the product, meeting the shopper estimated delivery date promises. 

There are many rate shopping solutions available in the market, however, most of them do it mainly from the shipping cost perspective. Fenix, on the other hand, factors in the ship cost, transit time, carrier and fulfillment capacities, carrier priority, etc to perform a more comprehensive rate shopping and to determine the most accurate shipping service for a shipment

To get a better understanding of the ship cost savings, Fenix Commerce offers retailers to perform a Carrier Rate Shopping Simulation using their past orders and shipment data, their negotiated carrier rates, carrier invoices (at the shipment level), and processes this information through Fenix rate shopping engine to generate the estimated shipping spend, and the customer delivery experience with detailed reports. 

Carrier Rate Shopping Simulation

The Carrier Rate Shopping Simulation helps Fenix to provide retailers with key savings data if they had used the Fenix Rate Shopping solution instead of their current solution in two scenarios.

  1. if Fenix had done the rate shopping using their current services

  2. if Fenix had done the rate shopping by introducing new services in the mix

Any number of what-if scenarios can be performed by using the simulation tool which could nail down the best possible service combination for the retailers.

What data is needed to do the simulation?

There is a standard set of input data that is needed to do the simulation. 

  1. historic orders and shipment data

  2. negotiated carrier rates

  3. rate cards

  4. carrier invoices (optional)

Historic shipment Data

 

The shipment data should contain some basic information some of which are listed below.

  1. From Address

  2. To Address

  3. Package data

    1. Dims

    2. Weight

  4. The label cost

The label cost is what the retailer pays to the carrier. This information is essential to create the savings report.

 

There are a couple of ways to get this data from the retailer.

 

  1. Retrieve via webhooks

If the retailer's platform is on Shopify or on BigCommerce and has the Fenix app installed on their store, Fenix will pull the Order and the Fulfillment via the platform specific webhooks.

 

So, basically, Fenix will make use of the ppd summary information to get the necessary information about the shipments. It uses that information to perform the simulation.

 

However, there are a couple of downsides with this approach. 

 

  1. For this approach to  work seamlessly, the important criteria is for the retailers to install the Fenix app. Only then Fenix will be able to pull the shipment data and then pull the tracking data. If the retailer is a big one, then we need to wait for a few days to get all the tracking and shipment data pulled from the carriers.

  2. We cannot pull the label cost from the tracking data. So, going with this approach, Fenix won’t be able to create a savings report

 

  1. Feed the shipment data via a file

The retailer can upload the shipment data in a csv file and upload in an SFTP location. Once the file is loaded, all we need to do is to run the simulation.

Advantages of this approach is,

  1. Much quicker to get the data

  2. The retailer can provide us the label cost in the file which will help is building the savings reports

 

The format of the file is as follows.

 

Field Name

Required

Details

order id

Yes

The order id of the shipment

shipment id

Yes

The shipment id

order created date time

No

The order created date and time

shipment created date time

No

The shipment created date and time

shipping method

No

The shipping option the customer chose on the checkout

expected days to deliver

Yes

The expected days to deliver decided at the warehouse

origin address line

No

The address line of the fulfillment location

origin city

No

The city of the fulfillment location

origin state

No

The state of the fulfillment location

origin country

Yes

The country of the fulfillment location

origin zip code

Yes

The zip code of the fulfillment location

destination address line

No

The address line of the buyer

destination city

No

The city of the buyer

destination state

No

The state of the buyer

destination country

Yes

The country of the buyer

destination zip code

Yes

The zip code of the buyer

carrier

Yes

The carrier selected for shipping

service

Yes

The shipping service selected for shipping

tracking number

Yes

The tracking number of the shipment

shipment length

Yes

The shipping box length in inches 

shipment width

Yes

The shipping box width in inches 

shipment height

Yes

The shipping box height in inches 

shipment weight

Yes

The shipping box weight in inches 

ship cost paid

Yes

The shipping cost paid to the carrier in USD

 

Carrier Information

Retailers must provide Fenix with the necessary information about their current carriers. The below information will be used when the rate shopping is performed. 

  1. Carriers and services used for rate shopping

  2. Carrier Credentials (Preferred) - The credentials will be used to pull the real-time rates to perform the rate shopping. The rates pulled with these credentials will give rates, including surcharges and taxes. Using carrier credentials, we’re able to get the most up-to-date surcharge information and minimize the variances.

  3. Carrier Rate Cards (when carrier information is not available)

In cases where the retailers cannot give the carrier credentials, as a last resort, retailers should provide the rate cards and the average surcharges that can be applied on top of the base rate. This option can sometimes have a large discrepancy compared to the actual results, as the carrier surcharges can vary weekly. Surcharges can sometimes account for up to 40% of the total shipping cost for each package.

 

Technical Aspects of the Simulation

Following are some important aspects of the simulation from a technical standpoint.

Rate Shopping Simulation Resource

API: /fenix/oms/crs/v1/rateshopping/get-rateshopping-info

Headers: TenantId, AuthToken,Content-type:json

Mandatory Configuration to setup before running the simulation

Below are some of the important configuration that needs to be set up before running the simulation

  1. Rate Shopping Config

This configuration contains some basic rate shopping configuration parameters. This configuration is used to rate shop individual requests. Some of the important configuration parameters are listed below.

Field

Default

Description

Field

Default

Description

validate_address

false

This indicates the rate shopping engine to whether perform any address validation on the input destination address

We are using USPS to do the address validation for US addresses. We are yet to integrate any APIs to do address validation for international addresses

use_product_weights

false

If the retailer wants Fenix to calculate the package weight from the product data, we will use the data in our product indexes to calculate the overall weight of the package

use_default_box

false

In some cases, we may not know the package weights of the shipment. In such cases, this field indicates if we can use some default package dimensions to get the shipping rates

default_box_config

null

The default box’s dimensions and weight

rateshopping_history_rolling_policy

MONTHLY

This field indicates how the rate shopping audit history indexes are to be created.

Valid: HOURLY, WEEKLY, MONTHLY, YEARLY

 

The default configuration that will work for the majority of the cases

{
"id": "e16a3b30554c45b6950ad660f1f3e7a8",
"tenant_id": "e16a3b30554c45b6950ad660f1f3e7a8",
"validate_address": false,
"use_product_weights": false,
"use_default_box": false,
"rate_shopping_plan": null,
"default_box_config": {
"weight": {
"value": 0.01,
"units": "LB"
},
"dimensions": {
"length": 5,
"width": 5,
"height": 5,
"units": "IN"
}
},
"rateshopping_history_rolling_policy": null,
"delivery_performance_config": null
}

 

  1. Rate Shopping Simulation Info

This configuration is mainly used to perform the simulation. It contains the SFTP location to upload the shipment data, where to look for the fulfillment data, the fields present in the file, etc,.

Field

Default

Description

Field

Default

Description

feed_type

null

Feed Type indicates where to read the shipment data from.

Valid Values are: FULFILLMENT, SFTP

store_name

null

The name of the store. It is equivalent to retailerName in the organization class

lines_to_ignore

0

Number of lines to ignore from the file in SFTP folder before processing the shipment data

retailer_name

null

Same as store name

ignore_header

false

Tells you whether there is any header in this file

field_separator

COMMA

The field separator in the file

source_data_folder

null

The folder in SFTP the shipment file is located in

sftp_info

null

The SFTP credential info

Must provide: host, port, username, password

field_map

null

If the file is uploaded by the retailer, then he can specify the columns and their positioning in the file

service_map

null

This field is used to map the service name defined at Fenix and the service name provided in the shipment file.

This mapping is important to determine the label cost if not given in the shipment file

populate_label_cost_by_service

false

In many cases, the retailers may not be willing to share the label cost. In that case, we can determine the ship cost ourselves by matching the service name provided in the file to the equivalent service when we get the carrier responses.

threads_to_spawn

6

Number of threads to spawn while doing the simulation. For some retailers, the number of shipments may be huge, so, we may need to spawn more threads

default_box_dims

null

If the package dims are not available, we can use a default box to do the rate shopping

simulation_response_rolling_index_policy

MONTHLY

This field indicates how the rate shopping audit history indexes are to be created.

Valid: HOURLY, WEEKLY, MONTHLY, YEARLY

shipping_option_transit_tm_info

null

The retailers have their own definitions of the shipping options. Some retailers may specify the Standard should be delivered in 5 days. Some may say, its 7 days. So, we can configure in this mapping by retailer, what is their definition of transit time for each shipping option.

 

Sample Configuration for a retailer (menswearhouse)

{
"id": null,
"tenant_id": "e16a3b30554c45b6950ad660f1f3e7a8",
"feed_type": "FULFILLMENT",
"store_name": "menswearhouse",
"lines_to_ignore": 1,
"retailer_name": "menswearhouse",
"ignore_header": false,
"field_separator": ",",
"source_data_folder": "order",
"sftp_info": {
"host": "127.0.0.1",
"port": 22,
"username": "jdoe",
"password": "111",
"knownHostsFile": null
},
"field_map": {
"SHIPMENT_ID": 0,
"ORDER_DTTM": 2,
"DESTINATION_COUNTRY": 6,
"LABEL_COST": 19,
"DESTINATION_ZIP": 7,
"CARRIER": 8,
"FULFILLED_FROM": 22,
"TRACKING_ID": 10,
"ORDER_ID": 0,
"SHIPMENT_DTTM": 2,
"EXPECTED_DELIVERY_TIME": 5,
"WEIGHT_UNITS": 11,
"SERVICE": 9,
"WEIGHT": 12,
"SHIPPING_SELECTED": 3
},
"carrier_service_map": [
{
"carrier": "FEDEX",
"service_map": {
"SMART_POST": "SMART_POST",
"STANDARD_OVERNIGHT": "STANDARD_OVERNIGHT",
"FEDEX_2_DAY": "FEDEX_2_DAY",
"GROUND_HOME_DELIVERY": "GROUND_HOME_DELIVERY"
}
}
],
"populate_label_cost_by_service": true,
"threads_to_spawn": 0,
"default_box_dims": {
"length": 10,
"width": 12,
"height": 1,
"units": "IN"
},
"services_applicable_for_residential": [
"GROUND_HOME_DELIVERY"
],
"simulation_response_rolling_index_policy": null,
"shipping_option_transit_tm_info": [
{
"name": "Standard",
"transit": 6
},
{
"name": "Express",
"transit": 2
},
{
"name": "Rush",
"transit": 1
},
{
"name": "FSPS",
"transit": 6
},
{
"name": "FSSS",
"transit": 6
},
{
"name": "FDHD",
"transit": 6
},
{
"name": "FSON",
"transit": 1
},
{
"name": "FPON",
"transit": 1
},
{
"name": "FD2D",
"transit": 2
}
]
}

Â