How to set conditional shipping rates in WooCommerce
WooCommerce handles simple conditional rates with shipping zones, flat rates, free shipping thresholds and shipping classes. For rules based on weight, cart value, quantity or several conditions together, you need a table-rate or conditional-shipping plugin.
- 01Write down each shipping rule
- 02Create the shipping zones
- 03Use core methods for simple rules
- 04Separate products with shipping classes
- 05Add a table-rate method
- 06Test every threshold
What you need
- A WooCommerce store with physical products
- Admin access to WordPress
- Your shipping destinations and rate rules
- Accurate product weights and shipping classes where needed
Write down each shipping rule
List the conditions before changing WooCommerce. For example: orders under $50 pay $8, orders of 5 kg or more pay $14, and orders over $100 ship free within the United States.
Decide whether rules are based on the destination, cart subtotal, quantity, total weight, product type, or a combination. Also decide whether matching rules should add together or whether only one rate should be shown.
Create the shipping zones
Go to WooCommerce > Settings > Shipping > Shipping zones. Add a zone for each destination that needs different rates, such as a state, group of postcodes, country, or wider region. Then add the relevant shipping method to each zone.
Put specific zones above broad zones. WooCommerce matches the customer to the first zone that applies, and a customer sees methods from only that matched zone. A postcode-specific zone placed below an all-country zone will never be reached.
Use core methods for simple rules
For a fixed charge, add Flat rate to the zone and enter its cost. Flat Rate can charge per order, per item, or by shipping class. For a minimum-spend offer, add Free shipping, choose A minimum order amount, and enter the threshold.
WooCommerce also supports quantity and percentage formulas in a Flat Rate cost field. For example, 10 + ( 2 * [qty] ) adds $10 plus $2 for each item. Free Shipping can use the order amount before or after coupon discounts, so choose that setting deliberately.
Separate products with shipping classes
Go to WooCommerce > Settings > Shipping > Classes and create classes such as Standard, Bulky, or Fragile. Assign one class to each relevant product from the product editor’s Shipping section.
Edit the zone’s Flat Rate method and enter a cost for each class. Set the calculation type to Per order to charge the most expensive applicable class, or Per class to add class costs together. Shipping classes group products; they do not create customer-facing rates until you use them in a shipping method.
Add a table-rate method
Core WooCommerce is fine for a few fixed rates, destination rules, free-shipping thresholds, and shipping-class charges. It does not provide one built-in table for arbitrary combinations of weight, subtotal, quantity and destination. When those are your requirements, install a table-rate or conditional-shipping extension.
Add the new method inside the correct shipping zone, then create rows with minimum and maximum values for the conditions you use. Choose whether the calculation is per order, per item, per line item, or per shipping class. Keep ranges non-overlapping unless you intentionally want more than one row to apply.
Test every threshold
Test an address in every zone, one item just below and above each price or weight break, mixed shipping classes, coupons, variable-product variations, and a cart containing virtual products. Check the result in both the cart and checkout.
If a rate is missing, confirm the address matches the intended zone, the product is not marked virtual, weights and shipping classes are saved, and the method is active. If a rate is unexpectedly high or low, check whether the method is calculating per order, item, line, or class. Enable WooCommerce shipping debug mode when the matching zone is unclear.
The fast way: Install WooCommerce Table Rate Shipping, add it to the relevant shipping zone, and build your rules around destination, weight, price, or quantity. This is quicker than trying to make several Flat Rate methods imitate a table, particularly when the rules change often.
Let WooCommerce Table Rate Shipping do it
Rule-based rates by weight, price, quantity, and destination; choose it for flexible tables instead of carrier-calculated rates.
Sources
- woocommerce.com /document/setting-up-shipping-zones/?utm_source=openai
- woocommerce.com /document/flat-rate-shipping/?utm_source=openai
- woocommerce.com /document/product-shipping-classes/?utm_source=openai
- woocommerce.com /document/premium-shipping-extension-options/?utm_source=ope…
- woocommerce.com /document/troubleshooting-core-shipping/?utm_source=openai
- woocommerce.com /document/free-shipping/?utm_source=openai
Questions
- Can WooCommerce set conditional shipping rates without a plugin?
- Yes, but only for common cases. Core WooCommerce supports destination-based shipping zones, flat rates, free shipping based on a minimum order amount, shipping classes, quantity formulas, and percentage-based Flat Rate formulas. It does not provide a general table for combining weight, subtotal, quantity and destination conditions, so advanced rules require an extension or custom development.
- How do I set free shipping above a certain order value?
- Add or edit the relevant shipping zone, choose Add shipping method, select Free shipping, and set Free Shipping Requires to A minimum order amount. Enter the threshold and decide whether the threshold is checked before or after coupon discounts. Add a separate paid method if customers should still be able to choose paid delivery.
- Can Flat Rate shipping use product weight?
- Not as a general weight table in WooCommerce core. Flat Rate can use a base charge, item quantities, percentages, and shipping-class costs, but weight-based ranges normally need a table-rate or advanced conditional-shipping extension. Make sure every physical product has an accurate weight before configuring such rules, or the calculated result may be wrong.
- Why is the wrong shipping rate showing at checkout?
- The usual causes are an address matching the wrong zone, zones being ordered too broadly, a product missing its shipping class or weight, or the method calculating per class instead of per order. Check the customer’s postcode, reorder overlapping zones, review product shipping data, and inspect the method’s calculation type. WooCommerce uses the first matching zone, not every matching zone.
- Should I use a table-rate plugin for conditional shipping?
- Use a table-rate plugin when rates depend on weight, cart value, quantity, destination, shipping class, or combinations of those conditions. It is unnecessary for one flat charge or a simple free-shipping threshold, which core WooCommerce already handles. WooCommerce Table Rate Shipping is a suitable choice when you want rule-based tables rather than live carrier-calculated rates.