WooCommerce Advanced Free Shipping


With the WooCommerce Advanced Free Shipping plugin you can setup your own advanced rules to determine when a free shipping rate should be available for the customer.
This plugin will give you full control over your free WooCommerce shipping rates.

Within each shipping rate you can create multiple ‘OR’ condition groups with multiple ‘AND’ conditions inside each group. This means that it is very easy to setup a
free shipping rate for multiple user roles in one shipping rate for example.

There are many default shipping conditions available.
Conditions like:

  • Subtotal
  • Quantity
  • User role
  • Country
  • Zipcode
  • Shipping class
  • Category
  • Weight
  • Volume (Width / Length / Height)
  • many, many more…

Not there what you’re looking for? The plugin has been made to be easily extensible, meaning you can also add your own custom conditions through code snippets!

Look at the screenshots!

Applying shipping cost

Have you given this plugin a shot and like how you can set things up?
I’ve build another plugin that allows you to setup shipping cost with the same conditional logic power as this plugin!

– Add shipping cost to the shipping rates
     – Per weight
     – Per item
     – Extra handling fee
– Setup a percentage based fee
– Add Advanced shipping cost via the WAS Advanced Pricing extension
     – Cost per shipping class
     – Cost per category
     – Cost per product
     – Cost per weight (table rate)
– Create shipping zones
– Set tax status

View Advanced Shipping for WooCommerce

Showing a free shipping threshold message

There are a few plugins out there that add a message when someone hasn’t reached the free shipping threshold yet. These plugin work on the ‘Free shipping’ option that is provided in WooCommerce by default.
It is unlikely that these plugins will work out of the box with Advanced Free Shipping due to the complexity of the conditional logic.

In case you do want to show this kind of message, The Advanced Messages for WooCommerce plugin allows you to setup a message with the same type of conditions, allowing you to setup the messages according to the same needs as the free shipping options.

Translations, feature requests and ratings are welcome and appreciated!


  • Spanish
  • Italian
  • Portuguese (Brazil / Portugal)
  • Greek


  • WooCommerce Shipping options overview
  • WooCommerce Shipping rate example
  • WooCommerce Shipping rate all available conditions
  • WooCommerce Shipping condition available operators


  1. Upload the folder woocommerce-advanced-free-shipping to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Go to the settings page to fine-tune the settings if desired


Can I setup partial free shipping?

The short answer to this is ‘no’, the long answer comes down to ‘possibly’. I wrote a full length blog post about this here:
Apply free shipping for specific products in WooCommerce

Can multiple free shipping options show simultaneously?

The current version of the plugin – 1.1.0 – doesn’t have the ability to show multiple Advanced Free Shipping rates at the same time.
During first development I made the – in hindsight – wrong decision thinking “Why would anyone need multiple WooCommerce free shipping options at the same time”.
In the future this will likely be changed, for now I recommend taking a look at the Advanced Shipping for WooCommerce plugin which does have the ability to show all rates that match the conditions.

The shipping rates I configured are not showing at the cart/check, why?

There are two common reasons why a rate may not be appearing when expected.

1) Shipping cache. It could be you’re looking at cached shipping rates. I’d recommend enabling the shipping debug mode when testing.

2) A conflict in the conditions prevents the rate from appearing. For example, having two ‘Country’ conditions in one condition group is not possible.
Try and set a single condition such as ‘Subtotal – greater – 0’ and see if that will appear.

If after the above still no rate is showing it is most commonly a third party element that is interfering. Try disabling all other plugins / switch to a default theme and see if the rate is appearing then.


21 May, 2023 4 replies
hi. first i thank you for your great plugin. the language of my website is persian and i need to change view of shipping address in my website. for example in address we need to show country name first but in your plugin the country name is not first property. how can i change this?
04 January, 2023 1 reply
Just a question, how can i disable a payment method (ex paypal) when free shipping is available ?
12 desèmber, 2022
With so many expensive WooCommerce plugins out there, its nice to have one that does one thing well, simply, and for free. If all you want is to “force” some criteria (product category, etc) to be free shipping and call it something simple, this is a great plugin for just that. Great job, thank you!
Read all 122 reviews

Contributors & Developers

“WooCommerce Advanced Free Shipping” is open source software. The following people have contributed to this plugin.


“WooCommerce Advanced Free Shipping” has been translated into 1 locale. Thank you to the translators for their contributions.

Translate “WooCommerce Advanced Free Shipping” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.


1.1.7 – 08-01-2024

  • [Fix] – PHP 8.2 compatibility

1.1.6 – 08-09-2023

  • [Add] – HPOS compatibility declaration
  • [Update] – Minimum PHP version updated to 7.0
  • [Tested] – PHP 8.0, WooCommerce 8.0

1.1.5 – 06-09-2022

  • [Fix] – Fixed wrong named action from ‘woocommerce_advanced_fees_condition_value_field_type_’ to ‘woocommerce_advanced_free_shipping_condition_value_field_type_’
  • [Fix] – Show in overview future scheduled rates
  • [Improvement] – Update WP Conditions to 1.0.12
    • [Fix] – PHP 8.0 compatibility with the Coupon condition

