# ProductGroup: el schema de las variantes de producto

> Qué es ProductGroup en Schema.org, qué propiedades pide Google, cómo se marca en una ficha única o en una página por variante y cómo revisar el tuyo.

URL: https://clione.ai/es/glosario/productgroup/
Lang: es

Una camisa que se vende en dos colores y tres tallas son seis cosas que se pueden comprar, y una sola idea de producto: la camisa. En el marcado, cada una de las seis es un [Product](/es/glosario/schema-product/) y la idea que las reúne es un ProductGroup. Es un tipo de [Schema.org](/es/glosario/schema-org/) y se escribe en inglés porque es un nombre del vocabulario. **El ProductGroup no se vende: es el padre que dice qué tienen en común las variantes y en qué se diferencian.** Te importa porque es la forma que tiene Google de entender que seis [fichas de producto](/es/glosario/ficha-de-producto/), o seis opciones dentro de una sola, son el mismo artículo y no seis productos que compiten entre sí. Lo que es una variante en tu catálogo, y cuándo una talla o un pack lo son, lo explica la entrada de [variantes de producto](/es/glosario/variantes-de-producto/); aquí va el tipo que las describe en los [datos estructurados](/es/glosario/datos-estructurados/).

## Cómo funciona

Schema.org define ProductGroup como un grupo de productos que solo varían en aspectos bien descritos, como la talla, el color o el material, y lo cuelga de Product: es un tipo de producto. Añade una precisión que explica su diseño: **el grupo en sí no se ofrece a la venta, pero las variantes que representa sí**. Funciona como un prototipo o una plantilla, y las propiedades que se ponen en el grupo representan características que comparten todas sus variantes, salvo tres que solo son del grupo: `variesBy`, `hasVariant` y `url`.[^schema-org-productgroup]

Sus propiedades propias son tres. `hasVariant` apunta a cada variante, y su inversa, `isVariantOf`, permite que la variante apunte al grupo. `productGroupID` es un identificador de texto para el grupo. `variesBy` dice en qué propiedades varían las variantes, por ejemplo la talla o el color.[^schema-org-productgroup]

Google añadió su documentación de variantes el 20 de febrero de 2024, junto con la propiedad `isVariantOf` en la de producto, y aclaró entonces que admite variantes con URL distintas.[^google-updates] Según esa documentación, el marcado de variantes **hace que tus productos puedan mostrarse con la información de sus variantes** en las experiencias de [fichas de comerciante](/es/glosario/fichas-de-comerciante/), y poner en el grupo lo común, como la marca o las reseñas, reduce la información repetida.[^google-product-variants] Lo que pide del grupo:

