Need WooCommerce to restrict shipping of specific items to certain destinations?
WooCommerce Restrict Shipping lets you do that. It’s great for selling items than cannot be shipped to certain countries or states (or provinces), and you can restrict destinations by postal codes too.
It’s easy to use. If you need to set the same restrictions for all products in your entire store you can do that in the main plugin settings. If you need to have specific restrictions for specific products then you can do that while editing a product: Simply edit a product, select which countries and/or states/provinces where the product cannot be shipped to, and you’re done.
And, if you need to restrict individual variations of a variable product you can do that too.
During the checkout process, if a shopper selects a shipping destination that matches your restrictions they’ll see a message (which you can customize) alerting them that the item cannot be shipped to their chosen destination. At that point the shopper will need to either remove the item from the cart or change their shipping destination before the checkout process can proceed.
You can set up your restrictions on a global basis in the plugin settings, then enable those restrictions on a per product basis for each product that needs to have restricted shipping destinations.  And, you can also add more restrictions on a per product basis. When you that you can choose whether those restrictions should be merged with the global restrictions or used to override the global restrictions. This gives you a huge amount of flexibility.
This plugin recognizes all countries and states/provinces built into WooCommerce, which encompasses the entire world.
Plus it comes with our unbeatable support via email and phone.
See the Screenshots tab above to see what some sample settings might look like.
 Compatibility: WooCommerce 3.0 and newer
 Current version: 2.4.1
 
 
			 
					
					
	
		We keep all of our software up to date with the latest versions of WooCommerce and WordPress.
		If you don't see any recent changes below it's because none have become necessary!
	 
		
		Version 2.4.1 - August 19, 2025
	Ensure categories var in the setting page is set to an empty array when no setting for that exists yet
Version 2.4 - August 18, 2025
	Ensure category selections in main settings display correctly
	WooCommerce 10.x compatbility
Version 2.3 - February 3, 2024
WooCommerce 8 compatbility
	
	PHP 8 compatbility
	
	High performance order storage (HPOS) compatbility
	
	WC cart/checkout block compatbility
Version 2.2 - June 25, 2023
	
	WooCommerce 7.8 compatibility
	
	WooCommerce high performance order system (HPOS) compatibility
	
	Correct a variable name typo in the plugin's main settings file
Version 2.1.1 - August 22, 2022
	Check mode for "can" and set flag to show message when appropriate when global category settings are in use with no product based settings
	
	Ensure country has states defined before calling count() on the states element of the country
Version 2.1 - December 5, 2021
	Check shipping restrictions on the cart page when the shopper uses the "Calculate shipping" feature on the cart page
Version 2.0.5 - October 5, 2021 
	WC 5.x compatibility
Version 2.0.4 - November 15, 2020
	Updated rule checking when the mode is set to "CAN" (locations that can be shipped to)
Version 2.0.3 - October 15, 2019
	Updated product settings label to indicate whether the global restriction mode is CAN or CANNOT
Version 2.0.2 - September 20, 2019
	WooCommerce 3.7.x compatibility
Version 2.0.1 - June 13, 2019
	Corrected an issue with getting restricted postal codes for non-variable products
	
	Corrected an issue with saving restricted postal codes for variable products
	
	Added a new Restriction Mode setting that determines whether restricted locations are for where you can or cannot shipped to. 
Version 2.0 - May 16, 2019
	Added support for restricting based on postal codes
Version 1.7.5 - June 20, 2018
	When shipping is restricted based on categories ensure that restrictions only apply to products in the selected categories
Version 1.7.4 - January 7, 2016
	Tweaked the restriction checking to allow any other WooCommerce messages to display appropriately
Version 1.7.3 - December 7, 2015
	Modified default mode for products from Override to Merge
	
	Ensure empty product restriction setting results in empty array
Version 1.7.2 - June 15, 2015
	Added setting to enable experiemental live Javascript checkout page updates
Version 1.7.1 - May 29, 2015
	Cleaned up UI for the states/province selections
Version 1.7 - May 27, 2015
	Added ability to set restrictions per variation
	
	Added JS message display when the update order review process takes place
	
	Refactored code to load admin stuff only when necessary
	
	Moved product-based restriction settings into the Product Data area
Version 1.6.9 - May 13, 2015
	Adjusted destination detection checking
Version 1.6.8 - April 23, 2015
	Replaced "Select2" with "Chosen" since Select2 is pathetically slow when larger lists
	
	Replace jQuery "live" function call with "on" function call
Version 1.6.7 - February 23, 2015
	WooCommerce 2.3 compatbility
	
	Added new action that checks shipping address before the shopper attempts to place the order
	
Version 1.6.6 - August 1, 2014
	Surpress harmless warning messages
Version 1.6.5 - July 17, 2014
	Added buttons for every country that has states or provinces
Version 1.6.4 - May 19, 2014
	By customer request: Added product page button to easily select all Australian states. 
Version 1.6.3 - April 28, 2014
	Load settings before testing for a custom message.
Version 1.6.2 - April 24, 2014
	Added setting to let the admin set the error message string.
Version 1.6.1 - April 9, 2014
	Fixed "empty()" function call
Version 1.6 - April 7, 2014
	Added buttons to easily add all US states or EU states etc to the restriction list
	
	Added the ability to set global category restrictions when the admin does not want to set restrictions on a per-product basis.
Version 1.5.7 - March 31, 2014
	Added buttons to easily add all US states or EU states etc to the restriction list
Version 1.5.6 - February 11, 2014
	WooCommerce 2.1 compatbility
	
Version 1.5.5 - December 18, 2013 
	Fixed variable name when getting post meta
Version 1.5.4 - December 9, 2013 
	Fixed typo in a variable name
Version 1.5.3 - December 6, 2013 
	Add global settings
Version 1.5.2 - November 13, 2013 
	Fixed checking for countries that have no states
Version 1.5.1 - October 20, 2013 
	Added checking for the WooCommerce option "Only ship to the users billing address"
Version 1.5 - July 2, 2013 
	Initial Public Release