How to Show Estimated Delivery Dates in WooCommerce

How to Show Estimated Delivery Dates in WooCommerce

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?

FeatureStatic CodeAdmin-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!

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on pinterest
Pinterest
Dawid Jaloszynski
Dawid Jaloszynski is the Founder & Web Designer at Lizardo Agency. He is also an expert in search engine optimization (SEO). Dawid is passionate about helping businesses succeed online, and he loves seeing the results of his work when a client's website ranks high in search engines.