Cada vez que audito una tienda Shopify en México encuentro los mismos cinco problemas. No son errores de novatos; los cometen tiendas con años operando, algunas con presupuestos de publicidad de seis cifras al mes. El denominador común es que Shopify como plataforma toma varias decisiones de estructura que funcionan bien para el 80% de los casos, pero generan fricciones SEO específicas que en el mercado mexicano se amplifican —especialmente cuando la tienda mezcla pesos, envío nacional, y a veces inventario para LATAM.
Lo que sigue no es una lista genérica. Es lo que aparece en mis reportes de auditoría SEO para Shopify semana tras semana, con las instrucciones exactas para corregirlo.
Error 1 — URLs duplicadas por la estructura de colecciones de Shopify
El mismo producto indexado desde múltiples rutas
Shopify permite que un producto aparezca bajo su URL canónica /products/[handle] y también bajo cualquier colección a la que pertenezca: /collections/[coleccion]/products/[handle]. Si el producto está en tres colecciones, existen cuatro URLs que sirven contenido prácticamente idéntico.
Shopify agrega automáticamente un tag canonical apuntando a /products/[handle], pero eso no impide que Googlebot rastree y procese las rutas duplicadas, consumiendo crawl budget y diluyendo señales de enlace. En tiendas grandes con 500+ productos en 15+ colecciones, el volumen de URLs duplicadas puede triplicar el tamaño del sitio indexable.
Cómo verificarlo: En Google Search Console ve a Páginas → No indexadas y filtra por "URL alternativa con etiqueta canónica adecuada". Si ves cientos de URLs de /collections/*/products/* ahí, el problema está activo. También puedes buscarlo directamente en tu crawler favorito (Screaming Frog, Ahrefs Site Audit) filtrando por URLs con segmento /collections/ que contengan /products/.
La corrección: El tag canonical que Shopify genera es correcto. El problema es que las URLs de colección/producto siguen siendo rastreables. La solución más limpia es agregar en el robots.txt una regla que bloquee el rastreo de esas rutas duplicadas:
User-agent: *
Disallow: /collections/*/products/
Esto no desindexará nada porque Google ya prioriza el canonical; solo le dice al bot que no pierda crawl budget en esas rutas. Si también tienes URLs con parámetros de variante (?variant=12345), agrega una segunda regla para Disallow: /*?variant=.
Error 2 — hreflang ausente o configurado para el mercado equivocado
Google no sabe si tu tienda es para México, España o el mundo
La mayoría de las tiendas Shopify en México no tienen hreflang configurado. El resultado: Google determina el mercado objetivo por señales débiles como el dominio, la geolocalización del servidor o el contenido, y puede optar por mostrar la tienda con menor prioridad en búsquedas desde México frente a competidores españoles o estadounidenses con español que sí tienen hreflang declarado.
El problema inverso también es frecuente: tiendas que copian configuraciones de tutoriales en inglés y terminan con hreflang="es" genérico en lugar de hreflang="es-MX", lo que no les da ventaja geográfica en México.
Shopify no genera hreflang por defecto a menos que uses la funcionalidad de mercados internacionales con subdirectorios o subdominios. Para una tienda que opera solo en México, la implementación correcta es simple: declarar es-MX y x-default apuntando al mismo URL en el <head> de cada página.
<link rel="alternate" hreflang="es-MX" href="{{ canonical_url }}">
<link rel="alternate" hreflang="x-default" href="{{ canonical_url }}">
Agrega estas dos líneas en el bloque <head> del archivo theme.liquid, dentro del condicional que ya existe para el tag canonical. Si tu tienda vende también a otros países de LATAM con precios o catálogos distintos, la implementación se vuelve más compleja y vale la pena revisar la documentación de Shopify Markets antes de tocar algo.
🔍 Señal de geotargeting adicional
Complementa el hreflang registrando tu propiedad en Google Search Console con el targeting geográfico configurado en México: Configuración → Segmentación internacional → País. Aunque Google ha reducido el peso de esta señal, sigue siendo una confirmación adicional de mercado objetivo sin costo.
Error 3 — Schema.org roto o ausente en páginas de producto
Sin rich results en Google Shopping y búsqueda orgánica
Shopify incluye Schema de tipo Product en las páginas de producto, pero la implementación base tiene tres problemas recurrentes. Primero, el campo offers.priceCurrency sale como USD en tiendas que configuraron la moneda como dólar en algún momento y después cambiaron a peso sin revisar el liquid. Segundo, la propiedad offers.availability usa el valor literal de la variable Liquid sin validar que corresponda a un valor válido de Schema (InStock, OutOfStock, PreOrder). Tercero, aggregateRating está ausente porque Shopify no tiene sistema de reviews nativo —y sin reviews el campo no se puede generar.
Cómo diagnosticarlo: Toma la URL de cinco productos representativos y pásalos por el Rich Results Test de Google. Los errores más comunes aparecerán como advertencias en rojo. También puedes ir a Search Console → Experiencia en la página → Datos estructurados para ver el volumen de errores en toda la tienda.
La corrección del precio en moneda incorrecta requiere editar el snippet de Schema en tu tema. Busca el archivo product.json o el bloque que genera el JSON-LD del producto y asegúrate de que la propiedad priceCurrency use la variable correcta del tema:
"offers": {
"@type": "Offer",
"priceCurrency": "{{ shop.currency }}",
"price": "{{ product.selected_or_first_available_variant.price | divided_by: 100.0 }}",
"availability": "{% if product.selected_or_first_available_variant.available %}https://schema.org/InStock{% else %}https://schema.org/OutOfStock{% endif %}",
"url": "{{ canonical_url }}"
}
Nota el divided_by: 100.0: Shopify almacena los precios en centavos. Si omites esa división, el precio en el Schema aparecerá como 129900 en lugar de 1299.00, lo que Google detecta como error de formato.
Error 4 — Velocidad de carga penalizada por apps de terceros
Cada app que instalas en Shopify inyecta scripts que nadie limpia
Las apps de Shopify se instalan rápido y se olvidan lento. El problema es que la mayoría inyectan JavaScript y CSS en el <head> de todas las páginas, incluidas las que nunca usan esa app. Una tienda con historial de 2–3 años puede tener entre 8 y 15 apps instaladas, de las cuales 4 o 5 ya no se usan activamente pero sus scripts siguen cargando en cada visita.
En México, donde una fracción significativa del tráfico móvil llega desde redes 4G con latencia variable, el impacto en Core Web Vitals —especialmente LCP y TBT— es directo y medible. Google usa CWV como señal de ranking desde 2021; una tienda con LCP mayor a 4 segundos en móvil está en desventaja estructural frente a competidores optimizados.
Diagnóstico rápido
- PageSpeed Insights en móvil: el desglose de "Eliminar recursos que bloquean el renderizado" muestra los scripts culpables
- En el admin de Shopify, Apps → Ver todas y compara con lo que ves en el source de la página
- WebPageTest con throttling 4G revela el impacto real en condiciones de red mexicana
- Ahrefs Site Audit > Performance muestra páginas con mayor tiempo de respuesta
Correcciones por orden de impacto
- Desinstalar apps que no uses activamente —no solo desactivarlas
- Mover scripts de apps a carga diferida con
deferoasynccuando el tema lo permita - Consolidar apps de chat, reviews y upsell en soluciones únicas
- Evaluar si la funcionalidad de la app se puede replicar con código nativo en el tema
Un patrón que veo con frecuencia: tiendas que instalaron una app de chat (Tidio, Intercom, Zendesk), luego otra de pop-ups (Privy, Klaviyo), luego una de reviews (Yotpo, Judge.me) y una de upsell. Cada una carga entre 80 y 200 KB de JavaScript adicional. La suma supera fácilmente los 500 KB de JS de terceros, lo que en móvil puede traducirse en 2–4 segundos adicionales de Time to Interactive. Consolidar o eliminar esas apps es la intervención de mayor impacto en velocidad después de optimizar imágenes.
Error 5 — Canibalización de keywords entre colecciones y páginas de producto
Varias páginas compitiendo por el mismo término, todas posicionando a medias
La canibalización ocurre cuando múltiples páginas de tu tienda compiten por el mismo keyword. En Shopify el patrón más común es una colección llamada "Tenis para correr" y diez productos individuales con títulos como "Tenis para correr Nike Air Zoom" —todos optimizados para variaciones del mismo término transaccional. Google divide la autoridad entre todas ellas y ninguna llega a la primera página.
El segundo patrón: tiendas que crean colecciones casi idénticas para satisfacer variantes de un mismo intento de búsqueda. "Ropa deportiva mujer", "Ropa fitness mujer", "Ropa gym mujer" como tres colecciones separadas con catálogos casi solapados y copy similar.
Cómo detectarlo: Exporta desde Google Search Console todas las queries que tienen más de una URL posicionando en las primeras 20 posiciones. Cualquier query donde aparezcan dos o tres URLs de tu tienda es un caso de canibalización potencial. Complementa con una búsqueda site:tutienda.com "keyword" en Google para ver qué páginas indexa para ese término.
| Situación | Solución recomendada | Dificultad |
|---|---|---|
| Colección vs. página de producto por mismo keyword | Asigna el keyword transaccional a la colección; optimiza el producto para el término de marca + modelo | Baja |
| Dos colecciones con intento de búsqueda idéntico | Fusiona en una sola colección; redirige 301 la que tiene menos autoridad | Media |
| Blog post y colección compitiendo por mismo término | Diferencia el intento: el blog responde "cómo elegir", la colección "dónde comprar" | Media |
| Múltiples productos con títulos prácticamente idénticos | Incluye diferenciadores específicos en el título: talla, color, material, uso | Baja |
Un punto específico del mercado mexicano
La canibalización en tiendas mexicanas tiene una dimensión adicional: los regionalismos. "Tenis", "zapatos deportivos" y "sneakers" son términos que en México tienen volúmenes de búsqueda distintos y audiencias con comportamiento diferente. Una tienda que crea colecciones separadas para cada uno sin distinguir el catálogo o el intento de búsqueda detrás de cada término genera canibalización semántica que es más difícil de resolver porque no es solo de URL, sino de arquitectura de contenido. La solución correcta es una sola colección principal optimizada para el término de mayor volumen, con mención natural de los otros términos en el copy, y los demás como variantes semánticas en las meta descriptions.
⚠️ Error bonus frecuente: el blog de Shopify sin estrategia
Muchas tiendas publican artículos en el blog nativo de Shopify sin considerar que compiten directamente con sus páginas de colección. Un post titulado "Los mejores tenis para correr en 2026" optimizado para tráfico informacional puede canibalizar la colección "Tenis para correr" si el intent de búsqueda es mixto. La regla práctica: el blog responde preguntas, las colecciones y productos capturan intención de compra. Cuando una URL no encaja claramente en una de esas dos categorías, hay un problema de arquitectura.
El patrón detrás de los cinco errores
Revisando los cinco, hay un hilo conductor: todos son consecuencias de configuraciones por defecto que Shopify aplica para funcionar bien en el caso genérico global, sin ajuste para el contexto específico de una tienda mexicana con su mercado, su idioma y su audiencia. Las soluciones no requieren cambiar de plataforma ni contratar un desarrollador full-time. Requieren un diagnóstico ordenado, priorización por impacto y ejecución precisa.
El orden de corrección importa. Empezar por Schema y hreflang da resultados visibles en 4–8 semanas porque son señales que Google procesa en el siguiente ciclo de rastreo. La canibalización tarda más en resolverse —de 8 a 16 semanas dependiendo del volumen de páginas afectadas— porque implica consolidar contenido y esperar que Google actualice su índice. La velocidad es la que tiene el impacto más inmediato en conversión, aunque su efecto en posicionamiento orgánico puede tomar más tiempo en manifestarse en los reportes.
✅ Lo que puedes hacer hoy
Abre Google Search Console de tu tienda y ve a Páginas → No indexadas. Anota cuántas URLs aparecen como "URL alternativa con etiqueta canónica adecuada" —ese número es tu volumen de duplicados activos. Luego pasa tu URL de inicio por PageSpeed Insights en móvil y anota el LCP. Con esos dos datos tienes el diagnóstico inicial de los errores 1 y 4 sin instalar ninguna herramienta adicional.