SEO en Shopify: configuración, duplicados y catálogo para IA
Tabla de contenidos
El SEO en Shopify no falla por lo que te dicen. Abres el código de tu tienda y ahí están el canonical, el sitemap, el robots.txt y hasta el hreflang. Lo que falla son las colecciones que repiten los mismos productos y un catálogo que los agentes de IA leen a medias.
Qué hace el SEO en Shopify por ti (y qué no)
Una tienda recién creada no está "sin SEO". Shopify genera un robots.txt por defecto que sirve para la mayoría de tiendas, publica un sitemap que se actualiza solo y, con Markets activo, añade los hreflang de cada mercado. El tema Dawn y sus derivados imprimen el canonical con canonical_url en layout/theme.liquid.
Lo que nadie configura por ti es el contenido. El trabajo real está en duplicados, marcado y catálogo, no en instalar una app.
Lo que llega configurado
- HTTPS y CDN en todos los dominios y mercados.
/robots.txtcon las rutas privadas bloqueadas.- Índice de sitemap en
/sitemap.xmlcon sub-sitemaps por tipo. hreflangautomático con Markets.ProductoProductGroupsi el tema es Dawn o derivado.
Lo que nadie configura por ti
- Títulos y meta descripciones página por página.
- Texto propio en las colecciones que quieres posicionar.
- Descripciones que no vengan del fabricante.
- Enlazado interno entre colecciones, productos y blog.
- Redirecciones 301 al renombrar un producto.
- Envío y devoluciones en el marcado estructurado.
Títulos y descripciones: diez minutos por página
Cada producto, colección, página y artículo tiene sus campos de título SEO y meta descripción en el admin. El tema los imprime con page_title y page_description, como documenta la guía de metadatos de Shopify. Si los dejas vacíos, la plantilla cae al nombre del producto más el de la tienda: cientos de títulos con el mismo sufijo que Google acaba reescribiendo, como explicamos en títulos SEO y title tags. La regla: producto al principio, beneficio después, y una descripción con qué es, para quién y qué la diferencia.
Colecciones sin texto son páginas vacías
Una colección que solo muestra una rejilla compite con la rejilla de otra colección y ninguna tiene entidad. Dos o tres párrafos propios (qué incluye, cómo elegir, para quién) la vuelven una página con criterio. Si no hay nada que decir, esa colección no debería ser una landing.
Lo que copias del fabricante ya está indexado
Si la mayor parte del catálogo usa el texto del proveedor, Google ya lo leyó en otras tiendas. Reescribir los veinte productos que venden rinde más que reescribir los cuatrocientos.
Contenido duplicado: los tres focos que sí importan
Una aclaración: que un producto aparezca en seis colecciones no duplica nada, sigue siendo una URL. El duplicado aparece cuando la misma rejilla existe en varias. El marco general está en contenido copiado y scraping.
Colecciones que listan los mismos productos
La colección virtual all, las automáticas por etiqueta, tipo o proveedor y las de "destacados" de una app compiten por la misma consulta. Deja indexadas las que tienen intención de búsqueda y contenido propio; el resto se consolida con canonical o se queda fuera del índice.
Parámetros: variantes, filtros y orden
?variant=, ?sort_by=, ?page= y los filtros por etiqueta generan combinaciones sin fin. Google da criterio para la navegación facetada: si esas URLs no deben indexarse, robots.txt para impedir el rastreo; si deben rastrearse pero no competir, canonical hacia la versión limpia. Lo desarrollamos en navegación facetada y SEO.
Handles: cambiar la URL rompe lo que posicionaba
Al renombrar un producto o una colección, Shopify cambia la URL y la vieja muere. Antes de tocar el handle, crea la redirección 301 desde URL redirects del admin. Es el error que más tráfico tira en una tienda que ya vende, el mismo argumento de URLs amigables y slugs.
Paginación y canonical: cada página con su URL
La guía de Google es explícita y contraintuitiva: cada página de una secuencia paginada debe tener su propia URL canónica y la página 2 no se canonicaliza hacia la 1. Tampoco se pone noindex en las páginas 2, 3 y 4. Si el tema canonicaliza todo hacia la primera, le pides a Google que ignore el resto del catálogo.
Se comprueba en dos minutos: abre /collections/tu-coleccion?page=2, mira el link rel="canonical" y confirma que apunta a sí misma; con una app de SEO encima puede estar mal. Y la paginación se descubre por etiquetas a reales, no por JavaScript: un "cargar más" sin enlaces deja productos fuera.
robots.txt: qué bloquea Shopify y cuándo tocarlo
El archivo generado ya bloquea lo que debe: /admin, /cart, /checkout, /orders, /account y el gestor de píxeles.
Se puede reemplazar con un robots.txt.liquid en la carpeta Templates del tema, pero sustituye por completo la salida generada: guarda una copia del archivo actual antes de publicar. Solo admite los objetos Liquid robots, group, rule, user_agent, sitemap y request, según la documentación de Shopify.
Lo que no se hace: bloquear CSS o JavaScript (rompe el renderizado) ni ?page= (saca productos del índice). Los principios están en cómo crear un robots.txt correcto. Si generas sitemaps propios, se declaran con una línea Sitemap: en el mismo template.
El sitemap: qué contiene el tuyo
Shopify publica un índice en /sitemap.xml que encadena sub-sitemaps de productos, colecciones, páginas, blogs y artículos; en tiendas grandes los productos van en bloques con ?from= y ?to=. No se edita a mano. Envíalo en Search Console: muchas tiendas nunca lo hicieron.
Novedad: el índice incluye hoy un sitemap_agentic_discovery.xml que apunta a /agents.md. Si el archivo da 404, casi siempre es un dominio mal configurado. Límites y formatos, en sitemap index y límites.
Marcado de producto: qué emite tu tema y qué le falta
Dawn imprime product | structured_data dentro de un script type="application/ld+json". Ese filtro de Liquid emite Product si el producto no tiene variantes y ProductGroup si tiene una o más:
{
"@context": "https://schema.org",
"@type": "ProductGroup",
"name": "Camiseta básica",
"brand": { "@type": "Brand", "name": "Tu marca" },
"description": "",
"category": "",
"hasVariant": [ "..." ],
"offers": { "@type": "Offer", "priceCurrency": "EUR", "availability": "..." }
}
Fíjate en el detalle: si el producto no tiene descripción ni categoría, el JSON-LD sale con "description":"" y "category":"". Marcado válido pero vacío, que no le dice nada a Google. Para la ficha de comerciante, Google pide un Offer anidado con precio decimal y priceCurrency; con variantes, ProductGroup con variesBy, hasVariant y productGroupID.
Lo que Shopify no añade: envío y devoluciones
El filtro no emite shippingDetails ni hasMerchantReturnPolicy, las propiedades que habilitan las anotaciones de envío gratis y devoluciones. Se añaden por metafields o app.
Cómo verificar sin fe (y sin duplicar)
Pega la URL del producto en el Rich Results Test y mira si detecta Product o ProductGroup y qué avisos salen; un tema antiguo puede no emitir nada, y entonces hay que añadir el marcado. Ojo con el duplicado: una app de reseñas que añade su AggregateRating genera dos bloques contradictorios. Un solo bloque por producto y una sola fuente de reseñas.
Mercados e idiomas: hreflang automático (y cuándo apagarlo)
Con Shopify Markets, Shopify añade los hreflang solo, vía el objeto content_for_header, y los alinea con el canonical de cada página, como explica la guía de hreflang de Shopify. Se apagan en Tienda online, Preferencias, "Etiquetas hreflang automáticas".
Cuándo hacerlo: si el tema o una app ya emiten los suyos. Dos fuentes a la vez producen anotaciones duplicadas o contradictorias, y eso resta. Si los escribes a mano, genéralos desde el objeto localization, nunca con handles fijos: el handle cambia según el idioma.
La capa nueva: agents.md, llms.txt y UCP
Una tienda Shopify estándar ya sirve /agents.md, el mismo documento en /llms.txt y /llms-full.txt, y un /.well-known/ucp con la versión del protocolo y el endpoint MCP del checkout. El agents.md explica a un agente cómo comprar: catálogo, carrito y checkout acelerado.
¿Qué controlas de eso? Poco: casi todo sale de los datos de la tienda. La traducción práctica es que el SEO que mueve esto es el de siempre: fichas completas, precios y stock correctos, políticas escritas y categorías coherentes. Ni agents.md ni llms.txt son factor de posicionamiento en Google; son la puerta de otros agentes, como contamos en llms.txt y SEO y en preparar tu web para agentes de IA.
Checklist de ocho puntos
- Sitemap enviado en Search Console.
- Títulos y descripciones propios en las veinte páginas con tráfico.
- Texto real en las colecciones que quieres posicionar.
- Canonical de la página 2 comprobado.
- Filtros y
?sort_by=decididos: rastrear o consolidar, no ambos. - Redirecciones 301 antes de tocar un handle.
- Rich Results Test sobre un producto con variantes.
- Core Web Vitals en móvil, con LCP y el peso de las imágenes en WebP y AVIF.
En Shopify el SEO se gana decidiendo qué URLs merecen existir y llenando las que quedan.