Hướng dẫn về ProductGroup Schema

Cách dùng ProductGroup schema để group sản phẩm variants (size, color, material) với hasVariant, variesBy, và productGroupID — plus đó item_group_id khác biệt và vì sao Bing không hỗ trợ điều này.

Xuất bản lần đầu: 27 thg 6, 2026 · Cập nhật lần cuối: 8 thg 8, 2026 · Advanced
Ngôn ngữ

ProductGroup schema wraps một set of Sản phẩm variants — một shirt sizes và colors — dưới một parent so Google understands họ là options of đó giống nhau item, không tách biệt các sản phẩm. đây là additive: mỗi variant là vẫn một đầy đủ Sản phẩm với của nó own sku/gtin, price, và availability, và ProductGroup ties them together với hasVariant (nested, single-trang các trang), variesBy (mà các thuộc tính differ), và productGroupID (đó parent sku). Đó single hầu hết phổ biến mistake là writing variesBy as đơn giản strings — điều này phải dùng đầy đủ schema.org URLs như https://schema.org/color; trong my kiểm thử đó JSON-LD vẫn validates nhưng đó grouping không trigger (Google không document đó chế độ lỗi, so verify điều này yourself). Hai hơn traps: productGroupID (on-trang schema) không phải Merchant Center item_group_id (một sản phẩm-feed thuộc tính) — tách biệt các hệ thống, không có gì auto-syncs them, so dùng matching các giá trị có chủ ý; và Bing không consume ProductGroup markup tại all (theo Microsoft Fabrice Canel, Sept 2024, một reported statement, không một Microsoft doc). My rule với all schema holds ở đây: implement điều này vì điều này earns bạn một tìm kiếm feature, không vì hơn markup là tự động tốt hơn — điều này aids understanding và merchant-listing eligibility, điều này không làm một variant xếp hạng.

