Last updated July 18, 2025.
This guide helps store owners resolve problems with built-in shipping features in WooCommerce. Use the steps below to troubleshoot incorrect rates, missing methods, or unexpected checkout behavior.
What this guide covers
↑ Back to topThis guide focuses on issues with shipping options included in WooCommerce core:
- Flat Rate Shipping – Standard shipping rates per item, class, or order
- Free Shipping – No-cost shipping with optional conditions
- Local Pickup – Customer collection from your store
The guide also provides guidance on where to find support for other shipping plugins and more advanced configurations beyond the core functionality.
Important limitations
↑ Back to topNote: The built-in WooCommerce shipping features do not include live rates or label printing.
- WooCommerce Shipping is a free extension that can be added to allow you to print USPS, UPS, and DHL labels right from your WooCommerce dashboard and save on shipping
- Live rates require advanced extensions such as USPS, UPS, or FedEx to display real-time rates at checkout
More advanced shipping extensions exist for complex scenarios and products. See the core shipping limitations section below.
Basic troubleshooting steps
↑ Back to topShipping problems typically fall into one of these categories:
- Missing or incorrect shipping rates
- Shipping methods not appearing at checkout
- Unexpected shipping costs
- Shipping zone not matching customer addresses
- Shipping tax not applied or incorrect
Follow these steps to confirm if any known and fixed bugs are addressed already, and your settings are correct. These are the same steps our Happiness Engineers follow when investigating issues.
Step 1: Check if everything is up to date
↑ Back to topMake sure WordPress, WooCommerce, your current theme, and all extensions are using the latest versions. Updates often contain fixes for known issues.
How to check for updates:
- Navigate to Dashboard > Updates in your WordPress admin
- Check for available updates to WordPress core, themes, and plugins
- Update all components before proceeding with troubleshooting
Step 2: Verify basic shipping configuration
↑ Back to topShipping zones
- Go to WooCommerce > Settings > Shipping > Shipping zones
- Confirm the customer’s address matches one of the configured zones
- Make sure each relevant zone has at least one active shipping method
Shipping methods
- Within each zone, verify that the correct methods are enabled (for example: Flat Rate, Free Shipping, Local Pickup)
- Double-check any conditions applied to the method
- For Free Shipping, check if minimum order amounts or coupons are set correctly
Product shipping settings
- From the Product Editor, in the Product data panel, select the option to manage shipping settings
- Confirm that the product has a shipping class (if required by your setup)
- Verify the product type is not set to Virtual, as shipping would not apply to non-physical products
Step 3: Enable shipping debug mode
↑ Back to topWooCommerce includes a built-in debug mode for core shipping methods like Flat Rate, Free Shipping, and Local Pickup. When enabled, this mode logs information directly in the cart page to help reveal which shipping zone is being matched to the customer’s address.
To enable shipping debug mode:
- Go to WooCommerce > Settings > Shipping > Shipping settings
- Under debug mode, check the Enable debug mode box
- Save changes
- Reload the cart or checkout page to see debug messages under the available shipping options
Important: Remember to disable debug mode after testing, as it displays on the front-end to customers.
Step 4: Test with default WooCommerce configuration
↑ Back to topSometimes, custom cart and checkout pages built with plugins, theme builders, or custom modules can cause unexpected behavior or prevent certain features from working.
A quick test to make sure this isn’t a conflict with your configuration is to try with the default Cart and Checkout pages, using the default WordPress editor, and the Cart and Checkout shortcodes or blocks:
Available options:
- Cart shortcode:
[woocommerce_cart]
- Cart block (available in block editor)
- Checkout shortcode:
[woocommerce_checkout]
- Checkout block (available in block editor)
For more information, see WooCommerce page setup documentation.
Advanced troubleshooting steps
Below are tools and techniques to help troubleshoot more complex shipping problems. Use these methods to inspect shipping logic, identify theme or plugin conflicts, and catch hidden errors.
Use browser developer tools to review for JavaScript errors
↑ Back to topBrowser developer tools (such as Chrome DevTools or Firefox Developer Tools) help you inspect dynamic behavior on the cart and checkout pages.
How to access developer tools in common browsers:
- Chrome: Press F12 or right-click and select “Inspect”
- Firefox: Press F12 or right-click and select “Inspect Element”
- Safari: Enable Developer menu in Safari preferences, then press Option+Command+I
- Edge: Press F12 or right-click and select “Inspect”
Key tabs to check:
Console tab
Look for JavaScript errors or warnings that could be interfering with shipping method display or updates.
Network tab
Monitor AJAX requests such as ?wc-ajax=update_shipping_method
and ?wc-ajax=update_order_review
. This can help confirm whether rate recalculations and shipping method updates are occurring when cart items or addresses change and confirm if something is blocking the AJAX request.
Elements tab
Check the HTML structure to ensure shipping options are rendering and not being hidden by theme CSS or JavaScript.
Use these tools to diagnose issues such as:
- Shipping not updating after a quantity change
- Custom checkout modifications blocking or hiding shipping fields
- JavaScript errors preventing form submission or rate display
Check for fatal errors
↑ Back to topWooCommerce features a logging system accessible in WP Admin via WooCommerce > Status > Logs, which records PHP fatal errors among other information.
This log serves as a valuable initial resource, mirroring details that would typically be found in PHP error logs on the server. We recommend you consult this log first before proceeding to locate the PHP logs on the server for further troubleshooting.
Learn more about finding PHP error logs.
Check for template overrides
↑ Back to topTemplate overrides are a common cause of issues with how shipping options are displayed in WooCommerce. When a theme customizes core WooCommerce templates, outdated or faulty overrides can lead to missing methods, incorrect shipping information, or errors during checkout.
Common issues and troubleshooting actions
Issue | Troubleshooting Action |
Outdated template warning | Update template overrides to match the latest WooCommerce core version. |
Shipping methods missing | Check for Outdated or Overridden Templates: – Go to WooCommerce > Status > System Status and scroll down to Templates. – Look for warnings about outdated or overridden shipping templates (e.g., cart/cart-shipping.php ).Test with a Default Theme: – Temporarily switch to a default theme like Storefront. – If shipping options reappear or function correctly, the issue likely stems from your theme’s template overrides. Restore Default Templates: – If you identify a problematic override (such as cart-shipping.php ), restore the default WooCommerce template by removing or renaming the overridden file in your theme. |
Shipping not updating | Clear cached files: – Go to WooCommerce > Status > Tools and clear all transients. – Clear any server, CDN, or site cache to ensure changes take effect. Check for plugin conflicts: – Disable all non-essential plugins and retest shipping functionality. – If the issue resolves, reactivate plugins one by one to identify the conflict. |
Broken checkout layout | – Remove or update custom template overrides – Test with default theme like Storefront. |
Check for conflicts on a staging or test site
↑ Back to topIf you suspect a conflict on your site, follow our conflict testing guide. This guide walks you through the safest way to identify whether a plugin, theme, or custom code is causing the issue, and best practices to consider before making any changes.
If the issue persists in a conflict test, open a support request so we can identify any issue to be fixed.
Use Blueprints to assist with troubleshooting
↑ Back to topNew in WooCommerce version 9.9: Blueprints is a tool for importing and exporting store settings. It helps developers, agencies, and merchants save time by reusing and sharing store configurations—making setup faster and troubleshooting easier.
Where to find Blueprints: You can find Blueprints under WooCommerce > Settings > Advanced > Blueprint. It currently supports core WooCommerce settings and can be used through the admin interface or WP-CLI.
How to use Blueprints for troubleshooting:
With Blueprints, you can export your store settings – including Shipping settings – for troubleshooting.
If you’re still experiencing shipping issues after following the steps above:
- Export your settings using Blueprints
- Set up a staging site using a default theme like Storefront or Twenty Twenty-Five with WooCommerce active (and Blueprints enabled)
- Import the settings into the staging site using Blueprints
If the issue does not occur on the staging site, it may indicate a conflict on your live site rather than a problem with your WooCommerce settings
This process helps recreate your store’s environment for more accurate testing and troubleshooting.
Common issues and solutions
↑ Back to topImportant: For any of the issues below, if the specified instructions do not help, then please make sure to go through the Basic Troubleshooting Steps and Advanced Troubleshooting Steps first.
No shipping options are available for this address
↑ Back to topThis is a common issue typically related to a misconfiguration in shipping zone settings, but theme or plugin conflicts can also cause this error (for example: a third-party plugin restricting shipping to some countries or regions).
Error message customers see: Error: "No shipping options are available for this address. Please verify the address is correct or try a different address."
To troubleshoot this issue:
- Check shipping zones: Ensure the customer’s shipping address matches a shipping zone. You can check your set shipping zones at WooCommerce > Settings > Shipping > Shipping zones
- Verify shipping methods: Once you have located your shipping zones and confirmed the customer’s address matches one of your zones, confirm that the matched shipping zone has at least one shipping method enabled
- Review zip code ranges: Check for overlapping or incomplete zip code ranges (especially with wildcards or spacing) on your shipping zones settings page
- Check product settings: In the product edit page, confirm the product is not marked as Virtual, and that weight, dimensions, and shipping class are added as these must match your shipping method condition (depends on shipping method used on your site)
- Enable debug mode: Enable Shipping debug mode to surface helpful error messages
Taxes are being charged on shipping
↑ Back to topIf you see taxes charged on shipping, but should not be, follow these steps to disable taxes on shipping:
- Go to WooCommerce > Settings > Shipping > Shipping zones > Edit the shipping method
- Confirm the method’s Tax status is set to None (if you don’t need taxes being collected for shipping rates)
Taxes not being charged on shipping
If taxes are not applying to shipping costs at checkout, it’s often due to a misconfiguration in your tax settings. Review this troubleshooting guide on shipping tax settings.
Flat rate shipping amount is incorrect or differs from the configured rate
↑ Back to topUnexpected flat rate shipping behavior is often caused by one or more configuration issues:
Check rate calculation settings:
- Verify if the rate should apply per item, per class, or per order
- Use
[qty]
to multiply cost per item - Use
[fee]
for percentage-based fees - See examples on how to use the formulas for advanced flat rate shipping costs
Review shipping class configuration:
- Make sure the Shipping class cost is defined in the shipping method settings
- Confirm the product is assigned to the correct shipping class
- If using class costs plus base cost, ensure calculation type is set appropriately
- If behavior is inconsistent, try testing with just one product in the cart to narrow down the cause
Free shipping not hiding other methods or not displaying correctly
↑ Back to topBy default, WooCommerce will show all shipping methods that match the customer and the cart contents. This means Free Shipping will also show along with Flat Rate and other Shipping Methods.
Since WooCommerce 9.9: There’s a built-in setting to hide all other shipping methods when Free Shipping is available:
- Check your WooCommerce version: You can verify your version under WooCommerce > Status
- If you’re using WooCommerce 9.9 or higher: Go to WooCommerce > Settings > Shipping > Shipping options and enable Hide shipping rates when free shipping is available
- If you’re on an older version of WooCommerce: Free Shipping will not automatically hide other methods unless:
- A custom code snippet is added correctly and is active on your site
- Or a third-party plugin that provides this functionality is installed and active
By default, WooCommerce will show all shipping methods that match the customer and the cart contents. This means Free Shipping will also show along with Flat Rate and other Shipping Methods.
Free Shipping option is missing or displaying under incorrect conditions
↑ Back to topMake sure to review the following if Free shipping is missing at checkout or isn’t showing up when the cart meets configured conditions:
- Verify Shipping zones: Ensure the customer’s shipping address matches a configured zone and confirm that the relevant shipping zone includes the correct regions
- Confirm Free shipping method configuration: Confirm Free shipping method is added and check the intended “Free Shipping Requires” dropdown option is selected
- Check product shipping classes: Ensure products aren’t assigned to a class that excludes free shipping or applies a different shipping cost
Wrong shipping rate for customer’s location
↑ Back to topReview the following settings if the shipping rate shown at checkout doesn’t match the rate you configured for the customer’s location:
- Verify customer address: Verify that the customer’s full shipping address is entered on the checkout page, including country/state/city/postcode
- Check store address: Ensure that the store address is entered at WooCommerce > Settings > General
- Use Shipping Debug Mode: You can enable this option in WooCommerce > Settings > Shipping > Shipping settings. Once this option is enabled, please double check the checkout page (using the checkout shortcode) to confirm which shipping zone is being matched
- Review zone configuration: Check for overlapping zip code ranges or zone ordering issues by going to WooCommerce > Settings > Shipping > Shipping zone
- Verify location codes: Confirm that country and state abbreviations are using 2-letter ISO codes in zones
- Test plugin conflicts: If a plugin adjusts shipping dynamically (for example: Conditional Shipping & Payments), test logic rules by deactivating the plugin and then checking if the behavior persists
Shipping costs aren’t updating in cart or checkout
If shipping rates don’t reflect changes to products, addresses, or quantities, check the following:
Check shipping zone configuration
Go to WooCommerce > Settings > Shipping > Shipping zones and confirm that the customer’s address matches a defined zone with at least one active shipping method.
Clear browser and site cache
Caching plugins or server-side caching can block live rate updates from appearing correctly. To fix this:
- Clear your browser cache
- Clear your site cache
- If you’re using a caching plugin or your hosting provider offers caching, make sure the following pages are excluded from caching:
- Cart
- Checkout
- My Account
After you clear your site and browser caches and update any shipping method exclusions, reload your site and complete a test checkout to confirm that the correct shipping rates appear.
Force cart refresh with AJAX
Ensure your theme supports AJAX updates, or direct users to select “Update Cart” if rates don’t automatically recalculate.
General shipping class misconfiguration
↑ Back to topThis section outlines common misconfigurations related to shipping classes and provides steps to resolve them.
Shipping class cost not applied to shipping cost
This can happen when shipping class and their rates are left empty or not configured correctly. Check the following:
- Product class assignment: In the Product data panel, select the option to manage shipping settings. Ensure each product is assigned to the correct class
- Method class rates: Confirm that class-specific rates are defined in the Flat Rate method settings, under the relevant “Shipping class costs” options
Shipping cost always shows $0
If your Flat Rate shipping method is enabled but the cost is returning $0, please review the following:
- Set base costs: Make sure to set at least a base cost or a Shipping class costs
- Configure calculation type: Set the Calculation Type for the shipping class to either “Per class” or “Per order,” depending on how you want shipping costs calculated. This setting directly affects how rates are applied at checkout
Shipping not calculated until customer enters address
↑ Back to topIf the shipping costs are not calculated until the customer enters their shipping address, you can review the following:
- Check calculation settings: In WooCommerce > Settings > Shipping > Shipping settings > Calculations, ensure the “Hide shipping costs until an address is entered” box is unchecked
- Verify geolocation setup: If you’re using Geolocate, please ensure a proper license key for MaxMind Geolocation is entered in the integration tab under WooCommerce > Settings > Integration > MaxMind Geolocation
Shipping classes not applying correctly
↑ Back to topShipping classes define cost rules for methods like Flat Rate shipping. If items with specific classes aren’t showing the correct charges at checkout, review the following settings for possible misconfigurations:
Confirm the product has the correct class assigned: In the Product data panel, select the option to manage shipping settings. Make sure the correct Shipping Class is selected and saved. For variable products, check each variation’s settings individually.
Check the shipping method settings in the correct zone: Go to WooCommerce > Settings > Shipping > Shipping zones. Select the zone your customer falls into and open the Flat Rate (or other applicable) method. Ensure you’ve entered a cost for the relevant shipping class under “Shipping Class Costs.”
Understand how Flat Rate prioritizes costs: By default, Flat Rate shipping uses the highest class cost from items in the cart. If you want to combine flat rate shipping classes to charge per class, you’ll need to enable “Per class: Charge shipping for each class individually” under Calculation type.
Additional reference information
↑ Back to topShortcode vs block checkout
↑ Back to topShipping methods may display differently between using shortcode vs the Checkout block. Test thoroughly with both types of checkout interfaces.
- Shortcode-based checkout: Use the
[woocommerce_checkout]
shortcode to create a shortcode-based checkout - Block-based checkout: Add the Checkout Block for a block-based checkout
Local pickup showing twice on checkout
↑ Back to topIf you’re seeing duplicate pickup options at checkout, it’s likely because the legacy local pickup method was added to a shipping zone before you enabled the block-based Local Pickup option in WooCommerce > Settings > Shipping > Local pickup (you will not see this option if you are not using the Checkout block). This means you have both local pickup options enabled at once.
Important: Do not use both pickup options at the same time, as it may confuse customers. A notice will appear on the Local Pickup settings page if both options are active.
Solution: If you’re using a block-based checkout, remove the legacy Local Pickup method from your shipping zones in WooCommerce > Settings > Shipping. The new Local Pickup option for block-based checkout doesn’t need to be added to a shipping zone—it’s managed separately in the Local Pickup settings page at WooCommerce > Settings > Shipping > Local Pickup.
How customers are matched to shipping zones
↑ Back to topWooCommerce matches customers to the first zone that fits their shipping address. If your customers aren’t seeing the correct shipping methods on the cart and checkout pages, the shipping zones are most likely in the wrong order.
Best practice: To show the right options at checkout, list zones from most specific to broadest—like City, then State, then Country. Learn more about sorting shipping zones.
Update shipping method name
↑ Back to topThe title set on a shipping method added to a shipping zone is what is displayed to customers during the checkout process. You can change the shipping method title easily by editing the shipping method added to the shipping zone.
Third-party cart/checkout modules
↑ Back to topTo ensure compatibility with WooCommerce core features, use the default page editor and the core WooCommerce cart and checkout shortcodes or blocks.
If you’re using a third-party theme, builder, or plugin for your cart or checkout pages and you’re troubleshooting shipping issues, switch to the default WooCommerce setup to isolate the cause. Use the default page editor along with the core WooCommerce cart and checkout shortcodes or blocks.
This helps determine whether the issue is related to your custom setup or WooCommerce itself.
Virtual products won’t trigger shipping
↑ Back to topMarking a product as “Virtual” disables all shipping options for that item, so virtual products do not trigger shipping calculations or display shipping fields at checkout.
To set a product as virtual: Edit the product, then check the Virtual checkbox.
Shipping tax defaults to the standard rate
↑ Back to topThe shipping tax is based on cart items or the Standard tax rate. If taxes are not applied to shipping costs at checkout, it’s often due to a misconfiguration in your tax settings. Review this troubleshooting guide on shipping tax settings.
Shipping is not available even when adding weight or dimension
↑ Back to topFlat rate, free and local pick up core shipping methods work with shipping classes, shipping zones, and shipping methods, and the products shipping weight or dimensions don’t impact on this. However, this is helpful to properly display product metadata to your customers, and especially helpful when working with live rates.
Rest of the world shipping zone
↑ Back to topWooCommerce applies the “Rest of the World” zone when a customer’s address doesn’t match any other defined shipping zone. You cannot move, rename, or delete this zone.
Specific zip code considerations
↑ Back to topFor specific cases: Like Northern Ireland, you can separate Northern Ireland from the UK using an extension like Shipping Locations Pro.
Setting up postal code zones: You can also set up a new shipping zone based on postal codes with wildcards (*).
How to use zip/postcodes to limit a shipping zone: A local shipping zone can include one or multiple (one per line) of the following: specific postcodes, numeric ranges (for example: 90210…99000), and postcodes with wildcards(*).
Using wildcards: A wildcard can be used to capture all postcodes that share the same beginning, so it is the recommended option for postcodes with non-numeric characters.
Examples:
902*
would capture 90210 and also 90288-1234CB23*
would capture CB23 1EXCB2*
would capture CB2 3AA and CB23 1EX
Note: Using wildcards in numeric ranges (for example: 902*…990*) is not supported.
Core shipping limitations and alternatives
↑ Back to topThe following options are built into WooCommerce and cover the most common shipping needs for many stores:
Flat Rate Shipping
Allows you to define a standard shipping rate per item, per shipping class, or per order.
Free Shipping
Allows you to add a “free shipping” option for customer orders if they either meet certain criteria (for example: a minimum order spend amount) or if you want to offer free shipping to all customers within a certain geographical area.
Local Pickup (legacy)
Allows you to offer customers the option to collect their purchases directly from your store. Customers must enter an address and must be matched to a shipping zone with this shipping method added to see this shipping option, and taxes are calculated based on the store location.
WooCommerce Blocks: Local Pickup
Allows you to offer one or more pickup locations during checkout using the WooCommerce Checkout block. Customers can select a pickup location without entering a shipping address, and taxes are calculated based on the selected pickup location.
Important limitation: WooCommerce core shipping does not offer the option to display live shipping rates at checkout and also does not offer a way to print labels for order fulfillment. Recommendations for these can be found below.
Shipping labels
↑ Back to topThe below solutions enable you to generate and print shipping labels directly from your WooCommerce dashboard or through integrated platforms:
WooCommerce Shipping
Allows you to print discounted USPS, UPS, and DHL labels directly from your WooCommerce dashboard.
ShipStation
Allows you to connect your WooCommerce store to ShipStation for streamlined order fulfillment, including batch label printing, shipping automation, and discounted rates.
Stamps.com
Allows you to generate and print USPS shipping labels directly from your WooCommerce dashboard using your Stamps.com account.
When to use ShipStation over WooCommerce Shipping: WooCommerce Shipping works well for most small to medium-sized stores with moderate shipping needs. Choose ShipStation if you manage high order volumes, wish to print labels in bulk, sell on multiple channels, or require shipping automation.
Live rates
↑ Back to topThe below extensions allow you to display real-time shipping rates from major carriers at checkout, helping you provide accurate shipping costs to your customers. This is not an exhaustive list. Please check our marketplace for more shipping extensions available on WooCommerce.com
Available live rate extensions:
- UPS® Shipping Method – offers UPS live rates at checkout
- USPS Shipping Method – offers USPS live rates at checkout
- FedEx Shipping Method – offers real-time FedEx shipping rates at checkout by integrating your WooCommerce store with the FedEx API (United States or Canada only)
- Royal Mail Shipping Method – offers Royal Mail shipping rates at checkout without requiring an API connection (UK only)
General tips for troubleshooting API shipping rates
Follow these troubleshooting steps to identify and fix common issues that prevent live shipping rates from appearing at checkout:
- Enable plugin-specific debug/logging tools – Instructions on enabling debug mode can be found here
- Ensure products have complete weight and dimension data
- Validate API credentials – Incorrect credentials are a common cause of issues when using live rate shipping extensions that rely on an API. These problems often relate to authorization or authentication errors. One example of this can be found in the UPS troubleshooting guide
- Verify shipping origin ZIP code in the plugin’s settings
For more complex shipping logic
↑ Back to topThese advanced plugins let you customize shipping rules and rates to accommodate unique business requirements or specialized shipping scenarios:
Conditional Shipping & Payments
Allows you to conditionally enable or disable the shipping methods (and payment methods) based on factors like cart contents, customer roles, or shipping destinations.
Table Rate Shipping
A highly flexible shipping solution that allows you to set up multiple table rates per shipping zone. It allows you to define multiple shipping rates based on factors like destination, weight, item count, price, or shipping class.
Per Product Shipping
Allows you to define individual shipping costs for specific products, which can be combined with other shipping methods or used as a standalone option.
Distance Rate Shipping
Allows you to calculate shipping rates based on the distance or travel time between your store and the customer’s address, using Google Maps Distance Matrix API.
Other helpful plugins
↑ Back to topThis section highlights additional plugins that can enhance your shipping workflow:
Shipment Tracking
Allows you to add shipment tracking information to WooCommerce orders, enabling customers to track their packages via emails, the order tracking page, and their account dashboard.
Getting help and support
↑ Back to topIf you’re still having trouble, please reach out to WooCommerce support with the following information:
Required information for support requests:
- Details of the issue you’re facing
- Clear reproduction steps (including the shipping address you are testing with)
- Troubleshooting steps you’ve taken already
- Any error messages from your browser console or PHP error Logs
- A copy of your WooCommerce System Status Report
- Blueprint of your WooCommerce settings or a Staging site
Screenshots to include:
- Cart and checkout pages to display the issue
- Shipping settings, including your shipping zones and shipping methods
- Affected product edit page displaying the shipping configuration
Questions and support
↑ Back to topDo you still have questions and need assistance?
This documentation is about the free, core WooCommerce plugin, for which support is provided in our community forums on WordPress.org. By searching this forum, you’ll often find that your question has been asked and answered before.
If you haven’t created a WordPress.org account to use the forums, here’s how.
- If you’re looking to extend the core functionality shown here, we recommend reviewing available extensions in the WooCommerce Marketplace.
- Need ongoing advanced support or a customization built for WooCommerce? Hire a Woo Agency Partner.
- Are you a developer building your own WooCommerce integration or extension? Check our Developer Resources.
If you weren’t able to find the information you need, please use the feedback thumbs below to let us know.
If you experience accessibility issues with this page, please contact WooCommerce Support.