Plugin documentation

Hide Paid Shipping When Free Shipping Is Available for WooCommerce

Free 0.1.3 and Pro 0.1.3 setup, testing, billing, privacy, troubleshooting, rollback, and StoreFixKit Support.

Free 0.1.3 and Pro 0.1.3 documentation.

Hide Paid Shipping When Free Shipping Is Available removes paid delivery choices from a WooCommerce shipping package after that same package contains Free Shipping. Free Shipping and Local Pickup always remain. Pro can also keep up to ten other configured shipping choices.

Requirements

Component Requirement
WordPress 6.2 or newer
PHP 7.4 or newer
WooCommerce 8.9 or newer, active
Free rule Hide paid rates only when Free Shipping exists in the same package
Pro plan One site, $39/year after a 14-day no-card trial

Install Free

  1. Confirm WooCommerce is active and your shipping zones already contain the methods you want to offer.
  2. In WordPress, open Plugins > Add New > Upload Plugin.
  3. Upload the Free 0.1.3 ZIP, select Install Now, and then select Activate.
  4. Open WooCommerce > Hide Paid Shipping.
  5. Select Hide paid shipping when Free Shipping is available.
  6. Select Save Changes.
Hide Paid Shipping settings with the Free switch enabled and Pro shipping choices listed by zone and name
The desktop settings use one Free switch. Pro lists configured shipping choices by zone and readable name.
Hide Paid Shipping settings with the Free switch and Pro choices at a mobile viewport
The same labeled controls remain readable at a phone-width viewport.

Verify the result

Use a test address and cart that match a real shipping zone.

  1. Add a product to the cart without reaching your Free Shipping condition.
  2. Open checkout and confirm all normal paid choices still appear.
  3. Change the cart so Free Shipping becomes available.
  4. Confirm Free Shipping remains.
  5. Confirm Local Pickup remains when it is configured for that package.
  6. Confirm paid choices disappear from that package only.
  7. If the order uses multiple shipping packages, test each package separately.
  8. Turn the setting off and confirm WooCommerce's original choices return.

What Free changes

Free reads the shipping rates WooCommerce has already calculated for one package. If the package contains a valid free_shipping rate, Free returns only Free Shipping and Local Pickup from that package.

If Free Shipping is absent, a rate is malformed, WooCommerce is missing, or the setting is disabled, the complete incoming rate list returns unchanged. The plugin does not edit shipping zones, prices, taxes, labels, defaults, carts, orders, customers, or products.

What Pro adds

Pro lets you keep up to ten additional configured shipping choices beside Free Shipping and Local Pickup.

  1. Keep Free active.
  2. Install and activate the matching Pro 0.1.3 ZIP.
  3. Activate the product license.
  4. Open WooCommerce > Hide Paid Shipping.
  5. Under Pro shipping choices to keep, select the named choices you still want to offer.
  6. Select Save Pro choices.

The list is built from your configured WooCommerce shipping zones. Free Shipping cannot be excluded, and Local Pickup is always kept. If Pro or its license is unavailable, the complete Free rule continues locally.

Classic and block checkout

Both classic checkout and the WooCommerce Checkout Block use server-calculated package rates. This plugin filters those package rates on the server and loads no checkout JavaScript or CSS.

The plugin does not change checkout markup, force a selected method, merge packages, or control express-payment interfaces. A third-party shipping extension can remain compatible when it returns normal WC_Shipping_Rate objects with stable rate IDs. Unsupported or malformed rate data is left unchanged.

Troubleshooting

Confirm Free Shipping is actually available for the same package. Check the customer address, shipping zone, minimum order rule, coupon requirement, tax display, and cart total. Clear the cart or full-page cache, then recalculate shipping.

Local Pickup disappeared

The plugin is designed to keep WooCommerce local_pickup rates. Disable the plugin. If Local Pickup is still absent, verify that the matched shipping zone contains an enabled Local Pickup method. If the method comes from another plugin under a different method ID, Pro may list it as an additional choice to keep.

A Pro choice is not listed

Confirm the method is enabled in a WooCommerce shipping zone. The settings page lists configured methods and the catch-all zone. Free Shipping and standard Local Pickup are omitted because they are already preserved automatically.

A saved Pro choice says it is no longer found

The shipping method or instance was probably removed or recreated. Remove the old saved choice, select the current named choice, and save again.

Checkout shows no shipping methods

Deactivate the plugin first. This plugin returns the complete original list when rate data is uncertain, but a shipping-zone, address, cache, or carrier-extension issue may stop WooCommerce from calculating rates before this plugin runs.

Roll back safely

  1. Back up the WordPress database and keep the exact Free and Pro ZIPs you installed.
  2. Turn off the Free switch and retest checkout.
  3. If needed, deactivate Pro. Free behavior remains available.
  4. Deactivate Free. WooCommerce receives its original shipping rates on the next calculation.
  5. To return to an earlier version, remove the current plugin files, install the previous deterministic ZIP, activate it, and repeat the verification steps.

The plugin does not migrate or rewrite WooCommerce shipping data, so disabling it is the immediate behavior rollback.

Uninstall and data removal

Normal uninstall preserves StoreFixKit settings and the license so an accidental deletion can be recovered.

Define STOREFIXKIT_DELETE_DATA as true before deletion only when you deliberately want to remove this product's owned settings. Free removes sfk_hpf_settings; Pro removes sfk_hpf_pro_settings and its own license option. WooCommerce shipping zones, methods, carts, orders, customers, products, and rates are never deleted.

Privacy, security, and resource use

  • Settings changes require the manage_woocommerce capability and WordPress nonce checks.
  • Free stores one enabled state. Pro stores at most ten exact rate IDs.
  • No personal data or checkout contents are sent to StoreFixKit.
  • Storefront and checkout requests make no StoreFixKit or carrier API call.
  • No custom table, cron event, queue, telemetry, frontend script, or stylesheet is added.
  • The plugin changes only the returned view of already calculated rates.

Frequently asked questions

Does this create Free Shipping?

No. Configure Free Shipping in WooCommerce first. The plugin acts only after WooCommerce makes that rate available.

Can I hide paid shipping for one product, role, coupon, country, or subtotal?

No. This release performs one package-local rule and does not include a condition builder.

Can Pro keep another pickup or courier choice?

Yes, if WooCommerce exposes it as a configured shipping rate with a stable exact rate ID. Select it under Pro shipping choices to keep.

Does it choose Free Shipping automatically?

No. It removes other paid choices after Free Shipping exists. WooCommerce still owns rate selection and checkout behavior.

Support and feedback

Use StoreFixKit Support. Include the test address country or region, matched shipping zone name, which methods should appear, which methods actually appear, whether checkout is classic or block-based, Free and Pro versions, WordPress and WooCommerce versions, and redacted desktop/mobile screenshots.

Do not send administrator passwords, API keys, payment details, customer data, full addresses, order exports, or a complete license key. For product feedback, describe the shortest repeatable cart and shipping-zone setup and say whether native choices return after deactivation.