Once the shipping functionality is turned on, WooCommerce allows you to set up shipping costs for products in your store.
But if you are selling virtual products then you probably won’t want to charge shipping on those items.
Click here to enroll in our Free WooCommerce Coding Course
If you’re only thinking of selling virtual items then WooCommerce provides you with an option to not charge shipping at all, but if you’re going to be charging shipping on physical items but not on downloads, then there are ways you can set this up.
In this article, we’ll take a look at how to disable shipping for your whole store and also for specific items.
Disabling Shipping Altogether
You can choose shipping option for your store by going to the admin area of your store and then choosing “WooCommerce” -> “Settings” and choose the “General” tab about half way down the page you’ll see a “Shipping location(s)” select box
In my example store this is set to “Ship to all countries you sell to”, if you have this option set in your store then customers won’t be charged for shipping until you’ve set up some shipping rates, but if you want to disable shipping all together you can do so by choosing the “Disable shipping & shipping calculations” option
Choosing this option removes the shipping tab from the tab options at the top of the WooCommerce setting screen
Note that selecting this option will also remove the shipping address fields form the checkout screen, but if you don’t plan on selling anything that is shippable then it might be a good option for you.
Enabling Shipping for Products in your Store
It will be easier for me to show you how to disable shipping for downloadable items if we firstly set-up some shipping costs, so we can see how the user experience changes when products don’t have shipping costs.
To do this we’ll go to “WooCommerce” -> “Settings” again and choose the “Shipping” tab, the first time you enter that screen you should see something similar to this
This is WooCommerce’s friendly reminder of how to set up a shipping zone, if you look below the reminder you’ll also see this
This is the default shipping zone that orders will drop into if you don’t set-up any other shipping zones, as this contains no shipping charges by default when you first create your store no shippinh charges will be added. Let’s change that now by clicking the “Add shipping zone” button on the banner
We’ll firstly fill out a Shipping Zone name
WooCommerce then provides a field for you to add shipping zones
You can type the names of places (Countries, Cities etc) into this field and WooCommerce will autocomplete the names for you, but if the field is left blank the shipping zone will apply to everywhere in the world, so we’ll do that
If you then click the “Add shipping method” button in the “Shipping methods” section you’ll see the following dialog
Keep the value “Flat Rate” in the drop down and click the “Add shipping method button”, this will add “Flat rate” to the Shipping Method section, now click the “Edit” option below the method title
The following dialog should be displayed
There are number of different ways that you can fill this information in, but for now we’ll just add the value 5 into the cost field which will add a shipping cost of 5 of your chosen currency units to every product in the store. Once we’ve done that we can click the “Save changes” button.
Now if we add a product to our cart we should see a shipping fee added to the cart totals
Disabling Shipping for a Specific Product by Making it Virtual
If we wanted to remove shipping for the “Hoodie with Zipper” product we could go to the “Products” admin section of our WooCommerce store and search for the product, once you find the product go to the edit screen and scroll down to the “Product data” section
As you can see from the image above there is a “Virtual” checkbox in the “Product data” section, if you check the checkbox then the “Shipping” option is removed from the menu on the left of the “Product data” section.
If you now update the product and return to the Cart screen you will see that shipping costs have been removed from the cart totals
This is obviously a slightly odd example as you’d normally want to charge shipping on a physical item such as a hoodie, but hopefully it shows how you can remove shipping costs for items in your store that you didn’t intend to ship.
If a customer only has virtual products in their basket then WooCommerce will also remove the option to add a shipping address from the checkout screen. So it is an ideal option for disabling shipping for items that don’t ship to customers.
To recap, if you are selling downloadable products in your store that don’t ship to customers, you have two main options
- If you’re only selling downloadable or non-shippable products then turn off shipping in your store
- If you’re selling both shippable and non-shippable products then set up your shipping options as required and make the products that won’t ship virtual
You can find out more information about setting up a general shipping strategy in WooCommerce in this article on the WooCommerce site.
Click here for more details about the "Learning WooCommerce Development By Example" book
If you think I’ve missed out anything from this guide, or you have any further questions or queries then please don’t hesitate to let me know in the comments.