Update another users meta

wp_ajax_nopriv_{$action} can trigger a non-logged in ajax request.

add_action( 'wp_ajax_nopriv_add_foobar', 'prefix_ajax_add_foobar' );

function prefix_ajax_add_foobar() {
    // Handle request then generate response using WP_Ajax_Response
}

get_user_by can pull the user’s data via email

$user = get_user_by('email', '[email protected]')

update_user_meta can update the user’s metadata.

update_user_meta( $user->ID, $meta_key, $meta_value, $prev_value );