WooCommerce Conditional Shipping: Rules-Based Shipping That Protects Margins
Why Default Shipping Methods Aren't Enough
WooCommerce's built-in shipping system is zone-based: customers in Zone A see one set of shipping options, customers in Zone B see another. But real-world shipping is more complex than geography. A customer in New York ordering a paperback book and a customer in New York ordering a 30kg barbell set have very different shipping needs — yet default WooCommerce shows them the same options.
Conditional shipping solves this by adding product-level logic to your shipping configuration. You create rules that dynamically adjust available shipping methods, costs, or restrictions based on what's actually in the cart.
Common scenarios that require conditional shipping:
- Oversized or heavy items that can't ship standard ground
- Fragile products that need special handling surcharges
- Digital + physical products in the same cart
- Products that can only ship to certain regions (e.g., hazardous materials)
- Free shipping that should exclude certain product categories
- Different delivery timeframes for in-stock vs backordered items
Conditional Shipping Plugins
1. Flexible Shipping (Free — $89/year)
Flexible Shipping is the most popular conditional shipping plugin in the WordPress repository. The free version supports weight-based and price-based rules within WooCommerce shipping zones. The premium version ($89/year) adds shipping class conditions, per-item calculations, and multiple rate tables per zone.
The rule system is condition-based: if cart weight is between X and Y, charge Z. You can stack multiple conditions in a single rule. For example: if cart weight is over 10kg AND shipping class is "bulky," charge $25 + $2/kg over 10kg.
2. WooCommerce Conditional Shipping and Payments ($79/year)
This official WooCommerce extension focuses on showing/hiding shipping and payment methods based on conditions. Rather than calculating rates (that's the job of your shipping method plugin), it controls which methods are available.
For example: hide "Free Shipping" when the cart contains a product from the "Oversized" category. Or: hide "Express Shipping" when the cart total is below $25. Or: hide "COD" payment when the shipping destination is international.
It's complementary to table rate or flat rate plugins — they handle the pricing, this plugin handles the visibility logic.
3. Advanced Shipping PRO by Jetsteer ($23/year)
A budget-friendly option that combines rate calculation with conditional logic. You define shipping methods with conditions: show this method only when the cart meets criteria X, Y, and Z. Conditions include cart total, item count, weight, shipping class, user role, and product categories.
4. Tree Table Rate Shipping ($39/year)
Tree Table Rate takes a unique approach — a decision-tree interface for defining shipping rules. You build branching logic visually: if weight > 5kg, check destination; if destination is EU, charge X; if destination is US, charge Y. The tree structure makes complex rules more intuitive than flat condition lists.
Essential Conditional Shipping Rules
Rule 1: Disable Free Shipping for Heavy or Oversized Items
Problem: You offer free shipping over $99, but a customer buys a $120 item that costs $35 to ship. Your margin evaporates.
Solution: Create a shipping class called "Oversized" or "Heavy" and assign it to products that cost more than X to ship. Use WooCommerce Conditional Shipping and Payments to hide the free shipping method when the cart contains an item in the "Oversized" class. Instead, show table rate shipping that accurately reflects the cost.
Alternatively, set a weight cap on free shipping: free shipping is available when cart total > $99 AND total weight < 15kg. Above 15kg, only paid methods appear.
Rule 2: Add Surcharges for Fragile Items
Problem: Glassware, ceramics, and electronics need special packaging that costs $3-$5 extra per item. Flat rate or basic table rate doesn't account for this.
Solution: Create a "Fragile" shipping class. In your table rate plugin, add a per-item surcharge for the Fragile class. For example: base rate by weight + $4 per fragile item. The customer sees a single shipping cost that includes the handling surcharge.
Rule 3: Restrict Shipping Methods by Product Category
Problem: Perishable food items can only ship via express (1-2 day delivery). Standard ground shipping would spoil the product.
Solution: When the cart contains items from the "Perishable" category, hide standard and economy shipping methods. Only show express options. This prevents customers from choosing a cheap method that results in a ruined product and a guaranteed return.
Rule 4: Mixed Cart Handling (Digital + Physical)
Problem: A customer buys an ebook ($0 shipping) and a physical book ($5 shipping). WooCommerce should only charge shipping for the physical item.
Solution: Mark digital products as "Virtual" in the product editor. WooCommerce automatically excludes virtual products from shipping calculations. The customer is charged shipping only for the physical item. No conditional plugin needed — this is built into WooCommerce core.
Rule 5: Location-Restricted Products
Problem: Certain products can't ship internationally (alcohol, batteries, aerosols, regulated items). You need to prevent international customers from ordering these products — or at least from seeing shipping options for them.
Solution: Use WooCommerce Conditional Shipping and Payments to disable all shipping methods for restricted products when the destination is outside your country. Pair with a product notice explaining the restriction.
Building Your Rule Stack
Conditional shipping rules are evaluated in a specific order, and understanding the evaluation flow prevents conflicts:
1. Zone matching: WooCommerce first determines which shipping zone the customer belongs to.
2. Method availability: All shipping methods in that zone are loaded.
3. Conditional rules: Visibility rules (show/hide) are applied, removing methods that don't match conditions.
4. Rate calculation: Remaining methods calculate their rates based on cart contents (weight, total, etc.).
5. Display: Available methods with calculated rates are shown at checkout.
When rules conflict, the last-applied rule typically wins. Be careful with overlapping conditions — if one rule hides "Express" when weight > 10kg and another rule shows "Express" when cart total > $200, the behavior depends on evaluation order. Test thoroughly.
Real-World Configuration Example
Here's a complete shipping configuration for a home goods store selling items ranging from small accessories to large furniture:
Shipping classes:
- Standard (default — most products)
- Heavy (items over 10kg)
- Fragile (glass, ceramics)
- Oversized (furniture, large items)
Shipping zones:
- Local (within 50 miles — same-day delivery available)
- Domestic (rest of country)
- International (select countries)
Shipping methods per zone:
- Local: Free same-day delivery (orders $50+), flat rate $5 same-day delivery, local pickup (free)
- Domestic: Table rate by weight (Standard + Heavy classes), table rate + $4/item surcharge (Fragile class), freight quote (Oversized — hide standard methods), free shipping over $149 (exclude Heavy and Oversized classes)
- International: Table rate by weight × destination multiplier, no Oversized shipping (hide all methods for Oversized class)
Conditional rules:
- Hide free shipping when cart contains Heavy or Oversized items
- Hide standard ground when cart contains Fragile items over $100 (force express for valuable fragile items)
- Hide all shipping methods for Oversized items when destination is international
- Show "Contact us for freight quote" message when Oversized is in cart
Performance Considerations
Every conditional rule adds processing time at checkout. For most stores (under 10 rules), this is negligible. But stores with dozens of complex rules may notice slower checkout page loads.
Tips for keeping conditional shipping performant:
- Consolidate rules: Two rules that do similar things can often be merged into one with compound conditions.
- Use shipping classes over category checks: Shipping class lookups are faster than product category queries in WooCommerce's shipping calculation engine.
- Cache-friendly plugins: Some shipping plugins cache calculated rates. Flexible Shipping and the official Table Rate extension both handle caching well.
- Avoid real-time API calls: Live carrier rate lookups (USPS, FedEx) add external API latency. If you're using conditional rules with live rates, the combination can slow checkout significantly. Table rates with conditional logic are always faster than live rates with conditional logic.
Conditional shipping rules are the final layer of a well-configured WooCommerce shipping setup. They sit on top of shipping zones (geography) and rate methods (pricing) to create a shipping system that handles edge cases gracefully, protects your margins, and presents customers with appropriate options for their specific order.
Keep reading
Related guides you might find useful
WooCommerce Table Rate Shipping: The Complete Setup Guide
Flat rate shipping loses you money on heavy items and overcharges on light ones. Here's how to set up table rate shipping in WooCommerce by weight, price, or destination.
Read guideShippingWooCommerce Free Shipping Threshold: How to Set the Right Minimum Order
Free shipping increases AOV — but set the threshold wrong and it kills your margins. Here's the math for finding your store's sweet spot.
Read guideShippingWooCommerce Shipping Zones Explained: Setup, Strategy, and Common Mistakes
Shipping zones are WooCommerce's most misunderstood feature. Here's how they actually work, how to set them up properly, and the mistakes that cost you sales.
Read guideLevel up your WooCommerce store
Join the WPBundle waitlist and get beta access to our plugin suite completely free.
Join the Waitlist