How to Customise WooCommerce Order Emails

WooCommerce sends a range of transactional emails — new order, order status changes, customer invoice, password reset. You can customise their content and style without touching the template files by using filters and action hooks, or by overriding the email templates in your theme.

Problem: How do you customise the design and content of WooCommerce transactional emails — such as New Order and Order Completed — to match a client's brand?

Solution: For simple changes, use WooCommerce → Settings → Emails in the admin. For full control, copy the email templates from woocommerce/templates/emails/ into your theme's woocommerce/emails/ folder and edit them directly — WooCommerce loads the theme version automatically.

Override the email header colour and footer text via the WooCommerce admin:

Go to WooCommerce → Settings → Emails → Email customizer to set the base colour, background, body background, and footer text without any code.

Add a custom message to all outgoing WooCommerce emails via a filter:

add_action( 'woocommerce_email_footer', 'add_custom_email_footer' );

function add_custom_email_footer( $email ) {
    echo '<p style="color:#777;font-size:12px;">Follow us on '
         . '<a href="https://twitter.com/mystore">Twitter</a> for news and deals.</p>';
}

Add order meta to a specific email (e.g., show the VAT number in the processing email):

add_action( 'woocommerce_email_order_meta', 'add_vat_to_email', 10, 3 );

function add_vat_to_email( $order, $sent_to_admin, $plain_text ) {
    $vat = get_post_meta( $order->get_id(), '_billing_vat', true );
    if ( ! $vat ) return;

    if ( $plain_text ) {
        echo "
VAT Number: " . esc_html( $vat ) . "
";
    } else {
        echo '<p><strong>' . esc_html__( 'VAT Number:', 'textdomain' ) . '</strong> ' . esc_html( $vat ) . '</p>';
    }
}

Override an email template by copying it to your theme:

# Copy the new-order template to your theme for overriding
mkdir -p wp-content/themes/mytheme/woocommerce/emails/
cp wp-content/plugins/woocommerce/templates/emails/admin-new-order.php    wp-content/themes/mytheme/woocommerce/emails/admin-new-order.php

NOTE: When WooCommerce updates, copied template files do not update automatically — you must merge changes manually. Check the WooCommerce → Status → Tools → Template Overrides page after every WooCommerce update to see if your overridden templates are outdated.