1.1.4 – 10-04-2018

  • [Improvement] – Improved mobile admin view
  • [Improvement] – Update WP Conditions to 1.0.8
  • [Fix] – Error message on debug mode when creating a new shipping rate

1.1.3 – 26-09-2017

  • [Add] – Helpful resources meta box
  • [Tested] – WooCommerce 3.2
  • [Improvement] – Update WP Conditions to 1.0.5
    – [Improvement] – WC 3.2 changes to prevent notices


    - [Improvement] - Use WC_Method:get_method_title() instead of get_title() to get method title.

1.1.2 – 29-06-2017

  • [Improvement] – Update WP Conditions to 1.0.3
    – [Fix] – ‘User role’ condition ‘Guest’ wasn’t working
    – [Improvement] – Allow conditions outside postbox / multiple times inside. Not limited to .postbox class.
    – [Add] – Zipcode range support. E.g. ‘Zipcode’ = ‘equal to’ = ‘10000-20000,30000-40000’

1.1.1 – 28-04-2017

  • [Fix] – Use 9 digit random IDs to prevent too big numbers for 32-bit systems
  • [Improvement] – Remove call to asset that no longer exists

1.1.0 – 06-03-2017

IMPORTANT NOTE – As of this version, the plugin requires PHP 5.3 or higher to function

  • [Fix] – Allow variations to be set (and make them working) with the ‘contains product’ condition
  • [Fix] – Prevent duplicate DB query
  • [Improvement] – BIG refactor of the backend conditions – please verify your setup if using custom coded condition
  • [Improvement] – Smoother User Experience with conditions
    • Instant adding of conditions / condition groups
    • Only show valid operator options
    • Instantly show condition descriptions
    • Deleting entire condition groups
    • Duplicate condition groups
  • [Improvement] – WC 2.7 compatibility changes

1.0.11 – 05-09-2016

  • [Fix] – State condition field only displayed states of the last country
  • [Fix] – Inability to add new conditions due to error

1.0.10 – 25-08-2016

  • [Improvement] – Optimized asset scripts
  • [Improvement] – Refactored condition code (backend)
  • [Improvement] – Allow asterisk (*) in zipcode to allow ‘begins with’ type of matching functionality
  • [Improvement] – Allow dollar and percentage signs in the ‘coupon’ condition to setup the condition based on the amounts instead of solely coupon codes
  • [Improvement] – Add a link to the shipping rates overview page on the plugins page
  • [Improvement] – Add support for continents in the ‘country’ condition (requires WC 2.6+)
  • [Improvement] – Improved ‘product’ condition value fields (allow searching) and supports huge amounts of product
  • [Improvement] – Allow comma separated cities

1.0.9 – 16-06-2016

  • [Fix] – Fix a notice that was introduced with a change in WooCommerce 2.6

1.0.8 – 22-12-2015

  • [i18n] – Portuguese (pt_PT) translation
  • [i18n] – Greek (el) translation
  • [Improvement] – Keep the WooCommerce -> Settings menu open while in Shipping rate options
  • [Tweak] – [Dev] – Remove method prefixes on many places where possible (not all)

1.0.7 – 02-11-2015

  • [Improvement] – Conditional load resources in admin
  • [Improvement] – Add AJAX nonce verification
  • [Remove] – WooCommerce 2.1 is no longer supported. Please update WC if you’re still on a older version.

1.0.6 – 04-06-2015

  • [Add] – Escaping/sanitizing to different elements
  • [Improvement] – Shipping class matching function now uses variation shipping class instead of the parents’
  • [i18n] – Add Italian translation

1.0.5 – 14-12-2014

  • Fix – Hide other shipping doesn’t save in rare cases
  • Improvement – Use of WC() singleton instead of $woocommerce global
  • Improvement – Add background color to overview table every other row


  • [Fix] – Weight condition wasn’t working
  • [Fix] – Cash On Delivery for WAFS
  • [Add] – Added languages files for Portuguese – Brazil pt_BR


  • [Improvement] – Customized user messages when saving shipping method
  • [Improvement] – Updated some comments to comment standards
  • [Improvement] – Overview not showing all actions when hovering only one
  • [Improvement] – Added ABSPATH check to each file
  • [Improvement] – Improved code comments
  • [Improvement] – Remove globals, use WAFS() function now
  • [Improvement] – Zip codes are now better detected (only integer values)
  • [Improvement] – Load textdomains
  • [Improvement] – Add compatibility for custom value fields
  • [Improvement] – Add world wide state support
  • [Fix] – No notice on shipping title in DEBUG mode
  • [Fix] – Loading icon on sub directory websites
  • [Fix] – Condition description didn’t show sometimes
  • [Fix] – ‘Category’ – ‘Not equal to’ error
  • [Fix] – Showing drafts in overview
  • [Removed] – Author from overview, who needs that?


* [Added] – support for comma separated zip codes
* [Added] – filter for condition values
* [Added] – filter for condition descriptions


  • [Fix] – Wrongful url for sub-domain websites
  • [Add] – Added states as condition


  • Initial release