Add Description Under Shipping Methods in WooCommerce Blocks Checkout
If you want to show helper text or delivery timeframes under your shipping options in WooCommerce blocks checkout, there’s now a native way to do it. WooCommerce 9.7 added two new properties to shipping rates: description and delivery_time. Both display automatically in the checkout blocks UI.
Before 9.7, you’d have to use JavaScript workarounds or CSS tricks to add text under shipping methods. The blocks checkout doesn’t use the same template hooks as classic checkout, so traditional PHP approaches didn’t work. Now WooCommerce handles the rendering natively.
The description property shows helper text directly under the shipping method name. The delivery_time property shows estimated delivery and also appears in the cart sidebar summary. Both are optional, you can use one or both depending on what information you want to display.
/**
* Add Descriptions Under Shipping Methods in WooCommerce Blocks Checkout
*
* Adds helper text and delivery timeframes below each shipping option.
* Works with WooCommerce 9.7+ blocks checkout.
*
* Uses WooCommerce's native description and delivery_time properties.
*/
add_filter('woocommerce_package_rates', function($rates, $package) {
// Configuration - Edit these to customize your shipping descriptions
$shipping_descriptions = [
'flat_rate' => [
'description' => 'Delivered via standard courier service.',
'delivery_time' => '3-5 business days',
],
'free_shipping' => [
'description' => 'Free delivery on qualifying orders.',
'delivery_time' => '5-7 business days',
],
'local_pickup' => [
'description' => 'Collect from our store during business hours.',
'delivery_time' => 'Available same day',
],
];
foreach ($rates as $rate_id => $rate) {
// Get the method type (flat_rate, free_shipping, local_pickup, etc.)
$method_id = $rate->get_method_id();
if (isset($shipping_descriptions[$method_id])) {
$config = $shipping_descriptions[$method_id];
if (!empty($config['description'])) {
$rate->description = $config['description'];
}
if (!empty($config['delivery_time'])) {
$rate->delivery_time = $config['delivery_time'];
}
}
}
return $rates;
}, 10, 2);
The snippet uses the woocommerce_package_rates filter to modify shipping rates before they display. Each rate object now accepts description and delivery_time as direct properties. WooCommerce automatically renders these in the blocks checkout without any JavaScript.
To customize, edit the $shipping_descriptions array. The keys match WooCommerce’s shipping method IDs: flat_rate, free_shipping, local_pickup, and any custom method IDs from third-party plugins. Add entries for whatever shipping methods you have configured in your zones.
This only works with WooCommerce 9.7 or later and the blocks-based checkout. If you’re using the classic checkout shortcode, these properties won’t display. Classic checkout still requires template overrides or JavaScript for this kind of customization.
Need Help?
Learn how to add custom code to WordPress or reach out for custom development help.
About the Author
More Code Snippets
-
Reorder the Columns on the WooCommerce Orders List
Put your WooCommerce orders list columns in whatever order works…
-
Set the Default Country on WooCommerce Checkout
Pre-fill the WooCommerce checkout country (and optionally state) dropdown with…
-
Bulk Delete Expired Unused WooCommerce Coupons (Batched, Safe)
One-time bulk cleanup utility for stores with thousands of expired,…