Discount timing
WooCommerce core Free Shipping can apply its minimum before or after discounts. Repeat the boundary with the exact setting used by the selected method.
Free-shipping threshold testing
A cart far above the minimum proves only the easy case. The useful evidence sits immediately below, exactly at, and immediately above the configured amount.
Worked example
Use synthetic cart amounts of €74.99, €75.00, and €75.01. Below the boundary, paid methods should remain available and free shipping should be absent. At and above the boundary, free shipping should appear if all other requirements match.
Record method identity and price for every supported result. Labels alone can be ambiguous because two configured method instances may share the same customer-facing name.
| Cart | Question |
|---|---|
| €74.99 | Does free shipping stay absent? |
| €75.00 | Does it begin exactly here? |
| €75.01 | Does it remain available? |
Common traps
WooCommerce core Free Shipping can apply its minimum before or after discounts. Repeat the boundary with the exact setting used by the selected method.
A rule may require a coupon, an amount, either one, or both. Exercise the combinations the rule actually permits; do not infer them from one successful cart.
Use the store currency’s configured precision. The immediate neighbour of a €75.000 threshold differs from the neighbour of €75.00.
The threshold matters only after the destination matches the method’s zone. Use an invented destination that is intentionally inside the selected zone.
After reviewing the correct result, save it as the expectation. When configuration or software changes later, compare against that approved version. Do not silently replace the old expectation with whatever the store happens to do now; that would hide the regression you wanted to detect.
If WooCommerce cannot complete a supported observation, report it as unverified. An incomplete calculation is not evidence that checkout works.
Shipping Contract Guard uses supported WooCommerce core calculations, creates no order, and needs no account for manual checks.
Download the free plugin