How WooCommerce shipping works
An overview of how shipping works in WooCommerce, including shipping zones, methods, and rates.
- Difficulty
- Beginner
Shipping is one of the most important parts of running an online store. WooCommerce gives you tools to charge the right amount for shipping — or offer it for free — based on where your customers are and what they order.
Quick summary
WooCommerce shipping is organized into zones (geographic areas), methods (how you charge — flat rate, free, or local pickup), and rates (the specific prices). You set these up under WooCommerce → Settings → Shipping. Every customer sees the shipping options that match their address.
The three layers of WooCommerce shipping
Understanding these three concepts makes the whole system click:
Shipping zones
Geographic areas — like 'United States' or 'Europe.' Each zone can have its own rates.
Shipping methods
How you charge within a zone — flat rate, free shipping, or local pickup.
Shipping rates
The actual prices customers see at checkout — $5.99, $10, or $0.
How they work together
When a customer enters their address at checkout, WooCommerce matches it to a shipping zone. Each customer matches only one zone — the first one in your list that fits — and sees the shipping methods and rates set up for it.
If a customer's address doesn't match any zone you've created, WooCommerce falls back to a default zone called "Rest of the world."
Built-in shipping methods
WooCommerce comes with three shipping methods out of the box:
| Method | Description |
|---|---|
| Flat rate | A set price for the whole cart. The cost field also accepts a formula, so you can add a per-item charge or a percentage of the order, and you can add extra costs per shipping class. |
| Free shipping | No shipping charge. Can be available to everyone in the zone, or require a minimum order amount, a free-shipping coupon, or both. |
| Local pickup | Customer collects in person. Usually free, but there is an optional cost field if you want to charge for it. |
Adding carrier-calculated rates
If you want to charge exactly what USPS, UPS, FedEx, or another carrier charges, you need a shipping extension. WooCommerce sells extensions for USPS, UPS and FedEx that connect your store to that carrier's API and show live rates at checkout, calculated from the cart and the delivery address.
These are paid extensions, and each one connects to your own carrier account, so you need an active account and API credentials with that carrier. They also depend on your products having accurate weights and dimensions. Ask us if you'd like this set up.
Printing labels is a separate job. WooCommerce Shipping is a free extension for buying and printing discounted labels for supported carriers from your dashboard — but it does not show live rates at checkout, so many stores use both.
Shipping classes
Shipping classes let you group products so you can charge them differently — heavy items or fragile items, for example — even within the same zone.
You create shipping classes under WooCommerce → Settings → Shipping → Classes, then assign each product a class on its Shipping tab. A product can have only one class. Classes don't set rates on their own: you add a cost per class inside a method such as Flat rate, and choose whether multiple classes in one cart are charged per class or per order.
How customers see shipping at checkout
At checkout, customers:
- Enter their address.
- See a list of available shipping methods for their zone.
- Choose the method they prefer (if multiple are offered).
- The shipping cost is added to their order total.
The option selected by default is the first enabled method in the zone the customer matched.
Test your shipping setup
Always test checkout from a customer perspective after making changes. Add a product to a cart, go through checkout with different addresses, and confirm the right shipping options and prices appear.
Common questions
What happens if I don't set up any shipping zones?
If a customer's address falls in a zone with no shipping methods — including the default "Rest of the world" zone — they are told that no shipping is available. Always set up at least one zone with a method, even if it's just a single flat rate that covers everywhere.
Can I offer free shipping over a certain amount?
Yes. Set up a free shipping method and set its requirement to a minimum order amount. See the guide on setting up free shipping.
Can I charge differently by product weight?
Not directly with the built-in methods. The usual approaches are to group heavier products into a shipping class and give that class its own flat rate cost, or to use a carrier-calculated extension, which uses the real weights and dimensions on your products. If this sounds complicated, reach out — we can configure it for you.
Can I hide shipping costs until checkout?
Yes. Go to WooCommerce → Settings → Shipping → Shipping settings, where the Calculations options include Hide shipping costs until an address is entered. This avoids showing inaccurate estimated rates before the customer provides their location.
Related guides
- Setting up shipping zones & rates
- Setting up free shipping
- Understanding the checkout experience
- WooCommerce extensions explained
Need a hand?
Learn more
Last updated