Send an Email notification to the admin for pending order status in WooCommerce Send an Email notification to the admin for pending order status in WooCommerce wordpress wordpress

Send an Email notification to the admin for pending order status in WooCommerce


UPDATE 2 (Change from woocommerce_new_order to woocommerce_checkout_order_processed thanks to CĂ©line Garel)

This code will be fired in all possible cases when a new order get a pending status and will trigger automatically a "New Order" email notification:

// New order notification only for "Pending" Order statusadd_action( 'woocommerce_checkout_order_processed', 'pending_new_order_notification', 20, 1 );function pending_new_order_notification( $order_id ) {    // Get an instance of the WC_Order object    $order = wc_get_order( $order_id );    // Only for "pending" order status    if( ! $order->has_status( 'pending' ) ) return;    // Send "New Email" notification (to admin)    WC()->mailer()->get_emails()['WC_Email_New_Order']->trigger( $order_id );}

Code goes in functions.php file of your active child theme (or theme) or also in any plugin file.


A more customizable version of the code (if needed), that will make pending Orders more visible:

// New order notification only for "Pending" Order statusadd_action( 'woocommerce_checkout_order_processed', 'pending_new_order_notification', 20, 1 );function pending_new_order_notification( $order_id ) {    // Get an instance of the WC_Order object    $order = wc_get_order( $order_id );    // Only for "pending" order status    if( ! $order->has_status( 'pending' ) ) return;    // Get an instance of the WC_Email_New_Order object    $wc_email = WC()->mailer()->get_emails()['WC_Email_New_Order'];    ## -- Customizing Heading, subject (and optionally add recipients)  -- ##    // Change Subject    $wc_email->settings['subject'] = __('{site_title} - New customer Pending order ({order_number}) - {order_date}');    // Change Heading    $wc_email->settings['heading'] = __('New customer Pending Order');     // $wc_email->settings['recipient'] .= ',name@email.com'; // Add email recipients (coma separated)    // Send "New Email" notification (to admin)    $wc_email->trigger( $order_id );}

Code goes in functions.php file of your active child theme (or theme) or also in any plugin file.

This version Allow to customize the email heading, subject, add recipients...


I've tried with LoicTheAztec answer, @LoicTheAztec thanks a lot for your great code.

I have just changed the action hook from woocommerce_new_order to woocommerce_checkout_order_processed to get it to work.

Here is the action : add_action( 'woocommerce_checkout_order_processed', 'pending_new_order_notification', 20, 1 );

Hope that helps.