Skip to content

WooCommerce Shipping Debug Display

Project type
WordPress Plugin
Version
1.0.4
Requires WordPress
6.4
Tested WordPress up to
6.8
Requires WooCommerce
7.0
Tested WooCommerce up to
10.0
Required plugins
WooCommerce
Requires PHP
7.4
Licence
GPLv2 or later
Released
June 11, 2026

The problem

WooCommerce shipping can be a pain to troubleshoot.

A customer sees a shipping price on the cart, but there can be a lot going on behind that number. WooCommerce builds a shipping package, pulls in the product weights and dimensions, checks the destination, passes everything over to the shipping method, gets rates back, and then decides which rate to use.

If the number is wrong, WooCommerce doesn’t give you a particularly friendly way to see what happened.

I originally built this plugin while trying to track down shipping rates that simply didn’t make sense. I wanted to know what products WooCommerce was sending into the shipping calculation, what dimensions and weights it was using, which rates came back, and which one WooCommerce actually selected.

That’s what BRS Shipping Debug Display does.

It adds a shipping debug panel directly to the WooCommerce cart page, but only for logged-in users who have permission to manage WooCommerce. Customers never see it.

What this plugin does

The plugin adds a readable shipping debug panel below the WooCommerce cart totals.

It shows you the information WooCommerce is actually working with instead of making you dig through logs or dump PHP arrays onto the page.

You can see things like:

  • The shipping packages WooCommerce created
  • The destination being used for the shipping calculation
  • The products in each package
  • Product IDs, variation IDs and SKUs
  • Quantity, weight and dimensions
  • Shipping classes
  • Returned shipping rates
  • The currently selected shipping method
  • Other rates WooCommerce had available
  • Rate costs, taxes and metadata
  • Possible box or packing information when the shipping plugin exposes it

The plugin also groups rates by carrier when it can identify them, including UPS, FedEx, USPS, and DHL.

There is also an API debugging section that can sometimes show the request being sent to the carrier and the response that came back.

I say sometimes because that depends on how the shipping plugin communicates with the carrier.

If the shipping plugin uses the standard WordPress HTTP API, I can hook into that request and display a sanitized version of it. If the plugin uses direct cURL, SOAP, its own SDK or some other request system, there may not be anything for this plugin to capture.

That’s also why I wouldn’t start with the API section when debugging.

The most useful section is usually Rates Returned to WooCommerce. That tells you what WooCommerce actually had to work with when it calculated shipping.

This is especially handy with dimensional weight. A product might weigh 3 lbs, but if it ships in a large box, FedEx or UPS may rate it as a much heavier package. Being able to see the product dimensions, returned shipping rate and any available carrier information in one place makes that a lot easier to diagnose.

Installing it

You can download the plugin from GitHub or clone the repository directly.

Upload it to:

/wp-content/plugins/brs-shipping-debug-display/

Then activate BRS Shipping Debug Display from the WordPress Plugins screen.

Once it’s active:

  1. Log into WordPress as an administrator or WooCommerce manager.
  2. Add the product you’re troubleshooting to the cart.
  3. Enter the shipping destination you want to test.
  4. View the WooCommerce cart.
  5. Scroll below the cart totals.

The Shipping Debug Display panel should be there.

If you’re trying to see a fresh carrier API request and nothing is showing, try changing the shipping ZIP code, quantity or cart contents. WooCommerce may already have the shipping rates stored in the session and may not ask the carrier for a new rate on every page load.

I built this as a debugging tool, so I generally turn it on when I need it and turn it back off once I’m finished troubleshooting.

The API data is sanitized before being displayed, but it’s still debug information. I wouldn’t copy and paste the output onto a public forum without looking through it first.

Hooks and filters

The plugin uses standard WooCommerce hooks to watch what is happening during the shipping calculation.

The main ones are:

  • woocommerce_cart_shipping_packages
  • woocommerce_package_rates
  • http_api_debug
  • woocommerce_after_cart_totals

woocommerce_cart_shipping_packages lets the plugin see the package WooCommerce is building.

woocommerce_package_rates lets it see the shipping rates WooCommerce received.

http_api_debug is a WordPress hook that lets the plugin inspect carrier requests when the shipping plugin uses the WordPress HTTP API.

The actual debug panel is displayed using woocommerce_after_cart_totals.

The plugin doesn’t change your shipping rates or choose a shipping method. It’s there to show you what WooCommerce is already doing.

Changing who can see it

By default, anyone who can manage_woocommerce can see the debug panel.

There is a filter if you want to change that:

brs_sdd_debug_capability

For example, if you only wanted administrators to see it:

add_filter( 'brs_sdd_debug_capability', function( $capability ) {
return 'manage_options';
} );

That permission is also used when capturing the carrier HTTP debugging information.

Requirements and support

The current WordPress, PHP, and WooCommerce requirements are listed at the top of this page and are pulled from the plugin itself, so those are the numbers to check before installing it.

The plugin also declares compatibility with WooCommerce HPOS.

One thing to keep in mind is that carrier API debugging depends heavily on the shipping plugin you’re using.

If WooCommerce shows a FedEx, UPS, USPS, or DHL rate but the API section is empty, that doesn’t automatically mean anything is broken. The rate may already be stored in the WooCommerce session, or the shipping plugin may communicate with the carrier in a way that WordPress doesn’t expose through its HTTP hooks.

The WooCommerce package and returned-rate information is the part I consider the most dependable.

This is a debugging utility I built for troubleshooting WooCommerce shipping problems. The source code and current release are available on GitHub.

If you run into a bug or find something that isn’t working as expected, please open an issue in the GitHub issue tracker. That also gives me one place to keep track of problems, compatibility issues, and possible improvements.