WooCommerce’s default shipping options don’t adapt to what’s in the cart.
A flat rate charges the same whether the customer is buying one light item or twenty heavy ones.
This means you’re either losing money on heavy orders or overcharging on small ones.
You can add multiple classes, but it’s not so easy to manage.
Conditional shipping rules solve this by adjusting the fee automatically based on cart content.
Here’s how to set them up in a few minutes using my free plugin.
What You Need
- A working WooCommerce installation.
- The free Advanced Shipping Rules for WooCommerce plugin that you can download at wordpress.org/plugins/advanced-shipping-rules-for-woocommerce or see plugin’s feature.
Install the Plugin
Go to Plugins → Add New, search for Advanced Shipping Rules for WooCommerce, install and activate.
No external accounts or license keys needed.
Open Your Shipping Zone
Go to WooCommerce → Settings → Shipping.
Click on an existing zone (or create a new one), then click Add Shipping Method and select Advanced Shipping Rules.

Click Edit on the newly added method.
Create a rule group
Inside the method settings you’ll see the rule builder. Click Add Group.
Each group is a set of conditions that must all be true for the group to apply — AND logic. If any group matches at checkout, the shipping fee for that group is applied.
Add conditions
Click Add Condition inside the group.

For each condition you set:
- Type: cart weight, number of products, or cart total.
- Operator: greater than, less than, equal to, etc.
- Value: the threshold.
- Cost: the fee to charge if this condition matches.
Add More Groups (OR Logic)
You can add as many groups as you need.

Groups work with OR logic if any group matches, it’s valid.
When multiple groups are valid, the highest cost wins.
Example setup:
| Group | Condition | Cost |
|---|---|---|
| Light order | Weight ≤ 2 kg | $4.00 |
| Medium order | Weight > 2 kg, ≤ 8 kg | $9.00 |
| Heavy order | Weight > 8 kg | $16.00 |
Save and test
Click Save Changes.
Open your store in an incognito window, add products with different weights to the cart, and check that the correct fee appears at checkout.

Tips
- Make sure every product has a weight set under Product Data → Shipping, otherwise weight rules won’t fire correctly.
- Design weight brackets so they don’t overlap unless you want the highest cost to win intentionally.
- You can add multiple instances of the method in the same zone for different shipping options (Standard, Express, etc.).
Final Thoughts
That’s all you need to get conditional shipping working. The plugin integrates directly into WooCommerce’s shipping settings, there is no separate admin panel, no extra configuration.
Install it free from WordPress.org.
