High shipping costs are a major reason why customers abandon their shopping carts. If your WooCommerce store has excessive or unclear pricing, you may be unintentionally losing sales.
This is why it’s crucial to provide transparent and reasonable shipping rates. One of the easiest methods to achieve this is through weight-based shipping.
With weight-based shipping, the costs are determined by the total weight of the items in the cart. Lighter orders benefit from lower rates, while heavier orders are charged more accurately, allowing you to cover expenses without deterring customers.
After evaluating WooCommerce’s built-in functionalities and the most trustworthy third-party plugins, I’ve identified the most effective ways to implement this system.
In this guide, I will walk you through the process of adding weight-based shipping to your store. Additionally, I will provide practical advice to help you avoid common mistakes and ensure a seamless checkout experience. 🚚
Why Should You Implement Weight-Based Shipping in WooCommerce?
Weight-based shipping guarantees fair and precise delivery costs by calculating rates based on the actual weight of each order.
Unlike flat rate shipping, which imposes the same fee regardless of the order size, this approach prevents overcharging for lighter items and ensures you don’t lose money on heavier ones.
Switching to weight-based shipping in your WooCommerce store provides greater control and flexibility. This approach eliminates guesswork, prevents unexpected charges at checkout, and ensures transparent pricing.
This method is particularly beneficial for stores that sell heavy items, product bundles, or a combination of lightweight and bulky goods.
Whether you are shipping furniture, books, or gym equipment, this strategy helps maintain profitability while ensuring that shipping costs are clear for your customers.
Now, let’s explore how to easily implement weight-based shipping in WooCommerce. This tutorial will cover two different methods, and you can use the links below to navigate to your preferred method:
- Method 1: Implement Weight-Based Shipping Using Default Settings (Basic Settings)
- Method 2: Implement Weight-Based Shipping Using a Plugin (Recommended)
- 🎁 Bonus: How to Offer a Shipping Discount in WooCommerce
- FAQs: Understanding Weight-Based Shipping in WooCommerce
Method 1: Implement Weight-Based Shipping Using Default Settings (Basic Settings)
If you want to set up weight-based shipping in WooCommerce without relying on additional plugins or extensions, this method is ideal for you.
While WooCommerce does not include a built-in weight-based shipping option, there is a straightforward workaround you can utilize.
Instead of using a direct weight-based setting, you can utilize shipping classes to categorize products based on their weight. This allows you to establish different flat rates for each class within your designated shipping zones.
This approach enables heavier items to incur higher shipping costs while lighter items can be shipped for less, all utilizing the default settings in WooCommerce.
💡 Pro Tip: Before you begin, ensure that you have selected your preferred weight unit (e.g., kg, lbs, oz) for your store.
You can accomplish this by going to WooCommerce » Settings » Products » General and choosing your unit from the ‘Weight unit’ dropdown menu. This will ensure that all your calculations remain consistent.
For additional assistance in configuring your store, refer to our comprehensive guide on setting up a WooCommerce store.
To get started, navigate to the WooCommerce » Settings » Shipping » Classes page from your WordPress dashboard and click the ‘Add shipping class’ button.
In the pop-up window that appears, enter a name for your shipping class. I recommend selecting a clear name that helps you quickly identify the type of products it pertains to.
For instance, if you are creating a class for all items weighing under 5 kg, you might name it ‘Under 5kg.’
Next, you need to create a slug for the shipping class. You can leave this field empty, and WooCommerce will automatically generate a slug based on the name you provide.
If you prefer to have more control, feel free to enter your own custom slug.
Following that, include a brief note describing the purpose of the shipping class. This note is primarily for your own reference or for other administrators managing the site.
After that, click the ‘Create’ button to finalize the class.
You can repeat this process to create as many weight-based shipping classes as needed.
When you’re finished, your setup will resemble this:
Next, navigate to the ‘Shipping Zones’ tab. Here, you will find a list of all the shipping zones configured for your store. These zones indicate the countries or regions where you provide shipping services.
If you haven’t created a shipping zone yet, just click the ‘Add zone’ button.
This will direct you to a new page where you can enter a name for the zone. It’s advisable to name the zone after the specific region or country you are shipping to, as this helps avoid any confusion.
Then, type the name of the region or country in the ‘Zone regions’ field. When the option appears, click on it to add it to your zone. You can include multiple regions as needed.
Once you have completed this, click the ‘Add shipping method’ button to continue.
A new popup will appear on your screen.
Select the ‘Flat rate’ option and then click ‘Continue.’
In the next step, provide a name for your shipping method. This is crucial as it will be visible to your customers during checkout.
A name like ‘Shipping Cost Based on Product Weight’ is both clear and descriptive.
Next, enter a shipping cost in the ‘Cost’ field. This will be the default shipping fee that customers will incur when purchasing an item.
This represents the base shipping cost for any product that does not have a specific shipping class. Remember, this cost can also be added to other shipping fees, which I will explain shortly.
Next, scroll down to the ‘Shipping class costs’ section. Here, you can specify a cost for each weight-based shipping class you have created.
For instance, you might charge $10 for items in the 11–15 kg class and $20 for those in the 16–20 kg class.
⚠️ Important Note:WooCommerce adds the shipping class cost on top of the default flat rate. For example, if your default cost is $5 and the class cost is $10, the total shipping fee for the customer will be $15.
To prevent this and use only the shipping class cost, you need to set the main ‘Cost’ field for the flat rate to $0.
Below the cost fields, you’ll find a setting labeled ‘Calculation Type’. This setting determines how WooCommerce calculates shipping for carts containing items from different shipping classes.
Here’s how each option functions:
- Per Class: WooCommerce will sum the costs for each shipping class present in the order. For instance, if a customer has an item from the 11–15 kg class (with a $10 fee) and another from the 16–20 kg class (with a $20 fee), the total shipping cost will amount to $30.
- Per Order: WooCommerce will apply only the cost from the highest shipping class in the order. In the same example, only the $20 fee would be added to the shipping charge.
For most stores utilizing weight-based shipping, the ‘Per Class’ option provides more precise and equitable pricing. This is particularly beneficial when orders frequently include products of different weights.
After selecting your ‘Calculation Type’, click the ‘Save’ button to confirm your settings.
Next, navigate to the ‘Products’ page and open your desired item in the WooCommerce editor. Scroll down to the ‘Product Data’ section and select the ‘Shipping’ tab.
Begin by entering the weight of your product in the ‘Weight’ field. Next, select the appropriate shipping class from the ‘Shipping class’ dropdown menu.
💡 Pro Tip: Remember to factor in the weight of your packaging materials, such as boxes and bubble wrap, when calculating the total weight of your product. This ensures accurate shipping fees and helps prevent losses on postage.
For instance, if your product weighs 0.45 kg, you should choose the ‘Under 5kg’ shipping class that you created earlier.
Then, click the ‘Update’ or ‘Publish’ button to save your changes.
Visit your WooCommerce store to check the shipping cost based on the weight of your product.
While this approach is effective for simple setups, managing numerous weight classes can become challenging.
If you have many products or require more flexible shipping options, using a dedicated plugin is a much simpler solution.
Method 2: Implement Weight-Based Shipping with a Plugin (Recommended)
For enhanced and adaptable shipping rules, opting for a dedicated plugin is your best choice.
I highly recommend using the free WooCommerce Weight Based Shipping plugin, as it enables you to establish multiple shipping rules based on the weight of products. Additionally, you can set varying rates for different countries and provide free shipping once a customer’s order reaches a specified amount.
To get started, you need to install and activate the WooCommerce Weight Based Shipping plugin. For detailed instructions, refer to our tutorial on installing a WordPress plugin.
After activation, navigate to the WooCommerce » Settings » Shipping » Weight Based Shipping section in the WordPress admin sidebar.
Next, click the ‘Set Up Global Shipping Rules’ button.
This will direct you to a new screen where you can establish weight-based shipping rules for your products. You’ll see that the plugin includes several default rules already configured, which you can easily modify or remove as necessary.
Begin by adding a title for each rule. Choose descriptive names that help you quickly identify the weight range, such as ‘Under 5kg’ or ‘5-10kg’.
In the ‘Destination’ column, you can keep the setting as ‘Any’. This means the weight shipping rule will be applicable to all countries you ship to.
To set different shipping rates for specific regions, select a country from the ‘Destination’ dropdown menu. This enables you to apply your weight-based shipping rules exclusively to that location.
For instance, if your store is located in Europe, you might charge $5 for orders under 5kg shipped to France, as it is nearby and shipping costs are lower.
Conversely, for the same weight range shipped to the USA, you could set a shipping fee of $10 or more to account for the increased costs due to the greater distance.
Next, specify the ‘From’ and ‘Up To’ weight values for each rule in the Weight column. For example, for the ‘Under 5kg’ rule, you would enter From: 0 and Up To: 5.
After entering the values, click the ‘OK’ button to save the weight range.
Now, examine the ‘Value’ column. This is where you determine when the shipping rule is applicable, typically based on the total order value.
For example, if you want to provide free shipping for small packages under 5kg, but only when the customer spends $100 or more, set the weight range from 0 to 5 and enter 100.00+ in the ‘Value’ column. Then, set the shipping cost to ‘Free.’
If a customer orders products weighing less than 5kg and their cart total is $100 or more, they will receive free shipping.
You may also want to create a shipping rule for customers whose orders total less than $100.
To do this, set the same weight range of 0 to 5kg, but in the ‘Value’ column, input 0.00 – 99.99 and assign a shipping cost of around $10.
This means that if the cart weight is under 5kg and the order total is below $100, a shipping fee of $10 will apply.
💡 Pro Tip:If you prefer to base the shipping rule solely on weight, disregarding the cart total, there’s a straightforward method to achieve this.
In the ‘Value’ column, enter 0.00 in the ‘From’ field and leave the ‘To’ field empty.
This configuration instructs the plugin to apply the rule to all orders, regardless of their total amount.
Next, you will need to set the shipping cost according to weight. To do this, expand the ‘Shipping’ tab for each rule. You can choose the ‘Free’ option to provide complimentary shipping.
Alternatively, select the ‘Flat’ option and specify the shipping price based on weight.
Consider selecting the ‘Flat + Progressive’ shipping option, ideal for businesses that sell heavier products exceeding your weight limits.
For instance, if your weight rules apply up to 30 kg, you can establish a flat shipping fee of $20 for orders weighing up to 30 kg. Additionally, in the Progressive section, you can specify a charge of $2 for each additional kilogram.
Thus, if a customer orders a product weighing 32 kg, they will incur a shipping fee of $20 for the first 30 kg plus an additional $4 for the extra 2 kg, totaling $24.
This configuration guarantees that you adequately cover your shipping expenses, even for heavier shipments.
Next, include a note for each weight category. This note is for your reference and your team’s, helping to clarify the purpose of each rule.
For example, you might write, ‘Free shipping on small orders over $100’ or ‘Additional fees for items exceeding 30 kg.’
After adding the notes, click the ‘Save’ icon to preserve your settings.
Next, you must assign the shipping method you created to one of your shipping zones.
In the ‘Shipping’ tab, select a zone where you want to implement weight-based shipping, then click the ‘Add shipping method’ button.
A popup will appear on your screen prompting you to select ‘Weight Based Shipping’ as your preferred shipping method.
Next, click the ‘Continue’ button to proceed.
Then, navigate to the ‘Products’ page and open a product in the editor.
Scroll down to the ‘Product Data’ section and select the ‘Shipping’ tab. Here, you will need to enter the product’s weight to apply the relevant shipping rules.
After entering the weight, click the ‘Update’ or ‘Publish’ button to save your changes.
Now, visit your WooCommerce store and add a product to your shopping cart.
You should see the shipping charges displayed based on the weight of the products in your cart.
🎁 Bonus: Provide a Shipping Discount in WooCommerce
Implementing weight-based shipping ensures that your customers are charged fairly. However, if you want to boost your sales, consider offering shipping discounts.
Many customers anticipate shipping deals, especially for larger orders. Even a minor discount can significantly improve conversion rates and enhance customer satisfaction.
This is why providing a shipping discount is an effective strategy to minimize cart abandonment and increase your average order value.
To effortlessly incorporate shipping discounts into your WooCommerce store, I suggest using the Advanced Coupons plugin.
This plugin is user-friendly and enables you to easily establish shipping discount rules.
For instance, you can provide free shipping when a customer’s cart reaches a specified total, implement percentage discounts on shipping fees, or automatically activate special shipping promotions based on particular cart conditions.
Additionally, you can merge these promotions with your weight-based shipping rules for enhanced flexibility.
To begin, check out our tutorial on how to provide a shipping discount in WooCommerce.
Frequently Asked Questions: Weight-Based Shipping in WooCommerce
Here are answers to some common inquiries regarding the setup of weight-based shipping in WooCommerce.
Is it necessary to assign a weight to every single WooCommerce product?
Yes, for weight-based shipping to function properly, you must specify a weight for each physical product in your store.
If a product lacks an assigned weight, WooCommerce will not be able to accurately calculate the shipping cost, potentially reverting to a default flat rate or displaying no shipping options.
What occurs if a customer has both physical and digital products in their cart?
WooCommerce simplifies shipping calculations by automatically determining costs based on the weight of physical items in the cart. Digital products do not have weight and therefore do not influence shipping fees.
Is it possible to provide free shipping for specific orders in WooCommerce?
Yes, you can easily set up free shipping by creating a shipping class for a designated weight range and assigning it a cost of $0.
Using the plugin method, you can establish a rule that grants free shipping when an order meets a particular weight threshold or total cart value, offering you greater flexibility.
How should I manage shipping for products with a wide variety of weights?
The most effective strategy is to establish multiple shipping rules to accommodate all your products. For exceptionally heavy items that may surpass your maximum weight limit, the plugin method is recommended.
You can utilize the ‘Flat + Progressive’ option to set a base shipping rate along with an additional charge per kg/lb, ensuring that you cover costs for larger orders.
I hope this article has helped you understand how to implement weight-based shipping in WooCommerce. You may also find our beginner’s guide on adding a free shipping bar in WooCommerce and our tutorial on preventing fraud and fake orders in WooCommerce helpful.
If you found this article helpful, consider subscribing to our YouTube Channel for informative WordPress video tutorials. Stay connected with us on Twitter and Facebook for more updates.


