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 (tabela wp_postmeta ou, com HPOS ativo, wp_wc_orders_meta) e roda SELECT 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ão get_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

  1. Veja a versão do plugin Melhor Envio que está ativa (Plugins → Plugins instalados).
  2. Abra um pedido com tracking gerado e clique em "Custom Fields" — se não estiver visível, ative em Screen Options.
  3. Procure por qualquer meta com a palavra track. Anote a chave exata.
  4. Veja se o seu tema ou snippet customizado está usando essa mesma chave.
  5. 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:

Twitter WhatsApp LinkedIn

Continue lendo

Melhor Envio vs Correios Automático

Comparação honesta: qual plugin de frete usar na sua loja.

HPOS no WooCommerce: o que muda

Pedidos fora do wp_posts e checklist antes de migrar.