Setting up WooCommerce Part 5 – Shipping options and classes

woocommerce shipping

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:

WooCommerce: general shipping options
General shipping options in WooCommerce
  • 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:

Shipping flat rates in WooCommerce
Setting up a shipping flat rate in WooCommerce
  • 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
 
express shipping

is entered as “Additional Rates”:
 
shipping handling

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:

WooCommerce product shipping group
Specifying the shipping group or class of a product

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):

Creating a shipping class
Creating a new shipping class

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:

Adding shipping class costs
Defining additional costs per shipping class

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.)

table rate shipping module
Creating shipping zones with Table Rate Shipping (screenshot: © WooThemes)

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.

Post Sharing

Author Avatar

Editor at MarketPress. Passionate blogger, corporate blog expert and book author (e.g. "Blog Boosting"). Co-organizer of WP Camp Berlin.

Also Interesting

slack-blog

New Plugin: Slack Connector - Connect WordPress, WooCommerce and Slack

by 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
rolebasedprices-en

Role Based Prices for WooCommerce is available again: Different prices for different customer groups

by 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-review7

WooCommerce Weekly Review #7: Woo vs Magento, shop security and customer confidence

by 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-review6

WooCommerce Weekly Review #6: Translations, WordCamp Switzerland & avoiding legal warnings

by 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

Comments

10 Comments

  1. #1

    your tutorial was quite informative. However i am having difficulties in calculating a cost. I have a product and i want to charge an additional rate like this: $3.80 or 5% of product cost whichever is higher. I am unable to figure out how to use a conditional rule. Kindly help.

  2. #2

    I have been trying to set up Woocommerce for a single product to be shipped or digitally delivered. I purchased an global add-on which works beautifully for charging extra for the product itself if it’s to be shipped (covering my costs for printing, ink etc), but with the products I’ve added to the cart being set for digital delivery, the cart can’t determine it’s a pattern that’s now to be shipped. I tried setting up shipping methods but that would apply to all orders. I don’t want to charge shipping for digitally delivered products. Is there a plugin or means of dealing with all these variables?

    Thanks,

  3. #3

    I am having issues setting up the Shipping costs to be displayed properly. Here is the scenario.

    A user puts an item in their cart and they are directed to the CART page. Without entering their shipping information into the CALCULATE SHIPPING fields, the user clicks on PROCEED TO CHECKOUT.

    On the CHECKOUT PAGE the user fills out the BILLING INFORMATION and the clicks the CHECK BOX that indicated they want to SHIP TO A DIFFERENT ADDRESS. When clicking on the field the location fields display. The user completes the fields.

    At this point the Billing Address and Shipping Address have been entered. The user can enter their Credit Card info and move forward in the transaction, BUT there still is no Shipping information displayed. These products REQUIRE a shipping method.

    QUESTION – How do I guarantee that the shipping method/options are displayed every time applicable (when shipping is required for a specific product?

    Thanks!

  4. #4

    Hello!

    My problem is with woocommerce>setting>shipping>flat rate. Because I would like add some special shipping class. For exampla next day delivery or economy delivery. so unfortunately the”additional rates” setting is missing from our woocommerce. What we have to do?
    Thanks

  5. #6

    I am seeing issues with the Shipping Options dropdown/radio buttons appearing on the frontend in the cart during checkout.

    They are not appearing. It defaults to the Flat Rate price that I have entered on the backend.

    Is there a fix for this?

    Am I missing some settings or configurations?

    We are in design mode but want to go live asap.

    Thank You!

  6. #7

    I am having trouble figuring out how to add handling to checkout page (WooCommerce), where purchaser will be applied one of 4 different handling rates based on the items in the cart, so if purchaser bought a cake and a hat, they’d be charged $14.50 handling, $5.00 handling. Purchaser would then see $19.50 handling fee. Then when purchaser adds their shipping address, the chosen UPS shipping option would append the handling total in the appropriate shipping/handling field in the checkout totals.

    What am I missing?

  7. #8

    I’m using Woo-commerce version 2.4.12; it shows the international shipping rate as FREE. How do I change that?

  8. #9

    Hi,

    For some reason since last update, I am getting orders with no shipping address. I am not sure how are customers able to skip entering the address. Checked all the settings and tested few options, still no success.

    Can any body help or have a solution?

    Thanks,

  9. #10

    First, I am new to web building. I recently had my website overhauled and everything is GREAT except for shipping. I purchased the Table Rate Shipping plugin, but it’s not visible to the customer. I have contacted the webstore several days ago without a response. I welcome any suggestions or instructions….Thank you….

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">