Free shipping can disappear after a WooCommerce coupon because the discounted qualifying amount falls below the method's minimum. Check the matched shipping zone, requirement type and the setting that applies the minimum before coupon discount. Do not change the commercial threshold until you know which amount the rule evaluates.
Reproduce with one unchanged basket
Record the items, quantities, delivery address, coupon code and displayed subtotal before applying the coupon. Use a staff-controlled address and test coupon on staging. Keep the address fixed so a zone change cannot masquerade as a discount problem.
Open the matching shipping zone and its Free shipping method. If no method appears even without the coupon, start with missing WooCommerce shipping options. This guide assumes the free option existed and changed after a discount.
Read the requirement as a rule
WooCommerce's free-shipping documentation distinguishes a minimum amount, a valid free-shipping coupon, either condition, and both conditions. A percentage-off coupon is not automatically a free-shipping coupon. Likewise, meeting the minimum is insufficient when the method requires both conditions.
For a minimum-based rule, inspect Apply minimum order rule before coupon discount. The setting determines whether coupon discount reduces the amount used for the minimum test. Write down the existing choice before changing it.
Use a transparent arithmetic example
Suppose a synthetic basket has an eligible amount of $84, a $10 discount and an $80 threshold, with no tax complications in this example. Testing after the discount compares $74 with $80 and fails. Testing before the discount compares $84 with $80 and passes. The coupon itself does not need to be broken for those results to differ.
Your real store may have tax-display, rounding or extension-specific rules. Compare the actual calculation with the configured store policy. Do not use the final total including shipping as a substitute for the qualifying amount; that can create circular or misleading reasoning.
Below: Minimum minus one cent. At minimum: Exact boundary checked. Coupon removed: Eligibility recalculates. Zone change: No unintended delivery offer. Explanatory checklist, not a customer test result.
Test the boundary, not one lucky order
Create cases just below, exactly at and just above the threshold. For each, apply and remove the coupon while recording the free-shipping option. Also test a valid free-shipping coupon separately from a normal discount coupon when your method uses those requirements.
| Test |
What it proves |
| No coupon, qualifying basket |
Baseline eligibility |
| Discount crosses the minimum |
Before/after-discount policy |
| Coupon removed |
Correct recalculation |
| Address moved to another zone |
No accidental offer outside coverage |
If the configuration predicts one result and checkout shows another, inspect extension filters and cached shipping calculations. Use the shipping-rate cache experiment without leaving debug mode enabled. A stale progress bar can disagree with a correct checkout rate, so compare the notice's calculation too.
Align the customer promise
When the intended rule is confirmed, update promotional copy and any free-shipping progress indicator to describe the same threshold policy. Do not promise free delivery before discount if checkout evaluates after discount. HandL WP can reconcile the cart notice and shipping method with a reproducible basket instead of granting unrestricted free shipping to hide the mismatch.
References reviewed October 10, 2026. Examples are explanatory, not customer test results.