Ejemplo de schema Product para Shopify de ropa
Ejemplos JSON-LD Product y ProductGroup listos para copiar para Shopify de ropa — cubre variantes de talla y color, offers, breadcrumbs, y las reglas AggregateRating que deciden si los motores IA realmente citan tu página de producto.
Las páginas de producto de ropa en Shopify reciben citas de motores IA
shopping según la precisión con la que el JSON-LD describe el paisaje
de variantes. Un comprador preguntando «camisa de lino que talla bien
en mediano» en ChatGPT, Perplexity o Gemini necesita que la IA
reconozca que la variante específica existe, está en stock, tiene
precio, y está descrita distintamente de las hermanas L y XL. El schema
genérico Product sin detalle de variante fuerza a la IA a adivinar;
ProductGroup con hasVariant le da los datos para citar con
confianza.
Este ejemplo entrega dos bloques JSON-LD listos para copiar: un
ProductGroup para la matriz de variantes, y un BreadcrumbList para
contexto de categoría. Ambos están calibrados para pasar Google Rich
Results Test limpiamente y para reflejar el contenido visible (la regla
que los motores IA realmente aplican en la práctica).
Cuándo usar Product vs ProductGroup
| Caso de uso | Schema | Por qué |
|---|---|---|
| Item de SKU único (una talla, un color) | Product | Sin matriz de variantes — añadir ProductGroup es overkill. |
| Ropa con variantes solo de talla | ProductGroup + variesBy: size | Las queries IA shopping están condicionadas por talla. |
| Ropa con variantes solo de color | ProductGroup + variesBy: color | Las queries IA están condicionadas por color. |
| Ropa con matriz talla × color | ProductGroup + ambos variesBy | Producto cartesiano de variantes; cada hasVariant es el SKU único. |
| Bundle / kit (múltiples padres) | Product por item + isRelatedTo custom | ProductGroup describe variantes de un producto, no bundles multi-producto. |
Los templates Liquid por defecto de Shopify emiten Product sin
importar el conteo de variantes. El upgrade a ProductGroup para
cualquier tienda de ropa con múltiples tallas es una edición de tema
única (o una app Shopify que lo maneja automáticamente); el lift de
citación IA shopping vale el esfuerzo.
ProductGroup JSON-LD (ropa con variantes)
Pegar en un template de página de producto, reemplazando los valores
placeholder. El ejemplo muestra un subconjunto de 2 variantes; en
producción tendrás una entrada hasVariant por SKU real.
{
"@context": "https://schema.org",
"@type": "ProductGroup",
"name": "Linen Relaxed Shirt",
"description": "A breathable linen shirt in three colors, sizes XS–XL. 100% European linen, pre-washed for softness.",
"brand": {
"@type": "Brand",
"name": "Example Apparel"
},
"productGroupID": "linen-shirt-001",
"variesBy": ["https://schema.org/size", "https://schema.org/color"],
"hasVariant": [
{
"@type": "Product",
"sku": "LINEN-SHIRT-WHITE-M",
"name": "Linen Relaxed Shirt — White / M",
"color": "White",
"size": "M",
"material": "Linen",
"image": "https://example.com/products/linen-shirt-white.jpg",
"offers": {
"@type": "Offer",
"url": "https://example.com/products/linen-shirt?variant=white-m",
"priceCurrency": "USD",
"price": "79.00",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
},
{
"@type": "Product",
"sku": "LINEN-SHIRT-BLACK-S",
"name": "Linen Relaxed Shirt — Black / S",
"color": "Black",
"size": "S",
"material": "Linen",
"image": "https://example.com/products/linen-shirt-black.jpg",
"offers": {
"@type": "Offer",
"url": "https://example.com/products/linen-shirt?variant=black-s",
"priceCurrency": "USD",
"price": "79.00",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
}
]
} BreadcrumbList JSON-LD
Empareja el ProductGroup con un BreadcrumbList para que los motores
IA entiendan la jerarquía de categoría donde vive tu producto. Las URLs
del breadcrumb deben coincidir exactamente con el breadcrumb visible.
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Shirts",
"item": "https://example.com/collections/shirts"
},
{
"@type": "ListItem",
"position": 3,
"name": "Linen Relaxed Shirt",
"item": "https://example.com/products/linen-shirt"
}
]
} Errores comunes (por frecuencia)
-
Marcar variantes que no son visibles ni seleccionables en la página. El schema debe reflejar la realidad visible. Si tu página solo muestra S / M / L pero el JSON-LD declara XS a XXL, los motores IA acabarán intentando citar una variante 404 y penalizarán la tienda.
-
Usar AggregateRating sin widget de reviews. O bien mostrar las reviews visiblemente (app Shopify Reviews), o eliminar el campo schema. No fabricar.
-
Inconsistencia de currency, precio o disponibilidad entre schema y página visible. Comprador ve
$79pero schema declara89.00— los motores IA toman el número del schema, lo citan, y el comprador se siente engañado. Peor: Google flaca el schema como no confiable. -
Reusar el mismo
skuentre variantes. Shopify genera SKUs únicos pero los merchants los sobrescriben a menudo. SKUs duplicados enhasVarianthacen que los motores IA fusionen variantes incorrectamente. -
Mezclar
ProductGroupyProductde modo que los nombres específicos de variante se pierden. Si emites ambos para el mismo item, asegúrate de que la instanciaProductes el padre (sin detalle de variante) yProductGroup.hasVariantcontiene las variantes. No emitasProductpara cada variante fuera del grupo. -
Añadir claims médicos o no soportados a las descripciones de ropa. «Correctora de postura» / «mejora la circulación» / «tela antibacteriana previene enfermedades» — son claims regulados en la mayoría de mercados y disparan penalización IA incluso si legalmente están bien. Quédate con descripciones de fit y material.
-
Apuntar URLs del schema a URLs de variante no canónicas. Si la página usa una URL canónica del producto (p.ej.
/products/linen-shirt) y las variantes se seleccionan por query-param (?variant=white-m),hasVariant[].offers.urldebe seguir apuntando a la URL específica de la variante — ahí es donde compradores (y agentes IA) aterrizan.
Cómo verificar
- Pega la URL del producto desplegada en
Google Rich Results Test
. Los items Product y BreadcrumbList deben validar. - Pasa el checklist de validación arriba campo por campo.
- Abre la página en una ventana incógnita y verifica que H1 del producto visible, precio, disponibilidad y breadcrumb coincidan todos con lo que declara el schema.
- Re-ejecuta el generador de Schema si cambias la estructura del producto (nuevo color, talla retirada) y redespliega.
El JSON-LD es una señal en el stack IA shopping. Empareja con la plantilla llms.txt moda para el lado de mapa de contenido, y verifica con el Analizador Robots que GPTBot pueda alcanzar la página de producto.
Lista de validación
El nombre del producto en el schema coincide con el H1 visible
El campo `name` del ProductGroup coincide exactamente con el H1 de la página de producto (mayúsculas + puntuación). Los motores IA penalizan los desajustes como señal de baja confianza.
Cada variante tiene un SKU único
No hay dos valores `hasVariant[].sku` que colisionen. Shopify auto-genera SKUs pero los merchants suelen sobrescribirlos — SKUs duplicados en el schema hacen que los motores IA fusionen variantes incorrectamente.
Los nombres de variante identifican talla / color / material
Cada `hasVariant[].name` se lee como un label real de producto (p.ej. «Linen Relaxed Shirt — White / M»), no un placeholder. Las respuestas IA shopping citan este campo directamente.
productGroupID estable entre despliegues
El `productGroupID` debe ser un identificador interno estable (Shopify product GID o slug propio), no un UUID aleatorio de build-time. Los motores IA lo usan para deduplicar el mismo producto entre recargas.
Cada Offer tiene currency + price + availability + URL
El bloque `offers` de cada variante tiene `priceCurrency`, `price`, `availability` y `url`. La currency ausente es la razón #1 por la que Google Rich Results Test degrada un resultado Product.
AggregateRating solo presente si reviews reales son visibles
Si emites `aggregateRating`, la misma calificación + nº de reseñas debe ser visible en la página. Los motores IA comparan schema con contenido visible; ratings fabricados disparan downweighting.
BreadcrumbList coincide con el breadcrumb visible
La cadena de URLs `itemListElement` coincide exactamente con el breadcrumb visible (mismo path, mismas etiquetas). Las discrepancias confunden a los motores IA que usan contexto de breadcrumb para entender categorías.
Rich Results Test no devuelve errores críticos
Tras desplegar, pega la URL del producto en https://search.google.com/test/rich-results — los items Product y BreadcrumbList deben validar sin errores críticos.
Abrir en el generador de Schema
Prerrellenado con placeholders de ropa para nombre, descripción, marca, precio, disponibilidad y ratings. Reemplaza placeholders con tus datos reales y descarga un bloque JSON-LD listo para Shopify.
Preguntas frecuentes
¿Un producto Shopify de ropa debe usar Product o ProductGroup?
Usa `Product` para un item simple sin variantes. Usa `ProductGroup` cuando existan variantes de talla, color o material — permite a los motores IA citar la variante correcta para una query específica («camisa de lino en talla M») en vez de mezclarlas. Los templates Liquid por defecto de Shopify solo emiten `Product`; el upgrade a `ProductGroup` es manual pero vale la pena para cualquier tienda de ropa con múltiples tallas.
¿Se puede emitir AggregateRating sin reviews visibles en la página?
No. El schema debe reflejar contenido visible. Si emites `aggregateRating: 4.7 from 32 reviews` pero la página no tiene widget de reseñas, los motores IA y Google flaquean eso como no confiable. O bien renderiza las reviews visiblemente (apps Shopify como Judge.me o Shopify Reviews nativo), o elimina el campo schema por completo.
¿Cada variante de color debe ser una entrada hasVariant separada?
Sí cuando la variante tiene SKU, color, talla, imagen, precio o disponibilidad distintos. Los motores IA shopping respondiendo «¿está la camisa negra de lino aún en stock?» necesitan que cada variante sea un nodo Product direccionable separadamente con su propio `offers.availability`. Solo color → un `hasVariant` por color; solo talla → uno por talla; talla+color → producto cartesiano.
¿El schema ProductGroup reemplaza los feeds de producto de Shopify?
No. El JSON-LD en la página complementa los feeds (el auto-generado `/products.json` de Shopify, Google Merchant feed, Meta Catalog). Los motores IA shopping crawlean páginas directamente *y* leen feeds — ambos señales importan. No abandones uno por otro.
Recursos relacionados
Plantilla llms.txt Shopify moda
Empareja este schema Product con un mapa de contenido llms.txt — ambos señales trabajan juntos para citación IA shopping.
Plantilla llms.txt Shopify belleza
Vertical hermana — los mismos principios JSON-LD aplican al schema Product de belleza, pero con campos de contexto de ingredientes en vez de talla/color.
Plantilla llms.txt Shopify electrónica
Vertical hermana — para electrónica usar ProductGroup con campos de número de modelo + compatibilidad en vez de variantes talla/color.
Shopify AI Visibility Optimizer
El stack completo de visibilidad IA — schema, mapa de contenido, política crawler, monitoreo de citas.
llms.txt para Shopify — guía completa
Contexto sobre la señal de mapa-de-contenido que se empareja con la señal schema en este ejemplo.