Showing a delivery estimate for WooCommerce shipping methods can help your customers determine which method is best for the order. For example, while free shipping may be available, what if this takes longer and the customer needs the package by a certain date?

To avoid situations like this which may result in an abandoned cart, you can communicate the estimated shipping time up front during the cart / checkout process instead.

While you can show the estimated delivery with the WooCommerce Order Delivery plugin, it may be overkill for stores that don’t need customers to select their own delivery dates as well.

The woocommerce_cart_shipping_method_full_label filter can be used instead for WooCommerce delivery estimates. We’ll use this filter to append a delivery estimate after the shipping method’s label (i.e., “Flat Rate: $3.99”).

This will let us display the estimate in the cart page’s shipping display and on checkout page.

Creating WooCommerce Delivery Estimates

The first thing we’ll need is the shipping method’s ID so we can identify it in our code and add the appropriate estimate to its label. You can get this under WooCommerce > Settings > Shipping in the “Shipping Methods” table.

WooCommerce shipping method IDs

Shipping method IDs

We’ll do a switch on the method’s ID so we can change the estimate for each rate; you can add an estimate for any or all rates in your shop, and these rates can be different for each method.

Setting a default is optional here. If you don’t want to show the estimate by default for all rates, you can leave this out. Here’s the code you’ll need (can be modified as desired).

Feel free to change the label’s text — you could do something like “up to 7 days” instead of a date range if you prefer.

Once you’ve added the estimates for each shipping method, these will now be displayed with the method’s label on the cart page:

WooCommerce delivery estimates on the cart page

Estimates on the cart page

As well as on the checkout page:

WooCommerce delivery estimates

Estimates at checkout

Adding WooCommerce delivery estimates is a simple way to keep customers informed as to how long shipping for each method will take so they can ensure their orders arrive when they need them.


Footnote: After I’d written this, I realized it might make for an interesting project — we built this into a plugin, and you can download the WooCommerce Shipping Estimate plugin to do this.

Published by Beka Rice

Beka leads product direction for SkyVerge, focusing on new features for our plugins and Jilt. She spends a lot of time on research and interviews, but likes to write so she has an excuse to spend more time jamming out to anything from The Clash to Lady Gaga.

12 Comments

  1. I just added this. It works just as advertised. Great timing for this post because I was looking to add Delivery Times.
    One question:
    Is there a way to differentiate between the different tiers of service? i.e. UPS Ground would be 3-5 days, whereas UPS Next Day will be 1 day. With this code, it decides based on just the shipping ‘method_id’. Is there another field that can be used to differentiate?

    Similarly, USPS Priority Mail will be 2-3 days, whereas USPS Priority Mail International will be 6-10 days.

    Any ideas?

  2. […] has a new WooCommerce tutorial on showing delivery estimates for each shipping […]

  3. is there a snippet that will display actual estimate delivery from the date of purchase instead of a range of days ? Says 10-15 days from purchase date and it will display the actual calendar date range (November 1st – November 15th)

  4. I have little question about Shipping Rates

    If I have the $shipping_class value (by example $shipping_class_id=12) and pass it to:

    $flat_rate = new WC_Shipping_Flat_Rate;
    $symbol = get_woocommerce_currency_symbol();
    echo $symbol . $flat_rate->flat_rates[$shipping_class][‘cost’];

    system returns nothing

    So, idea is to get flat rate or a list of rates before making order.

  5. At least on WooCommerce 2.6.9 the method ID is no longer visible in settings. However, I was able to find the info by going to my checkout page and using inspect element.

    In the “for” attribute, I found the following:
    – shipping_method_0_free_shipping2
    – shipping_method_0_flat_rate1

    The method ID that worked for me ended up being:
    – free_shipping
    – flat_rate

    Hope this helps someone!

  6. Can someone please guide me through the code pasting?

    I never added a code before, only used snippets.

    I can’t find a wc-shipping-estimate.php in the woocommerce plugin editor.

    where should I paste it?

    And what variables should I set?

    It is very important to me, I will appreciate your response.

    Thanks in advance!
    Daniel

  7. hi, is this still vaild for WC 3.1?

  8. hello,

    thanks for snippet. What customization should we make at snippet, if we show conditional delivery estimates not to different shipping method but different shipping classes? I tried class id but it didn’t work.

Hmm, looks like this article is quite old! Its content may be outdated, so comments are now closed.