Below is what I used in the end to solve my problem:
add_action('woocommerce_init', 'shipping_instance_form_fields_filters');
function shipping_instance_form_fields_filters()
{
$shipping_methods = WC()->shipping->get_shipping_methods();
foreach($shipping_methods as $shipping_method) {
add_filter('woocommerce_shipping_instance_form_fields_' . $shipping_method->id, 'shipping_instance_form_add_extra_fields');
}
}
function shipping_instance_form_add_extra_fields($settings)
{
$settings['route_number'] = [
'title' => 'Route Number',
'type' => 'text',
'placeholder' => '1,2,3...',
'description' => 'Enter route number'
];
return $settings;
}
add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );
function my_custom_checkout_field_update_order_meta( $order_id ) {
$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
$chosen_shipping = substr( $chosen_methods[0],-1);
$free_shipping = get_option( 'woocommerce_free_shipping_'.$chosen_shipping.'_settings' );
$route_number = $free_shipping['route_number'];
update_post_meta( $order_id, 'Route Number', sanitize_text_field( $route_number ) );
}