| Propiedad                                           | Qué dice Google                                                                                                                                                             |
| --------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`                                              | Obligatoria. El nombre del grupo, como «Abrigo de lana», y en cada variante uno más concreto, como «Abrigo de lana, verde, talla S»                                         |
| `productGroupID`                                    | Recomendada. El identificador del grupo, también llamado [SKU](/es/glosario/sku/) padre. Si también lo das en cada variante con `inProductGroupWithID`, tiene que coincidir |
| `variesBy`                                          | Recomendada. Las propiedades que diferencian las variantes, con su URL completa de Schema.org: color, talla, edad recomendada, sexo recomendado, material y patrón          |
| `hasVariant`                                        | Recomendada. Cada variante como un Product anidado; o, al revés, cada variante apunta al grupo con `isVariantOf`                                                            |
| `brand`, `description`, `review`, `aggregateRating` | Recomendadas cuando son iguales para todas las variantes. La marca puesta en el grupo no hace falta repetirla en cada una                                                   |
| `url`                                               | Solo en tiendas de una única página: la URL del grupo sin ninguna variante elegida                                                                                          |

Tabla según la documentación de variantes de Google.[^google-product-variants] Desde el 20 de mayo de 2026, esa documentación incluye además `hasAdultConsideration`, para marcar productos de contenido adulto.[^google-updates]

Google distingue **dos diseños de tienda**. En el de una sola página, todas las variantes se eligen sin recargar, normalmente con parámetros en la URL, y el grupo tiene una única URL [canonical](/es/glosario/canonical/), la que no lleva ninguna variante preseleccionada. En el de varias páginas, cada variante o cada color tiene su página; entonces no hay una URL que represente al grupo, y **la definición completa del grupo se repite en cada página**, porque tiene que llevar lo común a todas. Cada página lleva el marcado completo de sus propias variantes y, para las de otras páginas, una variante que solo lleva `url`, para que Google pueda encontrarlas.[^google-product-variants] En los dos diseños, las variantes pueden ir anidadas dentro del grupo o por separado; Google recomienda anidarlas en una página única porque es la representación más compacta y natural, y admite las otras porque algunos gestores de contenido las generan con más facilidad.[^google-product-variants]

Y dos condiciones técnicas que deciden si el marcado sirve. **Cada variante necesita un identificador único**, con `sku` o `gtin` ([GTIN](/es/glosario/gtin/)), y cada grupo el suyo. Y la tienda tiene que poder abrir cada variante ya seleccionada desde una URL propia, con la imagen, el precio y la disponibilidad de esa variante y la opción de añadirla al carrito, para que Google pueda rastrearla e identificarla.[^google-product-variants]

## En una tienda

**Ejemplo ficticio.** Una tienda inventada tiene una página por color de su camisa de lino, y la talla se elige en cada página con un parámetro. Este es el marcado de la página azul, recortado: el grupo completo, sus dos variantes azules y una variante con solo la URL de la página blanca. La página blanca repetiría el mismo grupo con sus variantes blancas y un enlace de vuelta a las azules.

```json
{
  "@context": "https://schema.org",
  "@type": "ProductGroup",
  "name": "Camisa de lino Calella",
  "description": "Camisa de lino de manga larga, corte recto.",
  "brand": { "@type": "Brand", "name": "Calella" },
  "productGroupID": "CAL-LINO",
  "variesBy": ["https://schema.org/color", "https://schema.org/size"],
  "hasVariant": [
    {
      "@type": "Product",
      "sku": "CAL-LINO-AZ-M",
      "name": "Camisa de lino Calella, azul, M",
      "color": "Azul",
      "size": "M",
      "offers": {
        "@type": "Offer",
        "url": "https://www.example.com/camisa-lino/azul?talla=m",
        "price": "39.90",
        "priceCurrency": "EUR",
        "availability": "https://schema.org/InStock"
      }
    },
    {
      "@type": "Product",
      "sku": "CAL-LINO-AZ-L",
      "name": "Camisa de lino Calella, azul, L",
      "color": "Azul",
      "size": "L",
      "offers": {
        "@type": "Offer",
        "url": "https://www.example.com/camisa-lino/azul?talla=l",
        "price": "39.90",
        "priceCurrency": "EUR",
        "availability": "https://schema.org/InStock"
      }
    },
    { "url": "https://www.example.com/camisa-lino/blanca?talla=m" }
  ]
}
```

Tres cosas que se leen en él. El grupo no lleva `url`, porque en una tienda de varias páginas no tiene una propia. La marca y la descripción general van una vez, en el grupo, y valen para todas las variantes. Y el precio va en la oferta de cada variante, nunca en el grupo, porque el grupo no se vende.


Poner el precio y la disponibilidad en el ProductGroup, como si fuera el producto que se compra. Schema.org es explícito: el grupo no se ofrece a la venta, lo que se vende son sus variantes.[^schema-org-productgroup] La oferta va dentro de cada variante, con su precio y sus existencias, y el grupo se queda con lo que no cambia.


## Cómo comprobarlo

1. **Abre el código fuente de una ficha con variantes** y busca `"@type": "ProductGroup"`. Comprueba que tiene `name`, `variesBy` y `productGroupID`, y que cada variante tiene su `sku` o su `gtin` sin repetirse.[^google-product-variants]
2. **Si hay `inProductGroupWithID` en las variantes**, comprueba que coincide con el `productGroupID` del grupo.[^google-product-variants]
3. **Abre la URL de cada variante en una ventana privada** y mira si la página carga con esa variante elegida: su imagen, su precio, su disponibilidad y el botón de compra activo.[^google-product-variants]
4. **Si tu tienda tiene una página por variante o por color**, abre dos y comprueba que las dos llevan el grupo completo y un enlace a las variantes de la otra.[^google-product-variants]
5. **Comprueba qué [resultados enriquecidos](/es/glosario/resultados-enriquecidos/) ve Google**: pasa la URL por la [Prueba de resultados enriquecidos](/es/glosario/prueba-de-resultados-enriquecidos/) y mira si encuentra las variantes y con qué errores o advertencias.

## Concepto cercano: variantes de producto

Las variantes de producto son una idea del catálogo y ProductGroup es su descripción en el marcado. **Las variantes viven en tu plataforma, con sus opciones, su inventario y sus códigos; ProductGroup es cómo se las cuentas a un buscador.** Lo primero se decide al dar de alta el producto, y lo segundo tiene que reflejarlo sin inventar nada: si la tienda vende nueve combinaciones, el grupo enlaza nueve variantes. La entrada de [variantes de producto](/es/glosario/variantes-de-producto/) explica cómo se modelan en las plataformas y en [Google Merchant Center](/es/glosario/google-merchant-center/), y dónde termina una variante y empieza otro producto.

Para seguir, la [ruta de lectura de datos estructurados](/es/aprender/datos-estructurados/) ordena el resto de términos, y la entrada de [Offer](/es/glosario/schema-offer/) explica qué lleva la oferta de cada variante.
