It would be tempting to use: {customer_name}. Sadly this is not supported by the core WooCommerce plugin, but it is available if you use the WooCommerce Follow-ups extension:
https://docs.woocommerce.com/document/automated-follow-up-emails-docs/email-variables-and-merge-tags/
Alternatively you could copy the email template to:
themes/your-child-theme-name/woocommerce/emails/…
The $order object is passed to the template, so adding the following code to the template should be able to recover the customer’s name from the order:
$user_id = $order->get_customer_id();
if( !$user_id ) {
return; // user_id not found
}
$user = get_user_by( 'ID', $user_id );
if( !$user ) {
return; // user not found
}
$customer_name = $user->first_name.' '.$user->last_name;
// email header
do_action( 'woocommerce_email_header', $email_heading, $email );
?>
// will have to go in the message body - modifying the subject is too complex for here.
<p>Customer name: <?php print $customer_name; ?></p>
Some php skills will be needed to get it working.