Saltar al contenido principal
Volver al blog
SEO técnico

Hreflang e-commerce multilingüe: guía sin errores

Hreflang mal configurado: tus páginas FR aparecen en Canadá y las US en Francia. Así se implementa bien en Shopify y WooCommerce.

#hreflang#seo internacional#i18n#multilingüe
Hreflang e-commerce multilingüe: guía sin errores

Hreflang e-commerce multilingüe: guía sin errores

Tienes una tienda FR y abres una versión EN para Estados Unidos. Todo parece funcionar, hasta que te das cuenta de que, al buscar tu marca desde Francia, Google muestra la página US. Tus clientes franceses llegan a una página en inglés y la conversión cae.

El culpable: un hreflang mal configurado. Esta etiqueta le dice a Google qué versión lingüística o regional debe mostrar a cada usuario. Si está bien hecha, mejora el SEO internacional. Si está mal hecha, genera un caos de redirecciones cruzadas.

Qué resuelve hreflang (y qué no)

Hreflang resuelve:

  • Mostrar la página FR a usuarios francófonos y la EN a anglófonos
  • Diferenciar fr-FR (Francia) y fr-CA (Canadá) con precios o envíos distintos
  • Evitar contenido duplicado entre 5 versiones lingüísticas casi idénticas

Hreflang no resuelve:

  • El ranking por sí mismo (hreflang no es una señal de ranking directa)
  • El rendimiento por mercado (los backlinks locales siguen siendo esenciales en cada mercado)
  • Los problemas de calidad de traducción

Si tu sitio solo tiene un idioma, no necesitas hreflang. Si tienes 2 o más idiomas o 2 o más regiones, es obligatorio para un SEO internacional limpio.

Los 3 métodos de implementación

El más común. Cada página lista sus alternativas en el <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" />

Encaja bien en catálogos pequeños (<1000 páginas). Es difícil de mantener en volúmenes grandes: cada página debe conocer sus alternativas.

Método 2 — Sitemap XML

Cada URL del sitemap lista sus 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>

Mejor para catálogos grandes: centraliza las relaciones en un solo archivo. Es más fácil de generar por script. Es el método recomendado por Ecomptimize para catálogos con más de 5.000 fichas.

Para archivos no HTML (PDF, imágenes localizadas):

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

Es poco habitual en e-commerce, pero útil para catálogos PDF descargables.

Recomendación: método sitemap para catálogos de más de 1000 URLs, etiquetas HTML para el resto.

Hreflang vs canonical: no los confundas

Es el malentendido más frecuente.

Canonical dice: "esta es la URL de referencia de este contenido entre varias URLs idénticas o similares". Sirve para deduplicar.

Hreflang dice: "estas son las versiones lingüísticas de este contenido, cada una es única para su público". Sirve para localizar.

Regla crítica: hreflang apunta a una URL distinta (la versión en otro idioma). canonical apunta a una URL potencialmente idéntica (la misma página o una variación con parámetros).

Una página debe tener a la vez un hreflang y un canonical:

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

<!-- Versiones lingüísticas de esta 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" />

Error grave: hacer que el canonical de la versión EN apunte a la versión FR ("canonicalizar las traducciones"). Google interpreta eso como "la versión EN es un duplicado de FR que debe ignorarse" y no indexa la página EN. Un desastre de SEO.

La matriz bidireccional

Hreflang debe ser bidireccional: si A dice "mi versión EN es B", entonces B debe decir "mi versión FR es A". Si no, Google ignora la relación.

Ejemplo de implementación correcta:

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/..." />

Exactamente las mismas 3 líneas en cada versión. Sin relaciones ausentes, sin relaciones asimétricas.

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

¿Cuándo hay que distinguir regiones?

  • Precios distintos (IVA, envío, divisa) → sí, distinguir
  • Contenido ligeramente distinto (tallas US vs EU, vocabulario local) → sí, distinguir
  • Contenido idéntico, solo cambia la divisa → no, no distingas; gestiona la divisa en el checkout

La distinción 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")

Si no puedes mantener 3 versiones distintas, es mejor conservar una sola versión fr y gestionar las diferencias (divisa, envío) en runtime.

