Setting up shipping for your eCommerce site can be simple, but it can also quickly turn into a complex system. The goal of these guides is to take an in-depth look at all things shipping in WooCommerce. I'll start in this post by first giving an overview of what all shipping entails in the context of your eCommerce site.
The Two Aspects of Shipping
Most people start out by thinking there is only one side/purpose of shipping, but that's not true. To help understand, let's think about payment gateways. When you select and maybe install a payment gateway extension, it seems like it does one thing. It essentially just displays the payment option on the checkout page which customers then use to send money that ends up deposited into your account.
But with shipping there are two main steps. First, the customer goes through the checkout process on your site and selects which shipping method they would like to use – that could be free shipping, 2-day shipping, expedited, etc. The process doesn't just end when a customer checks out though, there is more to do after the order which is known as the fulfillment side of things. After an order is submitted, you (the store owner) have to create shipping labels to ship the items to the customer.
The shipping method and price the customer chooses at checkout is not always the same as the label you'll be printing. For example, many sites offer Free Shipping or Flat Rates which of course doesn't mean USPS or Fedex is going to be shipping the packages for free. So the two main and separate parts of shipping in the context of your WooCommerce store are shipping rates and shipping labels.
Shipping Rates
Let's start by talking about the options you have when configuring shipping rates in WooCommerce. These are the options that show up to the customer when they checkout on your website. Generally speaking, the types of shipping rate options can be split into two main categories. The categories are Live API Rates and Manually Defined Rates. Let's take a quick dive into each and look at the options available.
Live API Rates
When I refer to "live" or "api" rates, it simply means the shipping costs that are being shown to the customer at checkout are coming directly from a shipping provider. The provider will typically be whoever you choose to ship with, whether that be USPS, Fedex, UPS, Canada Post, Australia Post, etc.
For live rates, you will need to install an extension on your WooCommerce site for your appropriate shipping provider. The WooCommerce extension is then able to look at what items you have in your cart and attempt to pack them into boxes based on your configurations and the products weights and dimensions. These boxes/product dimensions are then sent over to USPS (or whichever service) along with where the items are coming from and where they are going to. Then USPS sends back the available rates and prices to your website and they are displayed to the customer at checkout.
Using an API-based shipping method like this is best if you want the customer to pay the same for shipping that it will be costing you, the store owner. When using live rates though, do note that every product will need to have a weight configured for it and usually dimensions as well. Live rates are easy to setup, but often don't offer much flexibility.
Manually Defined Rates
Manually defined rates is exactly what it sounds like, rates that you determine ahead of time based on certain conditions. Flat rate shipping, free shipping, and local pickup all fit into this category – which are the options that come with WooCommerce by default. Using manually defined rates is best if you need to offer custom prices and shipping options or if you are using shipping as a marketing tool.
Flat rate shipping is actually a bit more powerful than most people think, as you can do some cool tricks with it utilizing the [qty]
, [cost]
and [fee]
shortcodes along with mathematic operators and shipping class differentiators. However, sometimes these aren't enough and you need to have more control over the rates you'll be offering.
In these cases, there are some really helpful extensions that are worth looking into. I'll go into more detail on these in a later post, but the most popular options are Table Rate Shipping, Per Product Shipping, Local Pickup Plus, Distance Rate Shipping, and Flat Rate Box Shipping.
Shipping Labels
So now the customer is being shown shipping options at checkout, they are selecting which they want to use if there are multiple options, and then the order is being sent in to you. Now what!?!? Now you'll need to print shipping labels that you can put onto your boxes and send out your awesome product to the customer!
Manual Label Creation
If you are using manually defined rates and your products don't have weights and dimensions, then the first thing you'll need to do is work out how you are going to ship the items to the customer. For example, you'll need to find which boxes you can use. Then go to your shipping provider's website and enter in the boxes + weights you will be shipping. After that, you can print out the labels from the website if possible. If that's not an option, it's also usually possible to just take boxes to the post office / the shipping provider's nearby physical location and have them help with the labels.
This process of finding out which boxes to use and manually entering dimensions/weights into a web client can be a bit tedious. That is why many people opt-in for a more automated approach.
Automatic Label Creation
If all of your products have weights and dimensions configured, then it is possible to have the box finding and label creation automatically done for you. This is done similarly to how live api rates are retrieved. The extension you're using for label creation will send the box & weight information over to USPS for example, and USPS will create a label and charge your account.
Not all extensions offer label printing, but there are a couple of options. If you are using USPS, then WooCommerce Services is a good option. There are plans on adding more services in the future so be sure check first, but right now only USPS is supported for label printing.
There are also some options that go a bit further than just printing labels from your WordPress dashboard. These are services that go more in-depth when it comes to printing labels and order fulfilment. Popular options are ShipStation, ShippingEasy, Shipwire, and Shippo. Each offer different features, so I do recommend looking into each of them before choosing one. Usually more than one shipping provider is offered, so labels can be printed for USPS, UPS, Fedex, etc. Some help with inventory, remember your shipping preferences, get special rates for shipping providers, and sometimes even offer the ability to show live shipping rates at checkout.