How to Add Information to WooCommerce Emails

You can send order receipts (and other transactional emails like shipping notifications) with Jilt, and product images & SKUs are automatically included for WooCommerce! Use our drop & drop editor to visually customize your emails, no code needed. Learn More 👉

WooCommerce emails include each line item in an order by default within an “order items” table. This table is automatically included in almost every WooCommerce transactional email, and displays the product quantity, price, and total.

WooCommerce Default Email Order items
Default Email Order items

However, this isn’t the only data that WooCommerce has available for the order items table in its emails. There are actually other pieces of product data that can be included, but they’re “turned off” by default. WooCommerce can include information like the SKU and product image very easily by switching the defaults for these pieces of data to “on” instead, letting you add more information to WooCommerce emails.

If you’re using WooCommerce 2.5 or newer, please view this updated tutorial instead.

Add Product Images to WooCommerce Emails

WooCommerce includes the ability to add your product images to the order items within your shop’s transactional emails, and turning them on is possible via filter.

We’ll need to use the woocommerce_email_order_items_table filter to change which data is included in the order items table. This filter lets us change the default values for the items in the “Email Order Items” template so that we can make changes like turning SKUs on or turning on product images.

This filter passes in all of the default values for the email order items table. SKUs, purchase notes, images, and download links are all set to false (“off”) by default. WooCommerce conditionally handles turning some of these on itself, such as download links when downloadable access should be granted, but SKUs and images will need to be turned on manually.

Let’s first enable product images within our email order items template. We can do so my taking the data passed into this filter and returning it, but changing the show_image value to true instead with this snippet (in a custom plugin or functions.php):

When this code is used, a 32px by 32px product image is automatically inserted in the order items table with WooCommerce emails:

WooCommerce Order Email with Product Images
Images added to email

This snippet could also be edited to change the image size. Rather than including $image_size for this value, we can pass in an array of sizes. The first number in the array will be the width, then the second number is the image height (it’s best if you keep the aspect ratio for your product thumbnails, which is probably 1:1).

Let’s change the image size to 150px by 150px instead of the default 32px by 32px. Change:

'image_size' => $image_size


'image_size' => array( 150, 150 )

This will give us larger images in the order items table within emails:

WooCommerce Large Product Images in Order Emails
Large images included

This can let you show a picture to customers side by side with the product name in emails to confirm the purchase.

Add Product SKUs to WooCommerce Emails

Product SKUs can also be turned on easily within emails using the same snippet. If you enable SKUs within the email order items table, they will display as #sku (the hash before the SKU will always be shown).

To enable SKUs, you’d change:

'show_sku' => $show_sku,


'show_sku' => true,

When SKUs are enabled, they’re added right after the product name.

WooCommerce show SKUs in order emails 1
Show SKUs in emails

Notice that I’ve kept images enabled here, but you don’t have to do so — leave the snippet as

'show_image' => $show_image,

instead of

'show_image' => true,

if you don’t want to show images.

As a final note on adding SKUs to emails, I dislike that they’re shown inline with the product name. We can use the woocommerce_order_item_name to adjust the product name and add a line break after it easily:

function sww_edit_order_item_name( $name ) {
    return $name . '<br />';
add_filter( 'woocommerce_order_item_name', 'sww_edit_order_item_name' );
WooCommerce Show SKUs in emails 2
Show SKUs with line break

Replace your WooCommerce emails

If you want to have more control over your order email design, Jilt can send emails after orders are completed instead. This would allow you to use an email builder to create emails, including product images and names instead:

Jilt custom email

You can learn more about this and other ways to improve your emails in our guide to customizing WooCommerce order emails.

Adding Information to WooCommerce Emails

While adding other information to your WooCommerce emails is possible, it requires more advanced customization to do so. These pieces of data are already included in the emails, and are simply turned off by default. Our code snippets turn them on for email order items tables.

You can also change the way emails look without changing any of the code around emails by following our tutorial or using the WooCommerce Email Customizer plugin.

I wouldn’t recommend changing the 'show_download_links' default, as WooCommerce handles this for you based on your settings (and only includes them with processing and / or completed order emails). However, you could also include purchase notes if desired.

Beka Rice
Beka Rice is the Head of Product at Jilt. She works on app improvements, integration plugins, helping merchants improve recovery campaigns, and shares tutorials on reducing abandonment or improving recovery on our blog.


  1. Thank you very much Beka – you’ve just saved me a ton of time! It’s highly appreciated!

  2. Hi,
    Great article, I want to ask if you have any suggestion on how can I include different info in email-order-items.php depending if the recipient is a customer o admin?
    Since email-order-items.php is common to both email notifications templates (customer and admin), the modifications in email-order-items.php will be visible by both users, and there’s some info relevant to admins, and that same info shouldn’t be seen for the customers.


  3. Hi

    I have followed the instructions above and it does get the image to show in the email, but all of the information such as image/product title/sku/product attributes are all crammed together in one TD in my table.

    How can I get it so the image is on top with the text underneath to make it look neater? Or but the image in a TD or its own?

  4. Hi..Beka Rice.. Its a great tutorial.. I want to delete the entire Quantity field in my email (ie quantity and its value) .. How can i remove that

    pls help me out

  5. Hi Bekka,

    With Woocommerce 2.5.2 the SKU shows in the admin new customer order email but not in the email that goes to the customer.

    What do I need to change so that the SKUs are shown in the customer email?
    Also, the SKUs do not show in the customer’s account order details on the site. What do I need to change so that the SKUs are displayed?

    Many thanks

  6. Oh, it was so easy. I don’t know what I was worried about. I re-read your article and saw that I just needed to add the code to the functions.php file (yes, I am using a child theme) and it worked.

    So now I have a question. I read elsewhere about the way to change things is by copying a ‘woocommerce’ directory to the child theme and nesting down until I get to the file that needs to be changed. I thought that file was the email template email-order-details.php

    Your method seems so much easier.

    Is there an advantage to either way?

    1. If you can avoid overriding templates and changing via hooks instead, that’s usually preferable because the changes are upgrade-safe. If you override templates, you should check for changes with each major WooCommerce version in case you need to adjust your overrides / add new hooks / etc.

  7. Thank for the article Beka. Regarding your note re: downloadable links, do you know where in the Woocommerce code that it writes out the “Download:” label just before it displays the downloadable link for a virtual/downloadable product, in completed orders?

    I want to flip this around to say “Upload:” instead, but am struggling to track down how Woocommerce writes this label out to the email. Thanks and regards, Alistair

      1. Great, thanks Beka. It’s the $prefix output in that function that I want to change. I’ve made a few other tweaks via a mini plugin I wrote myself, so I’ll just need to get my head around best to intercept that one.



  8. I get the following “undefined variable” errors on: plain_text, show_download_links, show_purchase_note, show_image, image_size. I only want to show the SKU.

  9. Thanks for this Beka!

    Can we selectively hide ‘Customer details’ and ‘Billing Address’ from all Woocommerce emails except the ones to admin? I just want to show Shipping Address to Customers and Vendors.

  10. Hi Beka, thanks a lot for this helpful article (and all the other ones ;-)). I just run into one issue. We’re selling downloadable products and when I add the code to functions.php to show the images in the mails, the downloads links disappear. Do I have to change something within the code?


    1. Hmm looks like they changed the filter in WooCommerce 2.5, I’ll have ot pencil in an update. In the meantime, instead of 'show_download_links' => $show_download_links, try making it match what the new code has and see if that helps. (Replace $this with $order)

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