x-default: por qué es imprescindible

hreflang="x-default" indica la versión que debe mostrarse cuando no se encuentra ninguna coincidencia. Por ejemplo, un usuario en Rumanía que no tiene ni FR ni EN-US ni EN-GB en sus preferencias: ¿qué versión le muestras?

Sin x-default, Google elige al azar. Con x-default, tú controlas la elección (normalmente, la versión EN más genérica).

Recomendación: declara siempre un x-default, idealmente la versión inglesa genérica.

Implementación por plataforma

Shopify

Shopify Markets (desde 2022) gestiona hreflang de forma nativa si configuras varios markets con dominios o subdominios distintos. En la mayoría de casos no hace falta personalización.

Límites: Shopify Markets no soporta todas las combinaciones de idioma/país con granularidad fina. Para casos complejos (más de 10 mercados), usa una app como Langify + su módulo manual de hreflang.

WooCommerce

WooCommerce no tiene soporte nativo. Tres opciones:

  • WPML (paid): plugin multilingüe líder, gestiona hreflang automáticamente
  • Polylang (free/paid): alternativa con buen soporte de hreflang
  • TranslatePress (paid): más simple para catálogos pequeños

Atención: no combines dos plugins (WPML + Polylang), porque crea hreflang duplicados y rotos.

Headless o custom

Si usas un frontend custom (Next.js, Nuxt), generas hreflang del lado del servidor. En Next.js con next-intl, la generación es automática si usas las rutas /[locale]/....

Auditoría hreflang en 15 min

En tu sitio actual, comprueba:

  1. Bidireccionalidad: en 10 páginas de prueba, verifica que cada versión hace referencia mutua a las demás (con Screaming Frog o hreflang.org)
  2. x-default presente: en todas las páginas localizadas
  3. Sin canonical entre idiomas: la versión EN no debe canonicalizar hacia FR
  4. Códigos ISO válidos: "fr", "en" (idioma) o "fr-FR", "en-US" (idioma-país). No "french" ni "uk".
  5. La misma URL en hreflang y canonical de la misma página: evita divergencias

Herramientas gratuitas:

  • hreflang.org — auditoría por URL
  • Screaming Frog (SEO Spider) — auditoría masiva
  • Google Search Console — informes de errores hreflang en Settings → International Targeting

FAQ

¿Cuánto tarda Google en tener en cuenta los hreflang?

De 4 a 8 semanas para una implementación limpia en un catálogo existente. Google tiene que volver a rastrear cada página, validar las relaciones bidireccionales y ajustar el ranking por mercado. No hay efecto inmediato.

¿Puedo tener hreflang solo en sitemap sin las etiquetas HTML?

Sí, y de hecho es lo recomendado para catálogos grandes. Google soporta los 3 métodos como equivalentes. Elige el que sea más fácil de mantener para tu stack.

¿Hreflang funciona en Bing y Yandex?

Bing sí. Yandex sí. Baidu parcialmente. Todos usan el mismo estándar. No hace falta implementar una variante específica.

¿Qué hago si mis traducciones están generadas por IA y no son perfectas?

Hreflang funciona independientemente del origen del contenido: traductor humano o IA. Lo que importa es que las páginas sean únicas por locale (aunque sean un 80 % similares con una traducción correcta), no su origen.

¿Puedo usar hreflang para contenido idéntico con solo un cambio de divisa?

Técnicamente sí, pero hay riesgo de penalización si la diferencia es demasiado pequeña. Google podría considerar que las páginas están duplicadas sin valor local añadido. Mejor opción: una sola página con divisa dinámica en la navegación.

¿Mi blog multilingüe debe tener hreflang?

Sí, exactamente igual que tus fichas de producto. Cada artículo traducido debe referenciar sus versiones, y tu hub del blog también debe referenciar los hubs localizados. Consulta nuestro plan editorial en 7 idiomas para ver el proceso completo.


Para desplegar tu catálogo en 7 idiomas con hreflang bien configurado, consulta Ecomptimize para Shopify o Ecomptimize para WooCommerce.


¿Te ha gustado este artículo?