Shopify Multi Location Issues

 

In Shopify, retailers can create multiple locations where they can maintain the inventory at the location level. This gives the retailers the ability to ship from multiple locations which is more common now a days to reduce the shipping costs. When the inventory is located at multiple locations, two questions arises.

  1. How do we enable multi location shipping?

  2. Who does the order routing for orders for such stores?

How do we enable multi location shipping?

To enable multi-location shipping in Shopify, we need to go to Settings → Shipping and Delivery → Manage Rates → Shipping Origins

Once we enable the necessary locations in the Shipping Origins, Shopify will consider the inventory present in only those locations.

 

Who does the order routing for orders for such stores?

When no explicit routing strategy is involved, Shopify does its own routing. It is not the optimal routing algorithm as it is a very simple two rule based approach. The two rules are,

Allocate the order based on the location priority

The location priority can be set in the Settings → Locations → Location Priority

 

Ship from minimum locations possible

Shopify finds the first location where the inventory is available as a whole while going through the locations in the above priority. if the inventory is not located in one single location, It tries to ship from multiple locations which where the inventory is available (again in the above locations priority).

What are the issues with the above approach by Shopify?

When multi location inventory is enabled in Shopify, is causes certain issues when it comes to order routing and shipping cost.

Issues

  1. Bad order routing

  2. Ship cost duplication

Bad order routing

As we saw Shopify order routing is very simple and won’t scale up when the number of fulfillment locations increase, retailers need to look up to third party routing mechanisms. Otherwise, there is a good chance the retailers may lose ship cost.

Ship cost duplication

When shopify determines that an order should be shipped from two different locations, it splits the order into two/more and then adds up the ship cost received from the responses of those requests independently.

This approach by Shopify will create problems on the checkout page when the retailer has configured Flat rates for a shipping option.

Take the following example.

Retailer configured the following options for standard

 

Cart Value

Ship Cost

Standard

Under $50

$10

Over $50

Free

If the Buyer adds two items to the cart each of $40 (over all cart value of $80), he should get Free Shipping. But if these items are shipped from two different locations, then the following rules will apply.

 

Sub Cart Value

Ship Cost

Location 1

$40

$10

Location 2

$40

$10

 

Total Ship Cost as calculated by Shopify

$20

So, instead of getting Free shipping, the customer is charged $20.

 

What to do?

To avoid the above problems and to take the advantage of the order routing and to avoid unexpected ship cost duplications, Fenix propose a simple solution. It involves two steps.

  1. Maintain a consolidate inventory in Shopify

  2. Send the location level inventory separately

Maintain a consolidate inventory in Shopify

To avoid splitting the order in Shopify, it is recommended to maintain a consolidated inventory in Shopify. So, Shopify will avoid splitting the order so that Fenix would always receive a single checkout page request.

In this process, we should also change the shipping origins from multiple locations to single location where we are maintain a consolidated inventory.

This way of maintaining the inventory in shopify will also avoid duplicating the shipping costs.

 

Send the location level inventory separately

As a step 2, retailers should send real time inventory every now and then (once in 10-15 mins) so that Fenix can have near real time data to do the order routing as accurate as possible.

This will help the retailers to do a proper order routing via Fenix.

What if the retailers can’t send the inventory feed separately (least preferable solution)?

First, we need to convince the retailers about the shopify flaws described above. If they can’t do that, then it means two things.

  1. They are maintaining inventory at multiple locations in Shopify

  2. Enabled multi locations in Shopify

With this configuration, Fenix may receive multiple multiple requests at the checkout page. So, at this point, there is a good chance of ship cost duplication.

To avoid this, We need to enable Shipping script or create a checkout extension (may be).

 

What shipping script or checkout extension will do?

Once Shopify receives the responses from Fenix, the shipping script or the extension will run its logic. This logic will contain the code to reapply the configured flat rates tiers.

Note that the only scenario we are handling here is the duplicate rates issue. So, we will apply some discounts on top of the higher rates we see due to shopify splitting the order.

 

What else we need to do in Fenix?

Note that in shopify shipping script, we can only apply discounts and not add some dollar value to the existing shipping cost. So, while configuring the flat rates in Fenix, we can’t have a tier based ship costs any more. Fenix will always send the full amount and the discounts will be applied in the shipping script or the checkout extension.

So the below table is changed from

 

Cart Value

Ship Cost

Standard

Under $50

$10

Over $50

Free

to

 

Cart Value

Ship Cost

Standard

Under $50

$10

Over $50

$10

 

Advantages with this approach

  1. Duplicate ship cost issue is resolved

Disadvantages of this approach

  1. Order routing will still be done by Shopify

  2. When the discounts are applied in the shipping scripts, the EDD (which we usually show on the 2nd line of checkout) will disappear