The amazing thing about WooCommerce is that you can override any setting with a few lines of code. In today’s example we will try to code a solution where the “New Order” WooCommerce email will be delivered to a custom recipient based on the billing country.
This could be helpful when the WooCommerce store is managed by multiple people, and you want to make sure that order notifications only go to the right manager. Enjoy!
PHP Snippet: Change WooCommerce “New Order” Email Recipient Based on Billing Country
/**
* @snippet Switch New Order Email Recipient Based on Billing Country
* @how-to Get CustomizeWoo.com FREE
* @author Rodolfo Melogli
* @compatible WooCommerce 8
* @donate $9 https://businessbloomer.com/bloomer-armada/
*/
// PART 1
// Lets define the array of 'country code' => 'email' pairs
function bbloomer_location_admin( $location ) {
$admins = array(
'US' => 'usamanager@test.com',
'CA' => 'canadamanager@test.com',
// etc
);
return $admins[$location];
}
// PART 2
// Lets set the new order email recipient
add_filter( 'woocommerce_email_recipient_new_order', 'bbloomer_dynamic_recipient', 9999, 3 );
function bbloomer_dynamic_recipient( $email_recipient, $order_object, $email ) {
if ( is_admin() ) return $email_recipient;
if ( $order_object && $location = $order_object->get_billing_country() ) {
$email_recipient = bbloomer_location_admin( $location );
}
return $email_recipient;
}