When free shipping appears below its threshold, inspect the exact package and coupon state that WooCommerce used. Free-shipping eligibility can depend on minimum amount, coupons, tax display, shipping package and custom filters; the cart subtotal shown to the shopper is not always the value the method evaluates.
Record the cart before recalculating
Capture products, quantities, coupon, tax mode, customer address, shipping class and the package subtotal used by the shipping calculation.
Check the free-shipping requirement
Confirm whether the method requires a minimum, coupon, either/or, and whether coupon discounts are applied before the minimum is evaluated.
Look for multiple zones or duplicate methods
The customer may be matching another zone with its own free-shipping instance. Inspect the matched zone, not only the one you expected.
Inspect custom filters and shipping plugins
Extensions can modify package rates after WooCommerce calculates them. Log rate IDs before and after filters in staging.
Test boundary values
Use carts just below, exactly at and just above the threshold, with and without coupons and tax, for one representative address.
If shipping rates vanish instead, compare the earlier shipping-method diagnostics. Stock/order behaviour is separate; see order stock reduction.
Why the visible subtotal can differ from the shipping threshold
Discount order, tax-inclusive display, virtual items and package splitting can make the shopper-facing subtotal differ from the value a shipping method evaluates. Log the package subtotal and applied coupons at calculation time. For address-related disappearance, see shipping methods after an address change.