Once you get paid for a sale, you need to fulfill the order and that means you have to ship the items purchased. How you ship products is largely a function of what shipping methods you make available to your customers.
Shipping is one of the most complex aspects of e-commerce, and one where you can lose money if you're not careful. As you work through your shipping configurations, it's important to keep in mind the following:
Dimensional shipping refers to a recent change by UPS, FedEx, and others to charge you the greater of two rates: the cost based on weight or the cost based on a formula to determine the equivalent weight of a package based on its size: (Length x Width x Height) ÷ 166 (for US domestic shipments; other factors apply for other countries and exports). Therefore, if you have a large package that doesn't weigh much, the live rate quoted in Magento might not be reflective of your actual cost once the dimensional weight is calculated. If your packages may be large and lightweight, consult your carrier representative or shipping fulfillment partner for guidance.
WebShopApps (http://webshopapps.com) is perhaps the pre-eminent Magento shipping add-on provider. More recently, they have created a hosted shipping configuration system called ShipperHQ (https://shipperhq.com), which we have used to configure some rather complex shipping rules. If your shipping rules are more than Magento can natively accommodate, you may want to check these out.
Keeping these insights in mind, let's explore the various shipping methods available by default in Magento 2.
Before we go over the shipping methods, let's go over some basic concepts that will apply to most, if not all, shipping methods.
Where you ship your products from will determine shipping rates, especially for carrier rates (for example, UPS, FedEx). To set your origin, go to Stores | Configuration | Sales | Shipping Settings and expand the Origin panel. At the very least, enter the Country, Region/State and ZIP/Postal Code field. The others are optional for rate calculation purposes.

At the bottom of this panel is the choice to Apply Custom Shipping Policy. If enabled, a field will appear where you can enter text about your overall shipping policy. For instance, you may want to enter Orders placed by 12:00 PM CT will be processed for shipping on the same day. Applies only to orders placed Monday-Friday, excluding shipping holidays.
You can add an invisible handling fee to all shipping rate calculations. Invisible in that it does not appear as a separate line item charge to your customers. To add a handling fee to a shipping method:
As you configure your shipping methods, don't forget to designate to which countries you will ship. If you only ship to the US and Canada, for instance, be sure to have only those countries selected. Otherwise, you'll have customers from other countries placing orders you will have to cancel and refund.
In some cases, the method you configured may not be applicable to a customer based on destination, type of product, weight, or any number of factors. For these instances, you can choose to:
There are several ways to offer free shipping to your customers. If you want to display a Free Shipping option to all customers whose carts meet a minimum order amount (not including taxes or shipping), enable this panel.
However, you may want to be more judicious in how and when you offer free shipping. Other alternatives include:
If you choose to use this panel, note that it will apply to all orders. Therefore, if you want to be more selective, consider one of the above methods.
As with free shipping, above, the Flat Rate panel allows you to charge one, singular flat rate for all orders regardless of weight or destination. You can apply the rate on a per item or per order basis, as well.
While using live carrier rates can provide more accurate shipping quotes for your customers, you may find it more convenient to offer a series of rates for your customers at certain break points.
For example, you might only need something as simple as follows, for any domestic destination:
Let's assume you're a US-based shipper. While these rates will work for you when shipping to any of the contiguous 48 states, you need to charge more for shipments to Alaska and Hawaii. For our example, let's assume tiered pricing of $7.99, $11.99, and $14.99 at the same weight breaks.
All of these conditions can be handled using the table rates shipping method. Based on our example, we would first start by creating a spreadsheet (in Excel or Numbers) similar to the following:
|
Country |
Region/State |
Zip/Postal code |
Weight (and above) |
Shipping price |
|---|---|---|---|---|
|
USA |
* |
* |
0 |
5.99 |
|
USA |
* |
* |
6 |
8.99 |
|
USA |
* |
* |
11 |
10.99 |
|
USA |
AK |
* |
0 |
7.99 |
|
USA |
AK |
* |
6 |
11.99 |
|
USA |
AK |
* |
11 |
14.99 |
|
USA |
HI |
* |
0 |
7.99 |
|
USA |
HI |
* |
6 |
11.99 |
|
USA |
HI |
* |
11 |
14.99 |
Let's review the columns in this chart:
Now, let's discuss the asterisk (*) and how to limit the scope of your rates. As you can see in the chart, we have only indicated rates for US destinations. That's because there are no rows for any other countries. We could easily add rates for all other countries, simply by adding rows with an asterisk in the first column. By adding those rows, we're telling Magento to use the US rates if the customer's ship-to address is in the US, and to use other rates for all other country destinations.
Likewise for the Region/State column, Magento will first look for matches for any state codes listed. If it can't find any, then it will look for any rates with an asterisk. If no asterisk is present for a qualifying weight, then no applicable rate will be provided to the customer.
The asterisk in the Zip/Postal code column means that the rates apply to all postal codes for all states.
In the above example, we used the weight of the items in the cart to determine shipping rates. You can also configure table rates to use calculations based on the number of items in the cart or the total price of all items (less taxes and shipping).
To set up your chart, simply rename the fourth column Quantity (and above) or Subtotal (and above).
To upload your table rates, you'll need to save/export your spreadsheet as a CSV file. You can name it whatever you like. Save it to your computer where you can find it for the next steps.
Before you upload your new rates, you should first set your table rates configurations. To do so, you can set your default settings at the default configuration scope. However, to upload your CSV file, you will need to switch your store view to the appropriate website scope.

When changing to a website scope, you will see the Export CSV button and the ability to upload your rate table file. You'll note that all other settings may have Use Default checked. You can, of course, uncheck this box beside any field and adjust the settings according to your preferences.
Let's review the unique fields in this panel:
You should probably change the default Table Rate to something more descriptive, as this term is likely irrelevant to customers. We have used terms Standard Ground, Economy, or Saver as names. The Title should probably be the same, as well, so that the customer, during checkout, has a visual confirmation of their shipping choice.
The remaining shipping methods involve configuring UPS, USPS, FedEx, and/or DHL to provide "live" rate calculations. UPS is the only one that is set to query for live rates without the need for you to have an account with the carrier. This is both good and bad. It's good, as you only have to enable the shipping method to have it begin querying rates for your customers. On the flip side, the rates that are returned are not negotiated rates. Negotiated rates are those you may have been offered as discounted rates based on your shipping volume.
FedEx, USPS, and DHL require account-specific information in order to activate. This connection with your account should provide rates based on any discounts you have established with your carrier. If you wish to use negotiated rates for UPS, you may have to find a Magento add-on that will provide a modified rate query.