Last Updated on October 24, 2025 by Sunny Staff
Customers expect clear shipping options at checkout—but in WooCommerce, getting them to display correctly isn’t always a plug-and-play process. Whether you’re offering flat rates, real-time carrier rates, or local pickup, configuring it all can be surprisingly tricky.
In this post, we’ll walk you through how WooCommerce handles shipping, common reasons shipping options might not appear, and how to fix them.
But first, why bother? Turns out, displaying your shipping options clearly does more than just fulfill a technical requirement—it has real business benefits:
- Reduced cart abandonment
Offering multiple shipping methods gives customers flexibility. Budget-conscious buyers can opt for economical shipping, while others may choose to pay more for expedited shipping. That sense of choice helps reduce drop-offs at checkout. - Improved brand reputation
Shipping transparency builds trust. Customers are more likely to return—and recommend your store—when they feel they’re being treated fairly and conveniently. - More flexibility and control
WooCommerce lets you define shipping zones and methods based on location, product type, size, or weight. That means more precision for you—and a smoother experience for your customers.
Also read: From Downtime to Prime Time: How WooCommerce Maintenance Services Keep You Online
Getting Started With Shipping in WooCommerce
Shipping is enabled by default in WooCommerce. However, it can be disabled or you can change shipping locations by navigating to WooCommerce > Settings > General and then by clicking the dropdown next to Shipping location(s). Here you can choose to:
- Ship to all countries you sell to
- Ship to all countries
- Ship to specific countries only
- Disable shipping & shipping calculations

If you’re unsure which to choose, leave it on the first option – ‘Ship to all countries you sell to’.
Next, we can head over to shipping settings. You can access shipping settings by navigating to WooCommerce > Settings > Shipping. Here’s a breakdown of what you’ll see:
At the top of the shipping settings page, you’ll see four tabs, respectively called:
Shipping zones | Shipping settings | Classes | Local pickup

1. Shipping Zones

This is where you define where you ship and how much it costs. A shipping zone is a geographic region (like a country, state, or postal code) to which you assign specific shipping methods.
In shipping zones, you can:
- Add multiple zones (e.g., United States, Western Europe, California only).
- Assign shipping methods to each zone:
- Flat rate
- Free shipping
- Local pickup
- Real-time carrier rates (if using a plugin like PluginHive, USPS, FedEx, etc.)
- Rearrange zones by priority — WooCommerce applies the first matching zone.
Example use case:
You want to offer:
-
- Free shipping to the US
- $10 flat rate to Canada
- No shipping elsewhere
2. Shipping Settings

This is a small but important page where you toggle some global shipping features.
In shipping settings, you can:
- Enable debug mode (if using carrier-calculated shipping plugins) — useful for troubleshooting rate display issues.
- Some plugins (like PluginHive or table rate shipping tools) may add their own settings here.
Note: This tab may seem bare in default WooCommerce unless extended by a shipping plugin.
3. Shipping Classes

Shipping classes allow you to group similar products together to apply specific shipping rates.
In shipping classes, you can:
- Create shipping classes like:
- Heavy items
- Fragile items
- Lightweight
- Assign these classes to products in the product editor.
- Use the classes when configuring Flat Rate shipping to adjust prices per class.
Example use case:
Charge $20 shipping for “Heavy items” and $5 for “Lightweight” items within the same zone.
4. Local Pickup

This is a built-in shipping method, but WooCommerce 8.x+ gives it its own tab for better control.
In local pickup, you can:
- Configure Local Pickup options globally.
- Set tax status for pickups (e.g., whether sales tax applies).
- Rename the method if you want to use custom labels, such as “Pick up at our warehouse.”
- Determine whether it’s offered for all zones or specific ones.
Example use case:
A store wants to offer free local pickup for customers near their physical location, while charging shipping fees elsewhere.
Also read: WooCommerce for Beginners: Get Serious About Sales
How to Set Up Shipping Options in WooCommerce
Now that we’ve covered the essentials of shipping in WooCommerce, let’s see how we can set up shipping so that shipping options are displayed at checkout.
So far, we have two shipping zones: one for the United States and the other for Canada. The United States has a shipping method of Free shipping, which means, well, shipping is free anywhere in the US.
For delivery locations in Canada, we added a Flat rate of $25 (USD). Remember that this is where you can add prices based on Shipping classes (for example, if you have a class for ‘Heavy’ products, this is where you’ll specify the shipping rate for that class).

