Shipping time is one of the most important pieces of information your customer needs. If they can’t see when to expect their order, they might hesitate — or even abandon the cart.
In this guide, we’ll cover two ways to display estimated delivery dates in your WooCommerce store:
- A quick & static method — perfect for simple setups.
- A dynamic, admin-editable method — ideal for professional stores.
Static vs Dynamic: Which Should You Use?
Feature | Static Code | Admin-Editable |
---|---|---|
Code Required | ✅ Yes | ✅ Yes |
Editable in WooCommerce Panel | ❌ No | ✅ Yes |
Best For Beginners | ✅ Yes | ⚠️ Intermediate |
Good for Client Stores | ❌ Not ideal | ✅ Definitely |
Works with Many Shipping Methods | ⚠️ Limited | ✅ Yes |
Can Be Customized Without Code | ❌ No | ✅ Yes |
Option 1: Simple Static Delivery Text (for Devs & MVPs)
If you only have a few shipping options and want something quick, this method is perfect. You define the delivery time directly in the code.
add_filter( 'woocommerce_cart_shipping_method_full_label', 'custom_shipping_method_label_with_eta', 10, 2 ); function custom_shipping_method_label_with_eta( $label, $method ) { $shipping_estimates = array( 'flat_rate:1' => 'Estimated delivery: 2–4 business days', 'flat_rate:2' => 'Estimated delivery: 5–7 business days', 'free_shipping:3' => 'Estimated delivery: 5–10 business days', ); if ( isset( $shipping_estimates[ $method->id ] ) ) { $label .= '<br><small>' . esc_html( $shipping_estimates[ $method->id ] ) . '</small>'; } return $label; }
What It Does:
- Adds a short delivery estimate next to each shipping method label.
- Method IDs (
flat_rate:1
, etc.) must match your store’s actual methods. - No UI in the admin — everything is handled via code.
Option 2: Dynamic Estimated Dates Editable in WooCommerce
This method is more advanced but much more flexible. It adds a custom field in the shipping method settings, so you or your client can easily update delivery times without touching code.
// Add a custom field to each shipping method for delivery days add_action('woocommerce_shipping_instance_form_fields_flat_rate', 'add_estimated_days_field', 10, 2); function add_estimated_days_field($fields, $instance_id) { $fields['estimated_days'] = array( 'title' => 'Days to arrive', 'type' => 'number', 'description' => 'Enter the estimated number of days for delivery.', 'default' => '', 'desc_tip' => true, ); return $fields; } // Save the custom field value add_filter('woocommerce_shipping_instance_form_field_flat_rate', 'save_estimated_days_field', 10, 3); function save_estimated_days_field($field, $key, $value) { if ($key === 'estimated_days') { $field['value'] = $value; } return $field; } // Display the estimated delivery date on checkout add_filter('woocommerce_cart_shipping_method_full_label', 'add_estimated_delivery_label', 10, 2); function add_estimated_delivery_label($label, $method) { $option_key = 'woocommerce_' . $method->method_id . '_' . $method->instance_id . '_settings'; $settings = get_option($option_key); if (!empty($settings['estimated_days'])) { $days = (int) $settings['estimated_days']; $delivery_date = date_i18n('F j', strtotime("+$days days")); $label .= '<br><small>📦 Estimated delivery: ' . esc_html($delivery_date) . '</small>'; } return $label; }
How It Works:
- Adds an editable “Days to arrive” field in each shipping method.
- Admin sets the number of days (e.g. 3).
- At checkout, the label dynamically calculates and displays the expected delivery date based on today’s date + the entered value.
You can style this text with emojis, bold text, or extra notes to improve clarity.
Final Thoughts
Estimated delivery dates are simple to implement and make a huge impact on your store’s UX. Choose the method that best fits your needs:
- 🛠 Use static if you want quick results and are comfortable editing code.
- 📦 Use dynamic if you’re building a store for others or want the admin to manage dates themselves.
Need Help Implementing It?
If you’d like me to customize the code for your store setup, just send me an email — happy to help!