TL;DR — ProductGroup (Google Feb 2024 addition) wraps variant Product objects dưới một parent so Google understands “same item, different options.” (bản dịch) «giống nhau item, khác nhau options.» đây là additive — mỗi variant giữ đầy đủ Product markup (sku/gtin, offers, image, availability). Link them với hasVariant (nested, single-trang các trang) hoặc isVariantOf + inProductGroupWithID (flat, multi-trang các trang); declare đó varying axes với variesBy — mà phải dùng đầy đủ schema.org URLs (https://schema.org/color), không đơn giản strings (đó #1 implementation mistake — validates either way, nhưng grouping âm thầm sẽ không trigger trong thực tế, mà không một được ghi lại Google behavior); và share một productGroupID (đơn giản text parent sku, không một URL). productGroupIDkhông Merchant Center item_group_id — tách biệt các hệ thống, không có gì auto-syncs them, so dùng matching các giá trị on purpose. Chỉ name là strictly bắt buộc. Và Bing không consume ProductGroup tại all (Fabrice Canel, Sept 2024). Schema aids understanding và merchant-listing eligibility — điều này không một xếp hạng factor.

nơi điều này sits

Đây là schema-implementation deep dive — đầy đủ JSON-LD, thuộc tính-by-thuộc tính reference, Merchant Center reconciliation, và khắc phục sự cố. upstream strategy câu hỏi — nên được cho variant nhận của nó own indexable URL tại all, và Cách làm Shopify/WooCommerce/BigCommerce/Magento differ — là của nó own topic (sản phẩm variant SEO). điều này bài viết assumes bạn’ve đã làm những điều đó calls và hiện tại cần markup right. nó cũng sits dưới rộng hơn schema markup và dữ liệu có cấu trúc hubs, và nó sibling của Sản phẩm schema (cho single, non-varying item, đơn giản Product là all bạn cần — ProductGroup là cho family của variants).

Vì sao ProductGroup tồn tại

Google own cách diễn đạt: “To help Google better understand which products are variations of the same parent product, use the ProductGroup class with associated properties variesBy, hasVariant, and productGroupID to group such variants together.” (bản dịch) «Để help Google tốt hơn understand mà các sản phẩm là variations of đó giống nhau parent sản phẩm, dùng đó ProductGroup class với associated properties variesBy, hasVariant, và productGroupID để group such variants together.» Đó motivating categories là chính xác điều gì bạn’d expect — “apparel, shoes, furniture, electronic devices, and luggage… sold in different variations (for example various sizes, colors, materials, or patterns).” (bản dịch) «apparel, shoes, furniture, electronic devices, và luggage… sold trong khác nhau variations (ví dụ various sizes, colors, materials, hoặc patterns).»

Evidence for this claim Google documents ProductGroup relationships including variesBy, hasVariant, productGroupID, and inverse variant references. Scope: Google Search product-variant requirements; use the pattern matching the site's URL architecture. Confidence: high · Verified: Google: Product variants

Đó payoff là eligibility, không xếp hạng: “Adding this markup also makes your products eligible for display with variant information in merchant listing experiences.” (bản dịch) «Thêm này markup cũng làm của bạn các sản phẩm eligible cho display với variant information trong merchant listing experiences.» Giống nhau caveat đó áp dụng để all dữ liệu có cấu trúc — điều này aids understanding và rich-kết quả eligibility, điều này không move bạn lên đó kết quả.

nó additive — Đây là mental model đó ngăn phần lớn mistakes

ProductGroup wraps Product; nó không replace nó. ProductGroup object itself không phải offered cho sale — nó có không single price, vì “đó coat” costs khác amounts depending on mà variant bạn buy. mỗi variant vẫn đầy đủ Product với của nó own sku/gtin, image, offers, và availability. nếu bạn tìm yourself trying để put single offers/price on ProductGroup, dừng — đó tell đó bạn’ve confused wrapper cho điều là sold.

Evidence for this claim ProductGroup groups variant Product entities; it does not replace the Product data required for individual variants. Scope: Google Search product-variant guidance; each purchasable variant retains its relevant Product and Offer data. Confidence: high · Verified: Google: Product variants

three cốt lõi properties

ProductGroup adds the parent relationship; it never replaces the Product markup on each sellable variant. Nguồn: Patrick Stox

A ProductGroup named Wool winter coat declares productGroupID 44E01 and variesBy values using full schema.org URLs for color and size. It connects to green small, green large, and blue small Product variants. Every variant keeps a unique SKU, Offer, image, and availability. The connection can use hasVariant in a nested model or isVariantOf in a flat model.

© Patrick Stox LLC · CC BY 4.0 ·

hasVariant (và isVariantOf)

hasVariant“a nested Product property that is one of the variants of the ProductGroup property… A ProductGroup typically has multiple nested variant Product properties.” (bản dịch) «một nested Sản phẩm thuộc tính đó là một of đó variants of đó ProductGroup thuộc tính… MỘT ProductGroup typically có multiple nested variant Sản phẩm properties.» Bạn put của bạn variant Product objects bên trong đó group.

Đó inverse cũng tồn tại: “a variant Product property can reference back to its parent ProductGroup using the isVariantOf property on the Product property.” (bản dịch) «một variant Sản phẩm thuộc tính có thể reference lại để của nó parent ProductGroup dùng đó isVariantOf thuộc tính on đó Sản phẩm thuộc tính.» Mà một bạn dùng phụ thuộc vào trang web của bạn URL structure (tiếp theo section).

variesBy — đầy đủ schema.org các URL, không đơn giản strings

variesBy declares “aspects by which the variants in the ProductGroup vary (for example, size or color).” (bản dịch) «aspects by mà đó variants trong đó ProductGroup vary (ví dụ, size hoặc color).» Đó cốt yếu detail, verbatim từ Google properties bảng: “Reference these variant-identifying properties through their full Schema.org URL.” (bản dịch) «Reference những variant-identifying properties qua của họ đầy đủ Schema.org URL.»

đó có nghĩ là:

"variesBy": ["https://schema.org/size", "https://schema.org/color"]

không "variesBy": ["size", "color"]. Đây là single phần lớn phổ biến implementation mistake trong điều này đểàn bộ topic. Điều gì được ghi lại: Google thuộc tính bảng requires đầy đủ URL form — không có gì nhiều hơn cụ thể hơn đó. Điều gì không được ghi lại: Google không publish Điều gì happens nếu bạn skip nó. Trong my own kiểm thử và consistent với khác practitioners’ các báo cáo, JSON-LD vẫn truyền syntax validation và không có gì các lỗi out, nhưng enhanced grouping behavior không trigger — treat đó as strongly observed pattern, không chính thức Google statement, và verify nó so với của bạn own markup thay vì taking nó as gospel.

supported dimensions là https://schema.org/color, https://schema.org/size, https://schema.org/suggestedAge, https://schema.org/suggestedGender, https://schema.org/material, và https://schema.org/pattern.

productGroupID — đơn giản text, và không item_group_id

productGroupID“the identifier of the product group (also known as the parent sku). This identifier must be provided for the ProductGroup property or, alternatively, using inProductGroupWithID property for variants.” (bản dịch) «đó identifier of đó sản phẩm group (cũng known as đó parent sku). Này identifier phải được provided cho đó ProductGroup thuộc tính hoặc, alternatively, dùng inProductGroupWithID thuộc tính cho variants.» đây là một đơn giản text identifier — Google own ví dụ là "44E01"không một URL. không over-generalize đó variesBy “full schema.org URL” (bản dịch) «đầy đủ schema.org URL» rule để này trường; họ là khác nhau rules cho khác nhau jobs.

Một hard constraint: “If you provide the identifier for both the ProductGroup property and its variant Product properties, they must match.” (bản dịch) «Nếu bạn cung cấp đó identifier cho cả hai đó ProductGroup thuộc tính và của nó variant Sản phẩm properties, they phải match.» Google tài liệu state đó requirement nhưng không document điều gì happens khi đây là violated. Dựa trên my own kiểm thử (không một được ghi lại Google chế độ lỗi), một typo hoặc một template/environment leak đó thay đổi đó giá trị on một variant trang drops đó variant out of đó group với không visible lỗi — đó trang chỉ dừng đang đọc as part of đó family. Treat đó as observed behavior worth verifying yourself, không an chính thức spec.

Hai implementation patterns: nested so với. flat

của bạn URL structure decides mà pattern bạn sử dụng.

Single-trang các trang — nested (hasVariant). All variants là selectable on một URL (qua dropdowns/swatches). “For single-page websites only: The URL (without variant selectors) where the ProductGroup property is located.” (bản dịch) «Cho single-trang websites chỉ: Đó URL (không có variant selectors) nơi đó ProductGroup thuộc tính là located.» có chính xác một canonical URL cho đó toàn bộ group, và bạn nest mỗi variant Product bên trong đó ProductGroup qua hasVariant.

Multi-trang các trang — flat (isVariantOf + inProductGroupWithID). Mỗi variant có của nó own dedicated URL. Ở đây “this doesn’t apply since there is no single canonical URL representing the ProductGroup property.” (bản dịch) «này không apply since có không single canonical URL representing đó ProductGroup thuộc tính.» Mỗi trang phải carry đầy đủ, self-contained markup cho đó entities được định nghĩa on đó trang — bạn không share một block trên các trang. Mỗi variant Product references của nó parent với isVariantOf, và đó group link là carried by inProductGroupWithID: “Each product group must have a unique ID in its corresponding structured data markup, specified with the inProductGroupWithID property.” (bản dịch) «Mỗi sản phẩm group phải có một unique ID trong của nó corresponding đánh dấu dữ liệu có cấu trúc, specified với đó inProductGroupWithID thuộc tính.»

Either way, “Each variant must have a unique ID in its corresponding structured data markup (for example, using the sku or gtin properties).” (bản dịch) «Mỗi variant phải có một unique ID trong của nó corresponding đánh dấu dữ liệu có cấu trúc (ví dụ, dùng đó sku hoặc gtin properties).»

Một hơn requirement mọi người miss on multi-trang setups: variants phải được reachable by một distinct, preselectable URL. Google: “The site must have the ability to preselect each variant directly with a distinct URL (using URL query parameters), for example https://www.example.com/winter_coat/size=small&color=green.” (bản dịch) «Đó site phải có đó ability để preselect mỗi variant trực tiếp với một distinct URL (dùng URL query parameters), ví dụ https://www.example.com/winter_coat/size=small&color=green. » MỘT variant đó chỉ xuất hiện sau một client-side nhấp, với không URL để point tại, không thể là validated hoặc được lập chỉ mục as của nó own điều.

Bắt buộc so với. được khuyến nghị

  • Bắt buộc on ProductGroup: chỉ name (e.g., "Wool winter coat").
  • Được khuyến nghị: variesBy, hasVariant, productGroupID, brand, description, aggregateRating, review, hasAdultConsideration, và (single-trang các trang chỉ) url.

Technically chỉ name là bắt buộc — nhưng variesByproductGroupIDfunctionally load-bearing. Skip them và JSON-LD validates trong khi grouping behavior bạn wanted không bao giờ hiển thị lên. (aggregateRatingreview ở đây là giống nhau types bạn’d sử dụng standalone — see AggregateRating và Review schema deep dives.)

productGroupID so với. Merchant Center item_group_id — reconciliation không ai giải thích

Đây là confusion point đó phần lớn đối thủ nội dung skips hoàn toàn, so nó worth là precise.

  • productGroupID là một schema.org / on-trang dữ liệu có cấu trúc trường. Điều này feeds organic Tìm kiếm understanding of đó trang.
  • item_group_id là một Google Merchant Center sản phẩm-feed thuộc tính. Merchant Center: “Use the item group ID [item_group_id] attribute to group product variants in your product data.” (bản dịch) «Dùng đó item group ID [item_group_id] thuộc tính để group sản phẩm variants trong của bạn sản phẩm dữ liệu.» Điều này feeds Shopping quảng cáo và danh sách miễn phí.
Evidence for this claim Merchant Center item_group_id groups variants in product data, while ProductGroup.productGroupID and Product.inProductGroupWithID are on-page structured-data properties. Google's docs cross-reference the concepts but do not establish automatic synchronization or a universal requirement that the literal values match across feed and markup. Scope: product data Confidence: high · Verified: Item group ID [item_group_id]

họ là hai tách biệt các hệ thống, và Google làm không tự động sync them. Best practice — và Đây là echoed trên tốt hơn thứ ba-party implementation các hướng dẫn — là để sử dụng giống nhau identifier giá trị cho cả hai, so của bạn feed và của bạn markup agree on mà SKUs belong together. mismatch không nhất thiết break either hệ thống outright, nhưng nó xóa reinforcing tín hiệu và có thể produce inconsistent grouping giữa Shopping surfaces và organic rich kết quả.

( footnote on casing: Merchant Center help đôi khi ghi productGroupId lowercase-d nơi Tìm kiếm Central tài liệu sử dụng productGroupID. đó cosmetic inconsistency trong tài liệu củ chính Google, không mistake on của bạn end — follow Tìm kiếm Central productGroupID trong của bạn JSON-LD.)

consistency discipline ở đây là giống nhau một đó governs canonicals và variant các URL generally: của bạn các tín hiệu nên agree với mỗi khác, hoặc bạn’re handing Google reason để guess.

Bing không hỗ trợ ProductGroup

Ở đây đó differentiator hầu hết các hướng dẫn nhận sai hoặc omit: Bing không hiện tại consume schema.org ProductGroup markup. Microsoft Fabrice Canel, responding trực tiếp để một câu hỏi về liệu Bing hỗ trợ schema.org/ProductGroup, đã nói Bing không tuy vậy hỗ trợ điều này, nhưng đó đây là “on our radar” (bản dịch) «on của chúng ta radar» và đó team là “closely monitoring its adoption.” (bản dịch) «closely monitoring của nó adoption.» (Reported by Công cụ tìm kiếm Roundtable, covering một September 2024 exchange on X — một phụ báo cáo of một đầu tiên-party statement, không một Microsoft doc, so treat điều này as such.)

Bing Quản trị viên web Tools structured-dữ liệu help là generic overview của supported formats với không ProductGroup-, variesBy-, hoặc productGroupID-cụ thể nội dung. Bing Shopping variant grouping chạy qua feed-side itemGroupId trường trong Microsoft Advertising — analog của Google item_group_id, không on-trang schema. So: implement ProductGroup cho Google, và xử lý Bing Shopping variants qua Microsoft Advertising feed, không markup.

note on dynamic markup

Google own caution: “Be aware that dynamically-generated markup can make Shopping crawls less frequent and less reliable, which can be an issue for fast-changing content like product availability and price.” (bản dịch) «Là aware đó dynamically-generated markup có thể làm Shopping crawl ít hơn frequent và ít hơn reliable, mà có thể là an vấn đề cho fast-thay đổi nội dung như sản phẩm availability và price.» Nếu của bạn variant offers/availability là JS-injected, weigh đó so với máy chủ-kết xuất đó markup cho đó các trường đó thay đổi thường.

Validate trước khi bạn ship

  • Rich Kết quả Kiểm thử — kiểm tra eligibility và surfaces bắt buộc-thuộc tính các lỗi cho merchant-listing/variant experience.
  • Schema Markup Validator (schema.org) — validates ProductGroup/Sản phẩm types themselves, independent của Google features.
  • Search Console — merchant-listings/sản phẩm-snippet enhancement các báo cáo hiển thị eligibility và các lỗi tại quy mô post-deploy; URL Inspection hiển thị Cách cụ thể trang là đọc.

Remember Điều gì “hợp lệ” làm và không tell bạn: đơn giản-string variesBy truyền validation và, trong my kiểm thử, vẫn không trigger grouping. Validation catches syntax và bắt buộc-thuộc tính gaps, không điều này kind của semantic thất bại (mà Google không document either way) — cho những điều đó, kiểm tra by hand đó của bạn variesBy các giá trị là đầy đủ các URL và của bạn productGroupID matches trên group.

cho nơi điều này fits bigger picture, see rộng hơn dữ liệu có cấu trúc và schema markup hubs điều này bài viết lives dưới.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.