Before we test our shipping zones, we need to assign a product to our ‘Heavy’ shipping class. This is done in the Product Data block on the product page, on the shipping tab:

Now we can test each of these shipping options by navigating to the front page and adding a product to our cart page.
Shipping to locations in the US
Since we’ve defined free shipping to locations in the United States, there is no charge on most items. Therefore, the socks we ordered will be delivered to the address in North Carolina that we provided.

Shipping to locations in Canada
Shipping to Canada requires more logistics and cost, and therefore justifies a shipping rate. The image below indicates the shipping rate applied to our socks, which will be shipped to downtown Calgary, Alberta.

Putting the ‘Heavy’ shipping class to work
Earlier, when setting up the Canada shipping zone, we added a price for items with the ‘Heavy’ shipping class. We’ve also created a product that will satisfy the requirement for ‘Heavy’:

The image shows that the $60 shipping charge (flat rate + “Heavy shipping class”) for an item in the ‘Heavy’ shipping class has been applied.
But, what happens if we change the location to the US? Shipping is still free, which becomes tricky when you have to ship an anvil from the East Coast to the West Coast.
So while the lighter products like socks and hats can remain on our free shipping tier, it’d be prudent to apply the heavy shipping class to ‘Heavy’ products for locations in the US.
To do that, we need to edit the United States (US) shipping zone and create a flat rate shipping method for Heavy items. When configuring the Flat Rate method, you’ll see a section where you can set costs for each shipping class you’ve defined. This is where you’ll assign the $50 rate for Heavy.

Now, when we return to our cart and refresh the page, we can see the Heavy shipping method is also present on the checkout page. But, so is the Free shipping method. What do we do?
Luckily, there’s a free plugin that can help us navigate this complexity with conditional logic. It’s called Conditional Shipping for WooCommerce, which, once installed, can be accessed from the WordPress dashboard: WooCommerce > Settings > Shipping > Conditions.

To get started, we can click the Add ruleset button, and:
- Give our ruleset a name. We’ll call ours US – Heavy to keep things simple.
- Under Conditions we select Products > include > (the name of your product) Anvil
- Under Actions we select Disable shipping methods > Free shipping (United States (US))
- Click Save changes

Now, when we refresh the checkout page, we see that free shipping has been removed when the Anvil is in the cart, and the Heavy shipping method has been applied automatically.

Also read: Turbocharge Your WP-Admin – Essential Guide to a Faster WordPress Backend
How customers can choose their own shipping method
With the exception of the conditional logic plugin we used to apply flat rate shipping to a heavy product in the US, so far we’ve only used WooCommerce’s default shipping options to set up shipping.
But what if you want to offer multiple shipping options and allow your customers to make the choice? For example, when you have three different shipping speeds that customers can choose from, depending on the urgency of the product.
Step 1: Navigate to WooCommerce > Settings > Shipping zones. For the purpose of this example, we’ll create Mexico as a shipping zone. If you already have your desired shipping zone set up, click on Edit next to the shipping zone.

Step 2: Add a shipping method for each of the delivery options. In this case, we’ve added a method for each of the different shipping speeds: Normal, Fast, and Overnight.


