How can I append text to the WooCommerce email messages without overriding the existing templates. Ideally I want to add different messages to each email, without overriding the default templates.

I've tried to hook into the following actions:

do_action( 'woocommerce_email_order_details', $order, $sent_to_admin, $plain_text, $email );


do_action( 'woocommerce_email_header', $email_heading, $email );

In both cases it seems the $email variable is not passed though.

  • Can you write a piece of code you use to hook into this actions?
    – dev_masta
    Jan 12, 2018 at 21:32

1 Answer 1


You may be using the wrong hook. I use this :

add_action( "woocommerce_email_after_order_table", "custom_woocommerce_email_after_order_table", 10, 1);

function custom_woocommerce_email_after_order_table( $order ) {

    echo '<p>content after email table</p>';


now, if you look at this link it will show you other hooks that you can use if you want to append other information to the email.

for instance, if you want it in the header instead of after the table:

add_action( "woocommerce_email_header", "woocommerce_email_header_intro", 10, 1);

function woocommerce_email_header_intro( $order ) {

    echo '<p>content at top of email</p>';

  • do you have an example of making the text conditional to the email that is being sent? Jan 12, 2018 at 13:49
  • sure what kind of conditional do you mean?
    – rudtek
    Jan 12, 2018 at 18:38
  • e.g. to show a different string of text on the 'Processing' then 'Completed' emails. Jan 15, 2018 at 15:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.