Hide WooCommerce Shipping Methods on Specific Items
How to hide invalid WooCommerce shipping options on digital, oversized or local-only items, and resolve mixed-cart shipping rule conflicts at checkout.

Default WooCommerce shipping zones are powerful but blunt: they apply the same set of shipping methods to every product in a zone. The minute your catalog mixes digital downloads with physical goods — or small accessories with oversized furniture — checkout starts surfacing options that make no sense.
Customers see "Local pickup" on a digital ebook, or "Letter post" on a 40 kg dining table. That confusion costs sales, and it shows up in your abandonment numbers long before anyone files a support ticket about it.
This guide covers exactly how to set up WooCommerce shipping options per product, with real-world examples, a step-by-step walkthrough, and the troubleshooting steps for the most common conflicts.
What "shipping per product" solves Per-product shipping rules let every SKU declare which shipping methods it is eligible for. When the customer reaches checkout, only the methods compatible with every item in the cart are shown.
Free downloads can skip shipping entirely. Bulky items can force a freight carrier. Refrigerated goods can be locked to a same-day courier. The cart, not your global settings, drives what is offered.
Native WooCommerce vs per-product shipping The default WooCommerce setup gives you three levers: shipping zones (by country/region), shipping classes (by product group), and method-level settings (flat rate, free shipping, local pickup). Together they cover most stores — until the catalog mixes product types.
| Capability | Native WooCommerce | Per-product plugin |
|---|---|---|
| Different rates per country | Yes (zones) | Yes (zones) |
| Different rates per product group | Yes (classes) | Yes (classes) |
| Hide a method on one specific SKU | No | Yes |
| Force one method on oversized goods | Workaround only | Yes |
| Auto-resolve mixed-cart conflicts | No | Yes |
| Tell the customer which item blocks checkout | No | Yes |
If your store only sells one product type, native settings are enough. If your cart mixes formats, weights, suppliers or fulfillment partners, native settings will leak invalid options.
Real-world use cases Per-product shipping rules are not a niche feature. The same pattern shows up across very different store types — wherever a single global rule cannot cover a mixed catalog.
- Mixed catalog stores: ebook + paperback + signed hardback editions of the same book, each with different shipping needs.
- Furniture and oversized goods: limit to freight or white-glove delivery, hide standard parcel options on items over 30 kg.
- Local-only products: fresh food, plants, or perishable items restricted to local courier or store pickup within a postcode radius.
- Digital products bundled with physical merch: hide all shipping methods when only the digital item is in the cart, re-enable them when a physical item is added.
- Dropshipping from multiple suppliers: each supplier's products only show their own fulfillment method, so customers cannot accidentally combine items that ship from different warehouses.
- Hazardous or restricted items: paint, batteries, or aerosols that cannot ship by air — air-mail methods are hidden automatically when one is in the cart.
- Subscription boxes: monthly boxes locked to a specific carrier with delivery-date guarantees, while one-off products use standard parcel.
- B2B vs B2C SKUs in the same catalog: pallet delivery shown only when a B2B-only SKU is in the cart.
Step-by-step: set up shipping options per product The setup takes about ten minutes per product type. Below is the workflow we recommend.
1. Install the plugin Install and activate [WooCommerce Shipping Gateway Per Product](/plugins/woocommerce-shipping-gateway-per-product). It hooks into the existing WooCommerce shipping system — no replacement, no migration of your existing zones.
2. Audit your current shipping methods Go to WooCommerce → Settings → Shipping. List every method that should ever be available in your store: standard parcel, express, freight, local pickup, digital (free), etc. Make sure each one exists in the relevant zone before you start assigning them.
3. Open a product and assign methods Edit any product. In the new "Shipping options" tab you see every shipping method available across your zones. Tick the ones this product is eligible for, untick the rest. Save.
4. Repeat per product type, not per product Use bulk-edit or copy from a template product for catalogs over fifty SKUs. Most stores end up with three to five "shipping templates" (digital, small parcel, oversized, refrigerated, freight) and apply them in bulk.
5. Test a mixed cart Add two products with incompatible rules to the cart and go to checkout. You should see only the intersection — methods both products allow. If the intersection is empty, the customer sees a clear conflict message naming the blocking item.
Handling the mixed cart Like with payment rules, the mixed cart is where most stores fail. The plugin computes the intersection of allowed shipping methods across all cart items.
If product A allows Standard or Express, and product B only allows Express, only Express is shown. If the intersection is empty the customer is told exactly which item is causing the conflict, so they can remove or split the order instead of abandoning it.
Troubleshooting common conflicts The same three issues account for most support tickets after a per-product shipping rollout.
- "No shipping methods available" — almost always means two products in the cart have non-overlapping rules. Check the conflict message in the cart; the named item is the one to adjust.
- A method shows that should be hidden — confirm the method is actually unticked in the product's Shipping options tab, not just disabled in a different zone.
- Local pickup appearing on digital-only carts — make sure your digital product has *no* shipping methods ticked at all. An empty selection means "free / no shipping required"; a wildcard would re-enable everything.
- Free shipping breaks for mixed carts — free shipping thresholds apply per cart total. If you want free shipping only on physical products over a threshold, combine the per-product rule with a minimum-amount condition on the free shipping method itself.
SEO and conversion impact Reducing checkout confusion is one of the highest-leverage conversion wins a WooCommerce store can make.
Stores that move from one global shipping rule to per-product rules typically report a 5–15% lift in checkout completion, because customers never see an impossible option and never have to email support to ask "can you actually ship this?". Fewer support tickets also means faster fulfillment and better reviews — both of which compound over time.
Pair it with payment rules If you already control payment methods per product, layering shipping rules on top is a no-brainer.
The two plugins are designed to work together: customers only ever see payment and shipping combinations that are actually possible for their cart. See our guide on WooCommerce payment gateways per product for the matching setup.


