How to restrict WooCommerce Free Shipping when coupon codes are used.

Could you stop stacking discounts? When a shopper uses a coupon code, you can hide the Free Shipping option so they don’t receive both a coupon and free delivery at the same time. This protects your margins and keeps checkout fair.

💰 Real Revenue Impact: What You Lose Without This Rule

🚫 Without rules ✅ With rules
Shoppers stack coupons + Free Shipping → margin drops on every discounted order. If a coupon is applied, Free Shipping is hidden → only paid rates show; margins protected.
Example: 300 coupon orders/month × $5 saved shipping = $1,500 lost. Same 300 orders use paid shipping → $1,500 saved and fewer disputes.

Hide shipping based on coupon code

How to use

When a coupon is used, you can just hide the 'Free Shipping' option. You can target any coupon or specific coupon codes (e.g., SAVE10, BOGO50, SPECIAL25).


Benefits

  • Protects profit by preventing double discounts
  • Clear, simple checkout logic that shoppers understand
  • Works with all zones/methods—no code
  • Flexible: apply to any or specific coupons

How to configure — step guide

Turn the plugin on

1) Go to WooCommerce → Hide Shipping → General Settings.

2) Make sure the plugin is enabled. Click Save.

Create the hide rule

3) Go to WooCommerce → Hide Shipping → Manage Rules → Add New Rule.

4) Rule Title: “Hide Free Shipping when coupon used”.

5) Select Shipping Methods to Hide: choose Free Shipping (select the exact method per zone if it appears multiple times).

6) Add Condition (choose one):

  • Any coupon:
    • Condition Type: Coupon
    • Operator: is applied (or “is not empty” / similar in your UI)

      Specific coupons:

    • Condition Type: Coupon
    • Operator: is (or in)
    • Value: e.g., SAVE10, BOGO50    
  1. (Optional) Add more filters if needed: Country/State/ZIP, Subtotal, Weight, and User role.
  2. Enable the rule and Save.

    hide coupon based shipping admin settings

Test it

9) Add items that normally qualify for Free Shipping.

10) Apply a coupon → go to Checkout → Free Shipping is hidden; paid rates show.

11) Remove the coupon → Free Shipping reappears (if eligible).

hide free shipping based on coupon code 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 — Block stacking for any coupon

  • Condition: Coupon is applied (any code)
  • Result: Coupon orders show Standard $8.99 / Express $19.99 only; no free option.

Example 2 — Only block certain promos

  • Condition: Coupon is in [SAVE10, BOGO50]
  • Result: These promo codes hide Free Shipping; other codes keep their normal behavior.

Expected outcome

  • If a coupon is used, Free Shipping won’t appear.
  • Customers choose a paid rate, and your margins stay healthy.
  • No more confusion about “double discounts.”

FAQs

1) Can I still use WooCommerce’s built-in “Free shipping requires coupon”?

Yes, but this rule gives you finer control (e.g., block only certain coupons or add location/weight filters).

2) What’s better: “before” or “after” discount subtotal checks?

If you also use subtotal conditions, after discount enforces a true net spend; before discount ignores coupon effects.

3) Free Shipping still shows after applying a coupon—what did I miss?

Confirm the rule is enabled, you selected the exact Free Shipping method, and the coupon condition matches your code/behavior. Clear the cache and re-test.

4) Can I allow coupons and hide only Express?

Yes. Just pick Express (instead of Free Shipping) in Methods to Hide.

5) Will this rule hide coupons?

No. Coupons still apply. The rule only hides shipping methods.

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