O filtro wc_table_shipping_rate recebe a linha da tabela que gerou a cotação. O que você puser em meta_data é gravado no item de frete do pedido.
Exemplo
A tabela tem uma 9ª coluna com o código interno da transportadora. As colunas do CSV chegam por posição, começando em 0.
add_filter( 'wc_table_shipping_rate', function ( $args, $rate ) {
$row = $rate['row'];
if ( isset( $row[8] ) && '' !== $row[8] ) {
$args['meta_data']['Código da transportadora'] = $row[8];
}
return $args;
}, 10, 2 );
Pra usar a posição de uma coluna mapeada, leia $rate['map']. Ex.: $row[ $rate['map']['label'] ] é o nome da linha.
Esconder do cliente
Chave começando com _ não aparece pro cliente nem nos e-mails:
$args['meta_data']['_codigo_transportadora'] = $row[8];
Ler depois
foreach ( $order->get_items( 'shipping' ) as $item ) {
$codigo = $item->get_meta( 'Código da transportadora' );
}
Modo banco de dados
No modo banco de dados, $rate['row'] é o registro do banco, com chaves nomeadas (postcode_start, weight_end, cost, label...). Colunas extras do CSV não são importadas.