Saltar para o conteúdo principal
Voltar ao blogue
SEO técnico

Hreflang e-commerce multilingue: guia sem erros

Hreflang mal configurado faz páginas FR aparecerem no Canadá e páginas US em França. Veja como implementar corretamente em Shopify e WooCommerce.

#hreflang#seo internacional#i18n#multilingue
Hreflang e-commerce multilingue: guia sem erros

Hreflang e-commerce multilingue: guia sem erros

Tem uma loja FR e está a abrir uma versão EN para os EUA. Tudo parece funcionar — até perceber que, ao pesquisar a sua marca a partir de França, o Google mostra a página US. Os seus clientes franceses aterram numa página em inglês e a conversão desce.

O culpado: um hreflang mal configurado. Esta tag diz ao Google que versão linguística ou regional deve mostrar a quem. Quando está bem feita, ajuda no SEO internacional. Quando está mal feita, cria um caos de redirecionamentos cruzados.

O que o hreflang resolve (e o que não resolve)

Hreflang resolve:

  • Mostrar a página FR a utilizadores francófonos e EN a anglófonos
  • Distinguir fr-FR (França) e fr-CA (Canadá) com preços ou entregas diferentes
  • Evitar conteúdo duplicado entre 5 versões linguísticas quase idênticas

Hreflang não resolve:

  • O ranking por si só (hreflang não é um sinal direto de ranking)
  • O desempenho por mercado (os backlinks locais continuam a ser essenciais em cada mercado)
  • Problemas de qualidade de tradução

Se o seu site só tem uma língua, não precisa de hreflang. Se tem 2+ línguas ou 2+ regiões, isto é obrigatório para um SEO internacional limpo.

Os 3 métodos de implementação

O mais comum. Cada página lista as suas alternativas no <head>:

<link rel="alternate" hreflang="fr-FR" href="https://example.com/fr/products/chaussure-derby" />
<link rel="alternate" hreflang="en-US" href="https://example.com/en-us/products/leather-derby-shoes" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/en-gb/products/leather-derby-shoes" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/products/leather-derby-shoes" />

Adequado para catálogos pequenos (<1000 páginas). Difícil de manter em grandes volumes — cada página tem de conhecer as suas alternativas.

Método 2 — Sitemap XML

Cada URL no sitemap lista as suas variantes:

<url>
  <loc>https://example.com/fr/products/chaussure-derby</loc>
  <xhtml:link rel="alternate" hreflang="fr-FR" href="https://example.com/fr/products/chaussure-derby" />
  <xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/en-us/products/leather-derby-shoes" />
  <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/en/products/leather-derby-shoes" />
</url>

Melhor para catálogos grandes: centraliza as relações num único ficheiro. Mais fácil de gerar por script. É o método recomendado pela Ecomptimize para catálogos com 5 000+ fichas.

Para ficheiros não HTML (PDF, imagens localizadas):

Link: <https://example.com/fr/catalog.pdf>; rel="alternate"; hreflang="fr-FR",
      <https://example.com/en/catalog.pdf>; rel="alternate"; hreflang="en-US"

Raro em e-commerce, útil para catálogos PDF descarregáveis.

Recomendação: método sitemap para catálogos com >1000 URLs, tags HTML para o resto.

Hreflang vs canonical: não confundir

Este é o mal-entendido mais frequente.

Canonical diz: "esta é a URL de referência deste conteúdo entre várias URLs idênticas ou semelhantes". Serve para deduplicar.

Hreflang diz: "estas são as versões linguísticas deste conteúdo, cada uma é específica para o seu público". Serve para localizar.

Regra crítica: hreflang aponta para uma URL diferente (a versão noutra língua). canonical aponta para uma URL potencialmente idêntica (a mesma página ou uma variação com parâmetros).

Uma página deve ter ao mesmo tempo um hreflang e um canonical:

<!-- Canonical desta página -->
<link rel="canonical" href="https://example.com/fr/products/chaussure-derby" />

<!-- Versões linguísticas desta página -->
<link rel="alternate" hreflang="fr-FR" href="https://example.com/fr/products/chaussure-derby" />
<link rel="alternate" hreflang="en-US" href="https://example.com/en-us/products/leather-derby-shoes" />

Erro fatal: fazer o canonical da versão EN apontar para a versão FR ("canonicalizar as traduções"). O Google interpreta isso como "a versão EN é um duplicado da FR a ignorar" e não indexa a página EN. Catástrofe de SEO.

A matriz bidirecional

Hreflang tem de ser bidirecional: se A diz "a minha versão EN é B", então B tem de dizer "a minha versão FR é A". Caso contrário, o Google ignora a relação.

Exemplo de implementação correta:

Página FR:

<link rel="alternate" hreflang="fr-FR" href=".../fr/..." />
<link rel="alternate" hreflang="en-US" href=".../en-us/..." />
<link rel="alternate" hreflang="x-default" href=".../en/..." />

Página EN US:

