Weight Based Shipping is a simple yet flexible shipping method for WooCommerce focused mainly on the order weight (but not limited to) to calculate shipping cost. The plugin allows you to add multiple rules based on various conditions.
Order weight, subtotal and destination
Create as many shipping rules as you need for different order destinations, weight and subtotal ranges.
Flexible Price Calculation
Each rule can be configured to expose a constant price (like Flat Rate) or a progressive price based on the cart weight, or both.
Conditional Free Shipping
The plugin allows you to set up a free shipping threshold.
Shipping Classes Support (available in the Plus version)
For each shipping class you have you can override the way shipping price is calculated for it.
See screenshots for the list of all supported options.
Also, check out our advanced table rate shipping plugin for WooCommerce.
Contributors & Developers
“WooCommerce Weight Based Shipping” is open source software. The following people have contributed to this plugin.Contributors
Interested in development?
- Tested with WooCommerce 8.0, WordPress 6.3.
- Drop WooCommerce pre-5.0 support.
- Show a notice on the global shipping method suggesting to try shipping zones instead.
- Remove WooCommerce pre-2.6 compat code.
- Prepare WBS6 preview.
- Tested with WooCommerce 7.9.
- Tested with WooCommerce 7.8.
- Tested with WooCommerce 7.7.
- Tested with WooCommerce 7.6.
- Declare compatibility with HPOS.
- Tested with WordPress 6.2.
- Check nonce on config update.
- Remove the legacy config import option (used for 4.x -> 5.x migration).
- Tested with WooCommerce 7.5.
- Tested with WooCommerce 7.4.
- Use the cart price provided by WooCommerce by default for fresh installations of the plugin. It makes Order Subtotal accounting for virtual items’ prices and increases compatibility with third-party plugins.
- Make sure a user has manage_woocommerce capability in order to update the shipping rules.
- Tested with PHP 8.2.
- Raise the minimum required WordPress version to 4.6.
- Tested with WooCommerce 7.1.
- Tested with WooCommerce 7.0, WordPress 6.1.
- Tested with WooCommerce 6.9.
- Tested with WooCommerce 6.7
- Tested with WooCommerce 6.5, WordPress 6.0.
- Fixed a PHP warning triggered by some other plugins about a missing InstalledVersions.php file.
- Tested with WooCommerce 6.4.
- Tested with WooCommerce 6.3.
- Tested with WordPress 5.9, WooCommerce 6.1.
- Tested with WooCommerce 6.0.
- Tested with WooCommerce 5.9.
- Tested with WooCommerce 5.8.
- Drop PHP 5.6 support.
- Tested with WooCommerce 5.7.
- Tested with WooCommerce 5.6.
- Tested with WordPress 5.8, WooCommerce 5.5.
- Tested with WooCommerce 5.3.
- Tested with WooCommerce 5.2.
- Tested with WooCommerce 5.1, WordPress 5.7.
- Bump the minimum supported PHP version to 5.6.
- Tested with WooCommerce 5.0.
- Tested with WooCommerce 4.9.
- Require minimum WooCommerce 3.2.
- Tested with WooCommerce 4.8, WordPress 5.6.
- Fix the issue with the global WBS method not being triggered by WooCommerce for customers having no location set.
- Tested with WooCommerce 4.7.
- Tested with WooCommerce 4.6.
- Raise the minimum required WooCommerce version to 3.1.2.
- Tested with WooCommerce 4.5.
- Fix unsaved settings warning with WooCommerce 4.4.1.
- Tested with WordPress 5.5.
- Fix a typo in the settings link.
- Tested with WooCommerce 4.3.
- Tested with WooCommerce 4.2.
- Tested with WooCommerce 4.1.
- Fix small appearance issues with recent WordPress/WooCommerce.
- Tested with WooCommerce 4.0, WordPress 5.4.
- Tested with WooCommerce 3.9.
- Fix appearance with WordPress 5.3.
- Update supported WooCommerce version to 3.8, WordPress to 5.3.
- Update supported WooCommerce version to 3.7.
- Workaround VaultPress false-positive.
- Fix ‘400 Bad Request’ error on saving settings.
- Add ‘after discount applied’ option to the Order Subtotal condition to match against order price with coupons and other discounts applied.
- Fix WooCommerce 3.6.0+ compatibility issue causing no shipping options shown to a customer under some circumstances.
- Fix PHP 5.3 compatibility issue.
- Update supported WordPress version to 5.1.
- Partial support for decimal quantities.
- Update supported WordPress version to 5.0.
- Improve prerequisites checking.
- Update supported WooCommerce version to 3.5.
- Update supported WooCommerce version.
- Don’t ignore duplicate shipping classes entries. When multiple rates specified for a class in a rule, they all will be in effect starting from this version.
- Fix issue with Weight Rate causing zero price in case of a small order weight and large step (“per each”) value.
- Fix appearance issues with WooCommerce 3.2.
- Fix blank settings page in Safari when Yoast SEO is active.
- Fix WooCommerce pre-2.6 compatibility.
- Minor appearance fixes.
- Fix blank settings page in Firefox when Yoast SEO is active.
- Fix settings not saved on hosts overriding arg_separator.output php.ini option.
- Support WooCommerce convention on shipping option ids to fix shipping method detection in third-party code, like Cash On Delivery payment method and Conditional Shipping and Payments plugin.
- Show a warning on PHP 5.3 with Zend Guard Loader active known to crash with 500/503 server error.
- Fix IE11 error preventing from adding/importing rules.
- Fix welcome screen buttons appearance in WP 4.7.5.
- A bunch of minor fixes.
- Fix PHP 5.3.x error while importing legacy rules.
- Fix WooCommerce 3.x deprecation notice about get_variation_id.
- Fix WooCommerce 3.x deprecation notices.
- Deactivate other active versions of the plugin upon activation (fixed).
- Fix ‘fatal error: call to undefined function Wbs\wc_get_shipping_method_count()’.
- Avoid conflicts with other plugins using same libraries.
- Deactivate other active versions of the plugin upon activation.
- Fix Destinations not being saved on WooCommerce 3.0.
- Rewritten from scratch, better performance and look’n’feel.
- Shipping Zones support.
- Fix links to premium plugins.
- Fix rules not imported from an older version when updating from pre-4.0 to 4.2.0 or 4.2.1.
- Fix saving rules order.
- Allow sorting rules by drag’n’drop in admin panel.
- WooCommerce 2.6 compatibility fixes.
- Minimize chances of a float-point rounding error in the weight step count calculation (https://wordpress.org/support/topic/weight-rate-charge-skip-calculate).
- Don’t fail on invalid settings, allow editing them instead.
- Backup old settings on upgrade from pre-4.0 versions.
- Fix WC_Settings_API->get_field_key() missing method usage on WC 2.3.x.
- Use package passed to calculate_shipping() funciton instead of global cart object for better integration with 3d-party plugins.
- Get rid of wbs_remap_shipping_class hook.
- Use class autoloader for better performance and code readability.
- Admin UI redesign.
- Country states/regions targeting support.
- Fixed: inconsistent decimal input handling in Shipping Classes section (https://wordpress.org/support/topic/please-enter-in-monetary-decimal-issue).
- Fixed: plugin settings are not changed on save with WooCommerce 2.3.10 (WooCommerce 2.3.10 compatibility issue).
- Introduced ‘wbs_profile_settings_form’ filter for better 3d-party extensions support.
- Removed partial localization.
- Min/Max Shipping Price options.
- Improved upgrade warning system.
- Fixed warning about Shipping Classes Overrides changes.
- Fixed Shipping Classes Overrides: always apply base Handling Fee.
- Introduced “Subtotal With Tax” option.
- Min/Max Subtotal condition support.
- Introduce “wbs_remap_shipping_class” filter to provide 3dparty plugins an ability to alter shipping cost calculation.
- WordPress 4.1 compatibility testing.
- Shipping classes support.
- Ability to choose all countries except specified.
- Select All/None buttons for countries.
- Purge shipping price calculations cache on configuration changes to reflect actual config immediatelly.
- Profiles table look tweaks.
- Other small tweaks.
- Fixed: deleting non-currently selected configuration deletes first configuration from the list.
- Updated pot-file required for translations.
- Added three nice buttons to plugin settings page.
- Prevent buttons in Actions column from wrapping on multiple lines.
- By default, apply Shipping Rate to the extra weight part exceeding Min Weight. Also, a checkbox added to switch off this feature.
- Duplicate profile feature.
- New ‘Weight Step’ option for rough gradual shipping price calculation.
- Added more detailed description to the Handling Fee and Shipping Rate fields to make their purpose clear.
- Plugin prepared for localization.
- Fixed: first time saving settings with fresh installations does not save anything while reporting a success.
- Replace short php tags with their full equivalents to make code more portable.
Fix “parse error: syntax error, unexpected T_FUNCTION in woocommerce-weight-based-shipping.php on line 610” https://wordpress.org/support/topic/fatal-error-1164.
Allow zero weight shipping. Thus, only Handling Fee is added to the final price.
Previously, weight based shipping option has not been shown to user if total weight of their cart is zero. Since version 2.2.1 this is changed so shipping option is available to user with price set to Handling Fee. If it does not suite your needs well you can return previous behavior by setting Min Weight to something a bit greater zero, e.g. 0.001, so that zero-weight orders will not match constraints and the shipping option will not be shown.