Você gerou a etiqueta, postou a encomenda, e quando volta no painel do WooCommerce o código de rastreio simplesmente não aparece ao lado do pedido. Olha em outro pedido — também não tem. Vai no Melhor Envio, ele está lá, normal. Volta no Wordpress, sumiu.
Se isso já te aconteceu, você não está sozinho. É um dos bugs mais comuns de quem usa Melhor Envio + WooCommerce no Brasil, e ele tem uma causa específica que ninguém te conta: o código de rastreio é salvo em diferentes lugares dependendo de qual versão do plugin oficial você está usando — e versões mais novas mudaram o meta key sem aviso.
Onde o WooCommerce esconde o tracking
O Melhor Envio (e plugins compatíveis com ele) salvam o código de rastreamento como post meta no pedido. Mas não existe um padrão único. Ao longo dos anos, pelo menos quatro chaves diferentes foram usadas:
melhorenvio_tracking— versões antigas, sem underline_melhorenvio_tracking— versão mais comum, com underline (oculta na lista padrão de meta)melhor_envio_tracking— variação com underline no nome_tracking_code— chave genérica usada por integrações de terceiros
Se o seu tema ou seu painel custom está procurando o tracking em apenas uma dessas chaves, o resto dos pedidos parece "sem rastreio". O dado está lá — só não no lugar que o seu código espera.
Por que isso acontece
Toda vez que o plugin do Melhor Envio é atualizado, o time pode mudar a forma como persiste o tracking. Em algumas versões, ele salva no pedido como meta. Em outras, salva como nota interna (order note). E quando você tem um histórico de pedidos antigos misturado com pedidos novos, isso vira uma colcha de retalhos.
Se você olha no banco de dados (tabelawp_postmetaou, com HPOS ativo,wp_wc_orders_meta) e rodaSELECT meta_key FROM ... WHERE meta_key LIKE '%track%', é comum ver três ou quatro chaves diferentes — todas válidas, todas com tracking, espalhadas entre os pedidos.
O fix: procurar em todos os lugares
Não tem solução elegante. Você precisa de um fallback que tenta cada chave em sequência e retorna a primeira que tiver valor. Em PHP, dentro de um pedido WooCommerce, fica assim:
private function get_tracking( $order ) {
$keys = array(
'melhorenvio_tracking',
'_melhorenvio_tracking',
'melhor_envio_tracking',
'_tracking_code',
);
foreach ( $keys as $key ) {
$val = $order->get_meta( $key );
if ( ! empty( $val ) ) {
return is_array( $val ) ? $val[0] : $val;
}
}
return '';
}
Repare em três detalhes importantes:
- Usar
$order->get_meta()e nãoget_post_meta()— isso garante compatibilidade com HPOS (High-Performance Order Storage), que o WooCommerce ativou por padrão recentemente. - Tratar valor como array — algumas versões do plugin salvam o tracking como array de uma posição (quando o pedido tem múltiplos volumes).
- Retornar string vazia, não
null— facilita a vida do código que consome essa função.
E o painel admin do Woo, que mostra pendentes?
Aqui está a dor real: a tela padrão de pedidos do WooCommerce não tem uma coluna de tracking. Você consegue ver o status (processando, concluído), mas não enxerga de bate-pronto quais pedidos já saíram com etiqueta e quais ainda estão parados na sua mesa esperando ser postados.
O resultado: você abre 20 pedidos um por um pra checar quem tem código. Multiplique por uma semana cheia e isso vira um custo operacional real.
📦 Resolvemos isso num plugin grátis
O Intersomos Shipping Manager é um dashboard que filtra por categoria/produto, mostra quantos foram enviados, quantos faltam, e usa o fallback dos 4 meta keys para sempre achar o tracking. 100% GPL, HPOS-ready.
Baixar grátis (só seu email)Bonus: por que o Melhor Envio não inclui isso por padrão?
Honestamente, o plugin oficial do Melhor Envio é focado em gerar etiquetas e cotar fretes — não em ser um ERP de envios. A visão deles é: você compra etiqueta, ela é gerada, fim do trabalho do plugin. O acompanhamento operacional fica por conta do lojista.
Isso faz sentido pra eles. Não faz sentido pra você, que precisa operar a loja e enxergar o que falta enviar sem ter que abrir cada pedido na unha.
Checklist rápido se o seu rastreio sumiu
- Veja a versão do plugin Melhor Envio que está ativa (Plugins → Plugins instalados).
- Abra um pedido com tracking gerado e clique em "Custom Fields" — se não estiver visível, ative em Screen Options.
- Procure por qualquer meta com a palavra
track. Anote a chave exata. - Veja se o seu tema ou snippet customizado está usando essa mesma chave.
- Se não estiver, ou você ajusta o código, ou usa um plugin que já cobre todos os fallbacks.
Conclusão
O rastreio do Melhor Envio não "some" — ele só fica salvo em uma chave diferente da que seu painel está procurando. Conhecer os 4 lugares onde ele pode estar resolve 99% dos casos. E se você quer pular essa investigação toda, o Shipping Manager faz isso pra você.
Achou útil? Compartilhe: