We are frequently asked how various shipping costs are calculated in WooCommerce. The most common scenarios are quite easily implemented using our shipping methods and classes. This article will explain how these are set up and combined.
You will find our general shipping options under -> WooCommerce -> Settings -> Shipping -> Shipping Options. (The last sub-item will be preselected by default when entering the “Shipping” section.) Here you can specify the general behavior of the shipping costs calculation:
- Enable shipping specifies, whether or not shipping costs should be charged at all (e.g. if only virtual/digital products are sold).
- Selecting the option Enable the shipping calculator on the cart page will result in the notification “Calculate Shipping” appearing on the cart page. The customer will then be able to calculate the relevant shipping costs for a delivery to his location before continuing with the checkout process and entering his personal data. The calculation is based on the country and zip code, which means that it will only make sense if your shop offers regionally differentiated shipping costs.
Important: For legal reasons, and completely independently of this functionality, shipping costs must be clearly listed in the shopping cart for sales in Germany and Austria.
- The next option will do the exact opposite, i.e. it will hide the shipping cost factor until a (delivery) address is entered.
- The Shipping Display Mode specifies the display format where customers can choose from several different shipping methods (example: Flat rate or free for local pickups). The options “Radio Buttons” or “Dropdown Menu” are available.
- The selection made for Shipping Destination will decide, whether the goods will be sent to the billing address or the shipping address.
- Restrict shipping to Location(s): This is where you specify, whether deliveries will be made to specific countries only, to all countries, or to all countries you sell to (have a look at our explanations here for the menu item “Sales Locations” in the basic settings). Here is a possible scenario to illustrate the difference between “Sales Locations” and “Delivery Regions”: You offer sales of virtual products to countries, where you do not want to offer deliveries of physical items.
Directly underneath you will see a list of the WooCommerce default shipping methods, which you can manage via the buttons “Settings”, or via the “Shipping” sub-menu (at the very top of the page). You can also see, which methods are currently enabled, i.e. offered in your shop.
Setting up a shipping flat rate
The shipping options for the shipping and payment method “Flat Rate” can be combined with the WooCommerce shipping classes for more flexibility in terms of cost calculations. The process will also explain the meaning of the various shipping classes quite clearly. Let us first look at the general options of this shipping method:
- The option Enable/disable needs no explanation. It specifies, whether customers should be offered a shipping flat rate at all.
- The Method Title defines the description text displayed for the customer when selecting this method, or when the method is automatically assigned during the checkout process.
- The option Availability allows the limited assignment of the shipping flat rate for individual countries if other shipping methods should be applied elsewhere.
- Do you want VAT/sales tax calculated for the costs of this shipping option? The option Tax Status takes care of that.
- For Costs per Order you now enter the actual flat rate amount your customers should pay for shipping (exclusive of applicable VAT). Entering “0” here will trigger a calculation on the basis of shipping classes only (more on that in a bit).
Price calculations for additional shipping options
The function Additional Rates allows you to offer your customers other payment-based shipping options. These can include “Express Shipping” and others. The input format for these is as follows:
Name of the shipping option | Price in the format x.xx | Basis for calculation
, whereby the basis for calculation order (one-time calculation of surcharges per order), class (calculation on the basis of shipping classes), or item (calculation per item) can be specified. The price can furthermore be expanded to include a percentage component; in that case, the input format would be
x.xx + x.x% or x.xx - x.x% (for more information please read the relevant WooCommerce documentation)
You can add more rows if you want to offer several different shipping options. Here is a little example to demonstrate the use of this function: The shop customer will see the following options in the cart if the information
is entered as “Additional Rates”:
In both cases, the shipping flat rate will be added to the actual cost of the shipping option. The amount for “Airmail” would increase accordingly every time an item is added to the cart, as the calculation basis here is “Item”.
Extended cost calculation based on shipping classes
The WooCommerce shipping classes (also known as “Shipping Groups”) offer an additional option for charging shipping costs on top of a shipping flat rate. These can be specified for each product via the detailed product information under Shipping -> Shipping class:
In the example shown here, the product was associated with the sample shipping class “Bulky Goods”. You can create new shipping classes via your WordPress dashboard under Products -> Shipping Classes (which is where you can modify them at any time as well):
Just like in the product categories, you can map hierarchies here by selecting the option “Parent”. If you now return to the settings for the shipping flat rate and Additional Costs (instead of the previously discussed option “Additional Rates”) you will now see the way the shipping classes work:
You can therefore use the option Costs added… to calculate additional shipping costs, e.g.
- Cost per Order: The highest additional price of all classes contained in the cart will be added just once, no matter how many products are being purchased.
- Cost per Item: A surcharge will be added for each price on the basis of the relevantly assigned shipping class. The same applies if several units of one product are ordered.
- Cost per Class: A surcharge will be added for each price, but only once for each included shipping class.
The additional shipping prices can be specified for each class in the section Costs. Simply enter the Cost per class in the table, exclusive of any applicable tax.
Optional: Costs for shipping processing
You can additionally define a Handling Fee, which the customer will be charged for processing the shipping. This handling fee can be a fixed amount (example: 2.50) or a percentage (example: 3.8%). The handling fee will be calculated on the basis of the net sales total in the cart. You can enter an amount for your Minimum Handling Fee (right after the table); any handling fees below that amount will be relevantly adjusted to reflect the minimum.
You can furthermore specify a price and optionally a handling fee via the table row Any Class, which will be charged if no specific shipping class was selected and priced. Inversely that means: The costs for “Any Class” will not be included if other rows are populated and assigned to shipping classes.
Advanced options of the Table Rate Shipping plugin
WooCommerce’s own shipping cost calculations are not as detailed as for example the very extensive control settings. The (license-based) WooCommerce plugin Table Rate Shipping allows a more advanced differentiation of the shipping options, including functions like:
- More exact definitions of shipping regions via the individual selection of specific countries or ZIP codes
- Price tables for each individual shipping region
- The option to add rules based on the weight, quantity of products, number of products by class and price
- Cost breakdown by weight class
The exact scope of the plugin is described in this WooCommerce documentation. The plugin Table Rates for WooCommerce comes with another free plugin by an external developer, which, however, offers similar options only in the license-based Pro Version. (Note: We haven’t actually tried the plugin ourselves.)
Applying shipping options and shipping classes
The shipping options in WooCommerce can be a bit daunting for beginners. All you can do is try it all out for yourself: You will find the right approach for your most used scenarios by simply applying the options and methods described here. And if you still aren’t getting anywhere, you might consider having a look at plugins, like Table Rate Shipping. In Germany, Austria and Switzerland the wpde.org online shop forum is another good place for giving and getting advice.
In our next WooCommerce tutorial series installment, we will have a look at the other shipping methods and their options, for example for national and international deliveries.
Does your WooCommerce shop have any special requirements in terms of shipping and cost calculations? How did you solve those issues? We would very much appreciate any feedback or comments from you – you might even introduce any other plugins or expansion modules you are currently using.
New Plugin: Slack Connector - Connect WordPress, WooCommerce and Slackby Michael Firnkes
Initially we merely wanted to optimize our own Slack-processes. With automated notifications from our MarkettPress shop, the blog and our forums. The resul ...Read more
Role Based Prices for WooCommerce is available again: Different prices for different customer groupsby Michael Firnkes
You want different prices for different customers and users of your online shop? E.g. for subscribers or wholesaler? Or do you need bulk prices? A lot of o ...Read more
WooCommerce Weekly Review #7: Woo vs Magento, shop security and customer confidenceby Michael Firnkes
What is a WooCommerce shop in practice? And how do you protect it against external attacks? This and more in our Weekly Review. WooCommerce vs Magento: ...Read more
WooCommerce Weekly Review #6: Translations, WordCamp Switzerland & avoiding legal warningsby Michael Firnkes
WooCommerce was a hot topic at WordCamp in Switzerland. Progress is being made with the system translations and there are lots of useful new extensions. Th ...Read more