Shipping Plugins – When to Use One
So far, we’ve covered shipping options using WooCommerce’s native functionality. And so far, everything’s been pretty straightforward. But shipping can be a very complex issue, especially if you want to add features that make the shopping experience more convenient for your customers.
Shipping plugins extend WooCommerce’s default capabilities, making it easier to automate calculations, integrate with carriers, set complex conditions, and provide better experiences for both store owners and customers.
When to Use a Shipping Plugin
You should consider using a shipping plugin if:
- You use real-time shipping rates
If you want to display live shipping rates from carriers like UPS, FedEx, DHL, or USPS, a plugin is essential. WooCommerce doesn’t support this out of the box. - You have conditional shipping logic
For example, hiding free shipping if a “heavy” item is in the cart, or only offering local pickup on certain products. This requires rules and conditions that only plugins can provide. - You need to print shipping labels or track packages
Integrations with carriers allow store owners to generate and print labels, and automatically send tracking numbers to customers. - You ship internationally
A plugin can handle complex zone-based rules, tax calculations, and customs forms – saving hours of manual setup. - You need shipping classes or product-level logic
If different product types require different shipping options (e.g. frozen goods, bulky items), a plugin helps define those rules cleanly.
Popular Shipping Plugins for WooCommerce
Here are a few widely used (and often free) plugins that help manage complex shipping needs:
Official plugin that integrates with USPS and DHL for label printing and basic real-time rates. Free to use within the WooCommerce dashboard.
Lets you define custom shipping rates based on weight, price, quantity, or location. Ideal for stores with layered rate structures.
A free plugin that lets you hide or show shipping methods based on product, category, class, or cart contents. Ideal for use cases like hiding free shipping when a heavy item is in the cart.
Automates live shipping rates, label printing, and tracking for major carriers. Especially useful for high-volume or multi-carrier stores.
When you use the right shipping plugin, you can streamline fulfillment, reduce costs, and give your customers a smoother checkout experience – all while protecting your margins.
In a Nutshell
Shipping is one of the most important – and potentially frustrating – aspects of running a successful WooCommerce store. Whether you’re trying to display the right rates, manage backorders, or keep customers informed, the right setup makes all the difference. With the help of the right plugin, clear configuration, and a few best practices, you can offer a seamless checkout experience that builds trust and drives conversions.
Sign up today and we’ll help you take the complexity out of WooCommerce shipping – so you can focus on growing your store, not troubleshooting it.
Woocommerce can be easy when you choose the right partner>>
WooCommerce Shipping FAQ
1. Why aren’t shipping options showing at checkout?
This usually happens when:
- Shipping is disabled under WooCommerce > Settings > General.
- No shipping zone matches the customer’s address.
- The selected shipping methods don’t apply to the products in the cart.
Fix: Double-check that your shipping zones are correctly configured and that you’ve added shipping methods to them.
2. How do I offer free shipping over a certain amount?
Go to WooCommerce > Settings > Shipping > Shipping Zones, select your zone, and add the Free Shipping method. Then set the “Free shipping requires…” condition to a minimum order amount and enter your threshold.
3. Can I hide free shipping if a heavy product is in the cart?
Yes. This requires conditional logic. You can:
- Use a plugin like Conditional Shipping for WooCommerce, or
- Add custom code to your theme’s functions.php file to hide specific methods based on shipping classes.
4. Why are all my shipping methods displaying together?
By default, WooCommerce shows all applicable methods. If multiple conditions are met (e.g., Free + Flat Rate), both show.
Fix: Use shipping classes and a plugin like Table Rate Shipping or Flexible Shipping to prioritize or limit display.
5. What’s the difference between shipping zones, methods, and classes?
- Zones define regions (e.g., United States, Europe).
- Methods (e.g., flat rate, free shipping) are assigned to each zone.
- Classes group products by type/weight for custom pricing (e.g., “heavy items”).
6. How do I offer different shipping for different products?
Use Shipping Classes. Create classes like “Books”, “Furniture”, or “Heavy Items”, assign them to products, then configure pricing for each class under your Flat Rate method.
7. Why is WooCommerce saying “There are no shipping options available”?
This error appears when:
- No shipping method is enabled for the zone matching the address.
- The product lacks a shipping class and doesn’t match any method.
- The customer’s country/region isn’t covered by any shipping zone.
Fix: Add a fallback zone for “Rest of the World” or ensure all countries you ship to are included in a zone.
8. Can I use live rates from carriers like USPS, UPS, or FedEx?
Yes – WooCommerce doesn’t support this by default, but you can add it with plugins like:
- WooCommerce Shipping (for USPS/DHL)
- PluginHive Shipping Services
- Flexible Shipping PRO
9. Do I need to charge tax on shipping?
In most cases, yes. You can configure this under WooCommerce → Settings → Tax → Tax Options by enabling tax on shipping and defining your tax rates accordingly.
10. Can I offer Local Pickup only for nearby customers?
Yes. Use shipping zones to restrict Local Pickup to specific regions. You can also use geolocation plugins or shipping condition plugins to further control availability based on postcode or distance.



