ProductGroup structured data

The Citead team, updated

In short. ProductGroup connects Product variants to shared properties and identifies the dimensions, such as size or color, that distinguish them.

Definition: ProductGroup structured data describes a family of products that differ along specified dimensions, such as size or color. It records shared properties at group level and connects the individual Product variants to that group.

Key facts

  • As of 17 October 2026, Google's product variant documentation supports ProductGroup markup for eligibility to display variant information in merchant listing experiences.
  • Schema.org's ProductGroup definition describes the group as a template for shared characteristics; its individual variants are the products offered for sale.
  • Google's Product overview states that both product snippets and merchant listings support product variants.

How are variants and shared properties connected?

Schema.org defines ProductGroup as products varying only in specified ways. The hasVariant property connects the group to its members. In the reverse direction, isVariantOf connects a Product to its parent group.

In Google's nested coat example, the group contains a shared brand, material, pattern, and audience. Each Product has a more specific name and description. Its offer carries the variant's price and availability. Brand information already supplied at group level need not be repeated on each Product.

The same documentation uses variesBy to name the dimensions that distinguish variants. Google supports color, size, suggested age, suggested gender, material, and pattern, expressed through their full Schema.org URLs. Each variant needs a unique identifier, such as sku, a merchant's stock keeping unit. The group also needs a unique identifier: productGroupID on the group or inProductGroupWithID on the variants. When both are supplied, their values must match.

What does the markup look like?

This abbreviated structured data excerpt follows Google's single-page coat example. The excerpt shows grouping and shared properties; the complete example also supplies variant images, descriptions, and offers.

{
  "@context": "https://schema.org/",
  "@type": "ProductGroup",
  "name": "Wool winter coat",
  "brand": {
    "@type": "Brand",
    "name": "Good brand"
  },
  "productGroupID": "44E01",
  "material": "wool",
  "variesBy": [
    "https://schema.org/size",
    "https://schema.org/color"
  ],
  "hasVariant": [
    {
      "@type": "Product",
      "sku": "44E01-M11000",
      "name": "Small green coat",
      "color": "Green",
      "size": "small"
    },
    {
      "@type": "Product",
      "sku": "44E01-K11000",
      "name": "Small light blue coat",
      "color": "light blue",
      "size": "small"
    }
  ]
}

How does the page structure change implementation?

Google's technical guidelines require a distinct URL that directly preselects each variant. Opening that URL must show the corresponding image, price, and availability and allow that variant to be added to the cart.

A single-page store, where variant selection updates the page without reloading it, uses one canonical URL for the overall group. Google's canonicalization documentation explains how to signal a preferred URL for duplicate or similar pages. The variant example uses a base product URL without a preselected variant.

For a multi-page store, the same documentation requires self-contained markup on each page. Its example repeats the full ProductGroup definition, including shared attributes, on each variant page. There is no single canonical URL representing that distributed group.

How is the implementation checked?

Google's implementation steps call for the Rich Results Test to identify critical markup errors, followed by URL Inspection to check how Google sees deployed pages. Product markup must also satisfy the relevant merchant listing or product snippet requirements. Checks therefore cover both the group relationships and the individual Product data.

FAQ

Can I describe unrelated products as one ProductGroup?

Schema.org's definition describes a group whose members vary only in well-described ways, such as size or color. Use those dimensions to describe variants of the same product family.

Must I nest every variant inside the group?

Google's examples also show separate Product entities connected to the group with isVariantOf and an @id reference. This structure accommodates content management systems that produce separate entities.

Does ProductGroup replace Product markup?

The same Google documentation requires Product structured data alongside variant properties, following the applicable product snippet or merchant listing requirements.

Sources

  1. Google Search Central, "Product variant structured data (ProductGroup, Product)", updated 8 September 2026
  2. Schema.org, "ProductGroup", undated
  3. Google Search Central, "Introduction to Product structured data", updated 10 December 2025
  4. Google Search Central, "How to specify a canonical URL with rel="canonical" and other methods", updated 10 July 2026

Check how a page reads to answer engines. Open the GEO score analyzer

Test a page and see what to fix first

The analysis usually takes less than 10 seconds and needs no account.

400,000+ pages scored in the public benchmark