You’ve shown the delivery estimate on the product page, the cart, and the checkout. The customer placed their order. Now they’re waiting — and the next question they’ll have is the same one they had before the purchase: “When is this arriving?”
Adding the delivery estimate to your confirmation emails closes the loop. The customer has a written reference point they can refer back to — and you get fewer “where is my order?” support tickets as a result. This covers which email should carry it, three ways to add it, and a snippet you can paste.
Which WooCommerce Email Should Carry the Delivery Date?
WooCommerce sends several transactional emails and they are not interchangeable. Putting the estimate in the wrong one is why some stores add it and still get the support ticket.
| WooCommerce email | Fires when | Commonly called | Delivery date belongs here? |
|---|---|---|---|
| Processing order | Payment received | Order confirmation | Yes — the primary place |
| Completed order | You mark the order complete | Shipping confirmation | Yes — restate it with tracking |
| On-hold order | Awaiting payment | Pending | No — no dispatch date exists yet |
| New order | Payment received | Admin notification | No — goes to you, not the customer |
The wrinkle worth knowing: WooCommerce has no email literally named “shipping confirmation.” Most stores use Completed order for that purpose, because marking an order complete is what most fulfilment workflows do at dispatch. So if you want a shipping confirmation email, that is the template to edit.
| 🎯 NOTE “Completed” in WooCommerce means you have finished your part, not that the parcel has arrived. Customers read it as “delivered” surprisingly often. Renaming the email subject to something like “Your order has shipped” removes that ambiguity in about ten seconds. |
Why Confirmation Emails Matter for Delivery Expectations
The order confirmation email is the first communication a customer receives after purchasing. It’s also one of the most-opened emails in eCommerce — open rates typically far exceed marketing emails, because the customer is actively looking for confirmation their order went through.
That moment of attention is the ideal time to reinforce the delivery window. A customer who sees their estimated delivery date in the confirmation email will refer back to that email rather than contacting support when they’re wondering where their order is.
How to Add Delivery Dates to WooCommerce Emails
WooCommerce order confirmation emails are customisable through three routes, in increasing order of control:
- WooCommerce email settings: under WooCommerce → Settings → Emails you can edit each template’s subject, heading and “additional content” field. The additional content field is the quickest place to put a static delivery statement — no code, no plugin. It cannot output a calculated per-order date.
- Email customisation plugins: Kadence WooCommerce Email Designer or a similar visual editor gives you drag-and-drop blocks and merge tags for order-specific information. Right choice if you want branded emails generally and the delivery date is one of several changes.
- A hook or template override: the most control, and the only route that outputs a genuinely calculated date. You can hook into the email body without touching template files at all — see below.
Adding a Delivery Estimate to the Email in Code
Add this to your child theme’s functions.php or a code snippets plugin — never the parent theme, since a theme update will wipe it. It prints a delivery window underneath the order details table in the customer’s processing and completed emails.
<?php
/**
* Print a delivery window in the customer's order confirmation
* and shipping confirmation emails.
*/
add_action( 'woocommerce_email_order_details', 'qsd_email_delivery_note', 15, 4 );
function qsd_email_delivery_note( $order, $sent_to_admin, $plain_text, $email ) {
// Customer-facing emails only.
if ( $sent_to_admin ) {
return;
}
$allowed = array( 'customer_processing_order', 'customer_completed_order' );
if ( ! isset( $email->id ) || ! in_array( $email->id, $allowed, true ) ) {
return;
}
// Business days to add. Replace with your own values.
$min_days = 3;
$max_days = 5;
$from = qsd_add_business_days( $order->get_date_created(), $min_days );
$to = qsd_add_business_days( $order->get_date_created(), $max_days );
$text = sprintf(
'Estimated delivery: %s – %s',
$from->format( 'D, j M' ),
$to->format( 'D, j M' )
);
if ( $plain_text ) {
echo esc_html( $text ) . PHP_EOL;
return;
}
echo '<p style="font-size:15px;margin:16px 0;"><strong>'
. esc_html( $text ) . '</strong></p>';
}
/**
* Add business days, skipping Saturdays and Sundays.
*/
function qsd_add_business_days( $date, $days ) {
$d = clone $date;
while ( $days > 0 ) {
$d->modify( '+1 day' );
if ( (int) $d->format( 'N' ) < 6 ) {
$days--;
}
}
return $d;
}
Three things worth understanding about it:
- The
$plain_textbranch is not optional. WooCommerce sends a plain-text alternative alongside the HTML version. Skip that check and your markup appears as raw tags in any client rendering the text part. - Inline the CSS. Email clients strip stylesheets, so styling has to sit in the
styleattribute. - It counts from the order date, not from dispatch. If you have a processing time or a daily cutoff, add those days to
$min_daysand$max_daysor the email will promise a date earlier than you can hit. That distinction is covered in dispatch date vs. delivery date.
A delivery date plugin does the same job without the maintenance, and keeps the email in step with what the product page showed — which is the part hand-rolled code tends to drift away from.
The Simpler Approach: A Clear Estimated Delivery Note
If adding dynamic, automatically calculated dates to emails is more complexity than you want right now, the simpler approach is a static statement in the template’s additional content field. Something like: “Your order will be dispatched within 1–2 business days and typically arrives within 5–7 business days of dispatch.”
This isn’t as specific as a calculated date, but it’s honest and useful. Combined with delivery estimates shown pre-purchase, it reinforces the expectation the customer already has — and it takes a minute rather than an afternoon.
| 💡 PRO TIP Whatever you put in your confirmation email, make sure it aligns with what was shown at checkout. If the product page said “Get it by Thursday” and the confirmation email says “Allow 7–10 business days”, the customer will be confused and potentially frustrated — even if both statements are technically accurate. |
What the Shipping Confirmation Email Should Say
The dispatch message is a different job from the order confirmation. By the time it sends, the estimate is no longer a forecast from the order date — the parcel is genuinely in transit and the window should be tighter.
- Say it has shipped, not that it is “complete”. Edit the subject line.
- Restate the arrival window, now counted from dispatch rather than from the order.
- Include the tracking number and carrier, and say which carrier it is — tracking numbers alone are useless to most people.
- Say what to do if it is late, with a date. “If it has not arrived by Tuesday 19th, reply to this email” beats a generic support link.
The goal is continuity: the customer sees the same delivery expectation at every touchpoint, from the product page to the confirmation email to the dispatch notice. That consistency is what builds genuine confidence in your store’s reliability.
Frequently asked questions
What is the difference between an order confirmation and a shipping confirmation email?
The order confirmation goes out when payment succeeds and tells the customer you have their order — in WooCommerce that is the Processing order email. The shipping confirmation goes out when the parcel leaves you and carries tracking; most WooCommerce stores use the Completed order email for it.
Does WooCommerce show a delivery date in emails by default?
No. WooCommerce emails contain order details, totals and addresses, but no delivery estimate of any kind. Adding one requires the additional content field, an email customiser plugin, a snippet, or a delivery date plugin.
How do I edit WooCommerce order confirmation emails without code?
Go to WooCommerce → Settings → Emails and open the template you want. You can change the subject, the heading and the additional content shown at the bottom. For layout and branding changes beyond that you need an email designer plugin or a template override.
Which email should the delivery date go in if I only pick one?
The order confirmation — WooCommerce’s Processing order email. It has the highest open rate of anything you send and it reaches the customer while the question is live. Adding it to the dispatch email as well is better, but this one first.
How do I test a WooCommerce email after changing it?
Place a real test order on a staging site rather than relying on a preview, because previews often use placeholder order data and will not reveal a broken calculation. Check both the HTML and plain-text versions, since they render through different code paths.
Related Reading
- How to Reduce “Where Is My Order” Support Tickets
- Delivery Date vs. Shipping Date vs. Dispatch Date: What's the Difference?
- WooCommerce Delivery Date Plugin Types Explained
- How to Add Amazon-Style Delivery Dates to WooCommerce (Step-by-Step)
- What Should I Do If I Can't Meet Estimated Delivery Dates?
