php - Register Woo account and WP account from single Contact Form 7 form?

one text

I'm trying to save Contact Form 7 user meta data into the WC account as well as the WP account when the user registers via CF7 form.

In this example:

add_action('wpcf7_before_send_mail', 'create_user_from_application_form');
function create_user_from_application_form($appdata) {
    if ($appdata->id() == 1000) {
        $submission = WPCF7_Submission::get_instance();
        if ($submission) {
            $posted_data = $submission->get_posted_data();
        }
        $surname = $posted_data['Surname'];
        $address1 = $posted_data['Address_1'];
        $address2 = $posted_data['Address_2'];
        $city = $posted_data['City'];
        $state = $posted_data['State'];
        $zip = $posted_data['Zip'];
        $email = $posted_data['Email'];
        $first_name = $posted_data['First_Name'];
        $home_phone = $posted_data['Home_Phone'];
        $username = $posted_data['Username'];
        $password = $posted_data['Password'];
        $userdata = array(
          'user_login' => $username,
          'user_pass' => $password,
          'role' => 'selected_role',
          'first_name' => $first_name,
          'last_name' => $surname,
          'nickname' => $username,
          'display_name' => $username,
          'user_email' => $email,
          'billing_first_name' => $first_name,
          'billing_last_name' => $surname,
          'billing_address_1' => $address1,
          'billing_address_2' => $address2,
          'billing_city' => $city,
          'billing_postcode' => $zip,
          'billing_country' => 'United States (US)',
          'billing_state' => $state,
          'billing_phone' => $home_phone,
          'billing_email' => $email
        );
        $user_id = wp_insert_user( $userdata );
        return $appdata;
    }
}   

billing_first_name

billing_last_name

and

billing_email

correctly populate the Billing fields on the WP account page, but all other billing fields are empty.

Must the WC registration form necessarily be used in order to have the other field meta data saved to the WC account? I didn't find a hook whereby I could force the other field data into WC, but maybe I overlooked it/them?

Source