How Shopify's well-intended efforts to help merchants with shipping backfire.
E-commerce merchants have struggled with how to handle shipping for a long time. To Shopify's credit, it made numerous changes in recent years in an attempt to help alleviate the shipping-related frustration experienced by its merchants. Unfortunately, many of these changes appear to have been pioneered by people with little knowledge of the subject. This document will present examples of how Shopify Shipping Profiles and Shopify Locations contribute to inaccurate shipping quotes and a loss of information.
Common Elements For Each Example
Each example will include illustrations, and the following symbols will be common in each one:
|Represents the shopping cart in the examples. The shopping cart contains two items, one weighing 4 LB and the other 5 LB. Both of these items will ship in one box.|
|Represents the internet. Shopify is a cloud-based e-commerce platform that communicates with apps developed by third-party developers "through the cloud."|
|Represents any third-party app whose function is to provide shipping quote estimates during the Shopify checkout process.|
UPS's rates for Ground service will be used for the examples. Each one will assume that the ship-to address is in what UPS refers to as "Zone 4". The graphic below was captured for Ground service from UPS's 2022 "Rate & Service Guide - Daily Rates". The rates for packages weighing between 1 to 10 pounds appear in the red box.
For simplicity's sake the example will exclude negotiated discounts, fuel surcharge, accessorial fees, dimensional weight, and all other things that ultimately determine the final charges for a shipment. How these things affect the examples in this document is relative and do not change the outcome.
Life Before Shopify Shipping
Before introducing Locations and Shipping Profiles, Shopify had a very common and basic way of handling shipping. Merchants defined shipping zones (e.g. United States) and the "shipping methods" available for it. FedEx, UPS, and USPS are examples of common "shipping methods".
Handling the complexities of shipping was left to third-party app developers. There was and still is an abundance of very capable third-party shipping-related apps available in the Shopify App Store. Each one addresses the challenges of shipping differently.
A Basic Example Of Shipping Done Right In Shopify
Refer back to the symbols introduced at the beginning of this document. In this example, the merchant's Shopify settings identify a single "Location" and all products reside in the "General" shipping profile. The Shopify settings may not accurately reflect the merchant's actual circumstances, but the merchant has elected to rely instead on the programming in the third-party application to account for the complexity of shipping.
In this example, the entire contents of the Cart are passed to the third-party application for processing. The third-party app can execute its programming -- including the setting preferences of the merchant -- with full knowledge of the circumstances of the Cart.
After processing the shipping rate request, the third-party app responds with a shipping quote of $14.76. Refer back to the UPS Ground rate for a Zone 4 shipment weighing 9 LB (= 4 LB for Item 1 + 5 LB for Item 2).
Since the third-party app had full visibility of the Cart in a single API (Application Programming Interface) request, it can write the details of how the shipping quote was constructed for the order. Here's an example of what a subscriber to one of Eniture Technology's might see in the Additional Details widget:
Take note that both items were combined into a single Ground parcel shipment and the actual rate from the parcel shipping provider was captured on the order.
Pitfalls of Shopify Shipping Profiles
Now recycle the example above, but this time introduce Shopify Shipping Profiles. Shopify Shipping Profiles allow merchants to isolate products into groups and define different shipping methods for each group.
In the example Cart, there are two products. Assume that one product is in the General Shipping Profile, and the other is in the Custom Shipping Profile.
Next, advance the Cart through the same checkout process...
This time each product results in a separate request for a shipping quote. Each request is anonymous, so there isn't a way to associate them with the same Cart. Therefore, they are treated as independent requests and the response to Shopify is represented as follows:
The third-party app receives two unrelated requests and processes them independently. Using the rate table for UPS Ground, a rate of $13.24 is returned for the 4 LB item and $13.70 is returnd for the 5 LB item. Once received, Shopify adds them together and presents a shipping quote of $26.94 to the customer.
If the merchant is interested in accurate shipping quotes, then the outcome of this example is contrary to that purpose. The rate provided during checkout is 82.5% higher than what the merchant will pay to ship the order. While that may seem appealing at first glance, if it results in a significant increase in Cart abandonment, it might be very detrimental.
Another casualty is the ability of the third-party app to construct the details of the shipping quote and record it in the Additional details widget. Instead of the useful information that would normally appear in it, the Additional details widget will be blank.
Shopify Locations Pitfalls
At the most basic level, the pitfalls of Shopify Locations are similar to the pitfalls of Shopify Shipping Profiles. Assume, for a moment, that you only have the General Shipping Profile (to eliminate that complexity) but you have inventory at multiple Shopify Locations.
The first deficiency of Shopify Locations is that it uses an impractical method of determining the shipping origin of items on an order based on a "location priority" list. A customer could be across the street from a stocking location with the item in stock, and Shopify's "Locations" logic could quote the order as shipping from the opposite side of the country. Second, the "Locations" logic can result in two shipping origins when it is possible to only have one. In that case, the example illustration is as follows:
And the API response from the third-party application will be:
These illustrations are nearly identical to the ones presented for the deficiency with Shopify Shipping Profiles.
If both Shopify Locations and Shopify Shipping Profiles are at work at the same time, exponential inflation in the shipping rate estimates that are presented to customers should be expected.
The Omission Of Shipping Options
When a third-party shipping app is used exclusively for shipping quotes, it's possible to present shoppers with a list of shipping options. The most familiar list of options will include a rate from the USPS, and rates from one of the parcel carriers for ground, second-day, and overnight service. These will be presented to the shopper in a manner similar to the following:
When Shopify Shipping makes multiple API requests for shipping rates due to the settings for Shopify Locations or Shipping Profiles, the cheapest rate received for each request are combined into a single rate and presented as "Shipping" on the Shipping Methods page.
In these cases, not only is the rate presented by Shopify Shipping inaccurate, but it eliminates customer choice and fails to document how the shipping rate was constructed on the order details page seen by the merchant.
How Should You Handle Shipping In Shopify?
The purpose of this document is to illustrate some very significant negative consequences of using Shopify's Locations and Shipping Profiles. Most merchants will do better by identifying only one shipping location in Shopify (even if there are more), using only Shopify's General Shipping Profile, and relying on third-party shipping applications for the heavy lifting. The applications available from many third-party application developers are far more capable than what Shopify has introduced over the last few years.
Are there circumstances where Shopify's Locations and Shipping Profiles make sense?
If you're adamant about inventory tracking, then Shopify Locations will appeal to you. Just be aware that there are significant tradeoffs and weigh the benefits and costs. There are also other significant shortcomings to Shopify Locations related to shipment origin selection that are outside the scope of this document.
Shopify's Shipping Profiles can make sense in very specific situations. Be conscious of the fact that each shipping profile will spawn a separate request for shipping rates. Additional Shipping Profiles may make sense if you want to offer free or flat-rate shipping on a select group of items. But be very cautious of them if you offer your customers actual real-time shipping quotes from your shipping vendors.