How to hide WooCommerce Free Shipping for low-value orders

Stop showing Free Shipping when the order value is too low. This keeps margins healthy and makes checkout options accurate for small carts.

See how blocking free shipping on orders under $20 protects margins on small carts. The rules also surface Express Shipping, driving more paid upgrades and incremental revenue.

đźš« Without rules âś… With rules
Free shipping applied to low-value carts; margin erosion on every <$20 order. No free shipping below $20; customers choose paid methods; margins protected on small orders.
Free/cheap options overshadow Express; fewer upgrades and lost premium shipping revenue. Express option remains prominent; more shoppers choose paid Express, adding incremental shipping revenue.

Hide free shipping for low orders

What is the feature?

A hide rule that checks the cart/order amount and removes “Free Shipping” whenever the value is below your threshold (e.g., under $75).

Works alongside the core WooCommerce “Free shipping min amount.” Use this rule when you want stricter control (e.g., stack with state/ZIP, user role, time window).


Why is it required?

  • Prevents customers with small orders from seeing a perk meant for larger carts
  • Reduces support tickets from misapplied free shipping
  • Keeps pricing consistent across zones and promotions

How to configure

General settings

Go to: WooCommerce → Hide Shipping → General Settings

  1. Ensure the plugin is enabled, then Save.

Create the hide rule

Go to: WooCommerce → Hide Shipping → Manage Rules

2) Click Add New Rule.

3) Rule Title: “Hide Free Shipping below $75”.

4) Select Shipping Methods to Hide: choose Free Shipping (select the exact method per zone if listed separately).

5) Add Condition (choose the logic you prefer):

  • Cart subtotal after discount < $75 (common choice, honors coupons), or
  • Cart subtotal before discount < $75 (ignores coupons)
  1. (Optional refinements): Add Country/State/ZIP, User role (Guest/Wholesale), Time/Day, Weight, or Category/Product filters to fine-tune.
  2. Enable the rule and Save.

hide free shipping settings on subtotal

Verify on the storefront

8) Cart under $75 → go to Checkout → Free Shipping is hidden; paid methods show.

9) Increase cart to $75+ → Free Shipping appears automatically.

disable shipping checkout

Ready to See All Features in Actions?

Access our complete advanced features instance, allowing you to configure every feature with real checkout scenarios.


Real examples

Example 1 — Sitewide threshold, coupons honored

  • Condition: Cart subtotal after discount < $75
  • Scope: All US states
  • Result: Shoppers must reach $75 net to see Free Shipping.

Example 2 — Higher threshold for CA & NY, guests only

  • Conditions: Cart subtotal after discount < $99 AND State in [CA, NY] AND User role = Guest
  • Result: Guests in CA/NY need $99 to unlock Free Shipping; others keep the default rules.

Expected outcome

  • Free Shipping stays hidden for low-value orders and only appears once the required spend is met.
  • Checkout is clearer; undercharges and support contacts drop.

FAQs

1) Should I use “before” or “after” the discount?

  • After discount, ensure your net revenue meets the threshold.
  • Before discount, ignores coupons and checks the raw spend.

2) Free Shipping still appears—what should I check?

Confirm the rule is enabled, you selected the exact Free Shipping method (per zone if needed), and no higher-priority rule overrides it. Re-save and clear cache.

3) Can I combine with other limits (weight, category)?

Yes—stack conditions (e.g., Subtotal ≥ $75 AND Weight ≤ 20 lb) so heavy carts don’t unlock Free Shipping.

4) Does this replace WooCommerce’s built-in “Minimum order amount”?

No, you can use either. The Hide Shipping rule offers finer control (roles, geography, time windows, etc.).

5) Will paid rates still show?

Yes—only Free Shipping is hidden; other eligible methods remain.

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.