<link rel="alternate" hreflang="fr-FR" href=".../fr/..." />
<link rel="alternate" hreflang="en-US" href=".../en-us/..." />
<link rel="alternate" hreflang="x-default" href=".../en/..." />

Exatamente as mesmas 3 linhas em cada versão. Sem relações em falta, sem relações assimétricas.

Variantes regionais: fr-FR vs fr-CA vs fr-BE

Quando é que deve distinguir regiões?

  • Preços diferentes (IVA, entrega, moeda) → sim, distinguir
  • Conteúdo ligeiramente diferente (tamanhos US vs EU, vocabulário local) → sim, distinguir
  • Conteúdo idêntico, só muda a moeda → não, distinguir; trate a moeda no checkout

A distinção regional exige URLs distintas:

/fr/products/chaussure-derby     (hreflang="fr")
/fr-ca/products/chaussure-derby  (hreflang="fr-CA")
/fr-be/products/chaussure-derby  (hreflang="fr-BE")

Se não consegue manter 3 versões distintas, é melhor ficar com uma única versão fr e gerir as diferenças (moeda, entrega) em runtime.

x-default: porque é indispensável

hreflang="x-default" indica a versão a mostrar quando não é encontrada nenhuma correspondência. Por exemplo, um utilizador na Roménia que não tem FR, EN-US nem EN-GB nas preferências — que versão deve ver?

Sem x-default, o Google escolhe de forma aleatória. Com x-default, controla essa escolha (tipicamente, a versão EN mais genérica).

Recomendação: declarar sempre um x-default, idealmente a versão inglesa genérica.

Implementação por plataforma

Shopify

Shopify Markets (desde 2022) gere hreflang de forma nativa se configurar vários markets com domínios ou subdomínios distintos. Na maioria dos casos, não precisa de customização.

Limites: Shopify Markets não suporta todas as combinações de língua/país com granularidade fina. Para casos complexos (10+ mercados), use uma app como Langify + o seu módulo manual de hreflang.

WooCommerce

WooCommerce não tem suporte nativo. Três opções:

  • WPML (paid): plugin multilingue líder, gere hreflang automaticamente
  • Polylang (free/paid): alternativa com bom suporte de hreflang
  • TranslatePress (paid): mais simples para catálogos pequenos

Atenção: não combine dois plugins (WPML + Polylang), isso cria hreflang duplicados e partidos.

Headless ou custom

Se estiver num frontend custom (Next.js, Nuxt), gera o hreflang do lado do servidor. Em Next.js com next-intl, a geração é automática se usar as rotas /[locale]/....

Auditoria hreflang em 15 min

No seu site atual, verifique:

  1. Bidirecionalidade: em 10 páginas de teste, confirmar que cada versão referencia mutuamente as outras (via Screaming Frog ou hreflang.org)
  2. x-default presente: em todas as páginas localizadas
  3. Sem canonical entre línguas: a versão EN não deve canonicalizar para FR
  4. Códigos ISO válidos: "fr", "en" (língua) ou "fr-FR", "en-US" (língua-país). Não "french" nem "uk".
  5. Mesma URL em hreflang e canonical da mesma página: evita divergências

Ferramentas gratuitas:

  • hreflang.org — auditoria por URL
  • Screaming Frog (SEO Spider) — auditoria em massa
  • Google Search Console — relatórios de erros de hreflang em Settings → International Targeting

FAQ

Quanto tempo demora até o Google ter em conta o hreflang?

4 a 8 semanas para uma implementação limpa num catálogo existente. O Google tem de voltar a rastrear cada página, validar as relações bidirecionais e ajustar o ranking por mercado. Não há efeito imediato.

Posso ter hreflang apenas no sitemap sem as tags HTML?

Sim, e isso é até recomendado para catálogos grandes. O Google suporta os 3 métodos como equivalentes. Escolha o que for mais fácil de manter no seu stack.

O hreflang funciona no Bing e no Yandex?

Bing sim. Yandex sim. Baidu parcialmente. Todos usam o mesmo standard. Não é preciso implementar uma variante específica.

O que fazer se as minhas traduções forem geradas por IA e não forem perfeitas?

Hreflang funciona independentemente da origem do conteúdo — tradutor humano ou IA. O que conta é que as páginas sejam únicas por locale (mesmo com 80% de semelhança e uma tradução honesta), não a sua origem.

Posso usar hreflang para conteúdo idêntico com apenas mudança de moeda?

Tecnicamente sim, mas há risco de penalização se a diferença for demasiado pequena. O Google pode considerar que as páginas são duplicadas sem valor local acrescentado. Melhor opção: uma única página com moeda dinâmica na navegação.

O meu blog multilingue deve ter hreflang?

Sim, exatamente como as suas fichas de produto. Cada artigo traduzido deve referenciar as suas versões, e o seu hub de blog também deve referenciar os hubs localizados. Veja o nosso plano editorial em 7 línguas para o processo completo.


Para lançar o seu catálogo em 7 línguas com hreflang limpo, veja Ecomptimize para Shopify ou Ecomptimize para WooCommerce.


Gostaste deste artigo?