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.
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 schema là code đó tells Google “all these variations — the small green shirt, the large blue one — are the same product in different options, not separate products.” (bản dịch) «all những variations — đó nhỏ green shirt, đó lớn blue một — là đó giống nhau sản phẩm trong khác nhau options, không tách biệt các sản phẩm.» Mỗi biến động vẫn nhận của nó own sản phẩm markup; ProductGroup chỉ wraps them together. Điều này làm không replace sản phẩm markup, và điều này làm không làm một variant xếp hạng cao hơn — điều này helps Google understand của bạn catalog và có thể làm của bạn listings eligible để cho thấy variant info.
Điều gì ProductGroup schema là
nếu bạn sell coat trong three colors và five sizes, đó một coat sold trong 15 combinations. để công cụ tìm kiếm, 15 near-giống hệt sản phẩm các trang có thể trông giống 15 unrelated các sản phẩm trừ khi bạn tell nó nếu không.
ProductGroup schema là đó dữ liệu có cấu trúc đó làm đó telling. Điều này sits trên của bạn riêng lẻ sản phẩm listings và says “these belong together — they’re the same item in different options.” (bản dịch) «những belong together — họ là đó giống nhau item trong khác nhau options.» Google đã thêm hỗ trợ cho điều này trong February 2024.
Evidence for this claim Schema.org ProductGroup represents a group of products that vary only in defined characteristics. Scope: Schema.org vocabulary; Google adds its own merchant-listing requirements. Confidence: high · Verified: Schema.org: ProductGroupThink của nó as parent folder:
- Đó parent là đó
ProductGroup— “Wool winter coat.” (bản dịch) «Wool winter coat.» - Đó children là đó riêng lẻ
Productvariants — mỗi color/size combo, với của nó own price, photo, stock status, và unique ID.
quan trọng part: nó additive, không replacement
điều này trips lên gần như mọi người đầu tiên time. ProductGroup làm không replace của bạn
sản phẩm markup. mỗi variant là vẫn đầy đủ Product — nó giữ của nó own SKU,
price, image, và availability. ProductGroup là wrapper đó ties những điều đó Các sản phẩm
together. bạn’re thêm markup, không swapping nó out.
Điều gì nó làm cho bạn
Marking lên của bạn variants này way làm của bạn các sản phẩm eligible để cho thấy variant information trong Google shopping/merchant listings — đó “also comes in these colors” (bản dịch) «cũng xuất hiện trong những colors» kind of display. As với all schema, “eligible” là đó key word: đây là không một xếp hạng boost, và đây là không bao giờ guaranteed. Điều này helps Google understand của bạn các sản phẩm, mà là đó point. Evidence for this claim Google supports ProductGroup with associated variant properties to describe product variants for merchant listings. Scope: Google Search product-variant documentation; eligibility is not a ranking promise. Confidence: high · Verified: Google: Product variants
Hai điều để know trước khi bạn go deeper
- Bing không đọc ProductGroup schema (as của mới nhất word từ Microsoft). So Đây là mainly Google feature. nhiều hơn on đó trong Nâng cao tab.
- Đây là schema/code side của variants. Liệu được cho variant nên ngay cả nhận của nó own trang trong đầu tiên place là tách biệt strategy câu hỏi — I cover đó decision (và nền tảng differences) trong sản phẩm variant SEO hướng dẫn.
Muốn đầy đủ version — three cốt lõi properties, đầy đủ schema.org URL rule cho
variesBy, Cách productGroupID differs từ Merchant Center item_group_id,
hoàn tất JSON-LD ví dụ, và phổ biến mistakes? Chuyển để Nâng cao tab.
TL;DR —
ProductGroup(Google Feb 2024 addition) wraps variantProductobjects 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 đủProductmarkup (sku/gtin,offers,image,availability). Link them vớihasVariant(nested, single-trang các trang) hoặcisVariantOf+inProductGroupWithID(flat, multi-trang các trang); declare đó varying axes vớivariesBy— 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ộtproductGroupID(đơn giản text parent sku, không một URL).productGroupIDlà không Merchant Centeritem_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ỉnamelà 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.
three cốt lõi properties
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 là “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 là “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 variesBy và productGroupID là
functionally load-bearing. Skip them và JSON-LD validates trong khi grouping
behavior bạn wanted không bao giờ hiển thị lên. (aggregateRating và review ở đâ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.
productGroupIDlà 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_idlà 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í.
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.
AI summary
condensed take on Nâng cao version:
- Điều gì điều này là:
ProductGroup(Google, Feb 2024) wraps variantProductobjects dưới một parent so Google understands “same item, different options” (bản dịch) «giống nhau item, khác nhau options» thay vì unrelated các sản phẩm. Eligibility cho variant display trong merchant listings — không một xếp hạng factor. - Additive, không một replacement: mỗi variant vẫn giữ một đầy đủ
Product(sku/gtin,offers,image,availability);ProductGrouplà đó wrapper và không sold on của nó own (không single price on đó group). - Three cốt lõi properties:
hasVariantnests variants (hoặcisVariantOfpoints lại lên);variesBylists đó varying axes và phải dùng đầy đủ schema.org URLs (https://schema.org/color, không"color") — đó #1 implementation mistake, và trong thực tế (không điều gì đó Google documents) điều này validates fine trong khi grouping âm thầm không trigger;productGroupIDlà một đơn giản text parent sku (không một URL, e.g."44E01"), và nếu set on cả hai group và variants đó các giá trị phải match — Google documents đó match rule nhưng không điều gì happens on một mismatch. - Hai patterns: nested (
hasVariant, single-trang các trang, một canonical URL cho đó group) so với. flat (isVariantOf+inProductGroupWithID, multi-trang các trang, đầy đủ self-contained markup theo trang). Variants cần uniquesku/gtinvà một distinct preselectable URL. - Bắt buộc so với. được khuyến nghị: chỉ
namelà bắt buộc;variesBy+productGroupIDlà functionally essential mặc dù technically được khuyến nghị. productGroupID≠item_group_id: on-trang schema (organic Tìm kiếm) so với. Merchant Center feed thuộc tính (Shopping/danh sách miễn phí) — tách biệt các hệ thống, không có gì auto-syncs, dùng matching các giá trị on purpose.- Bing không hỗ trợ ProductGroup (Fabrice Canel, Sept 2024, qua Công cụ tìm kiếm
Roundtable). Bing Shopping variants chạy qua Microsoft Advertising feed-side
itemGroupId, không markup. - Watch dynamic markup (ít hơn reliable Shopping crawl cho price/availability).
Validate với Rich Kết quả Kiểm thử + schema.org Validator, nhưng remember đơn giản-string
variesByvalidates và vẫn fails.
Tài liệu chính thức
Chính-nguồn tài liệu cho ProductGroup và variant markup.
- Sản phẩm variant dữ liệu có cấu trúc (ProductGroup, Sản phẩm) — single có thẩm quyền trang:
ProductGroup,hasVariant,isVariantOf,variesBy,productGroupID, đầy đủ schema.org URL rule, bắt buộc/được khuyến nghị properties, và single-trang so với. multi-trang rules. - Thêm dữ liệu có cấu trúc hỗ trợ cho Sản phẩm Variants (Feb 2024 blog) — announcement đó introduced properties.
- Intro để Sản phẩm dữ liệu có cấu trúc — chung Sản phẩm trang (Sản phẩm snippets / merchant listings). Note: nó làm không cover ProductGroup — đó tách biệt trang trên.
- Google Merchant Center — Item group ID [item_group_id] — sản phẩm-feed thuộc tính cho grouping variants, và của nó schema.org cross-references.
Bing / Microsoft
- Bing Quản trị viên web Tools — Marking lên của bạn trang web với dữ liệu có cấu trúc — generic overview của supported formats; không ProductGroup-,
variesBy-, hoặcproductGroupID-cụ thể nội dung.
schema.org
- schema.org/ProductGroup — vocabulary trang: có thẩm quyền thuộc tính list và Sản phẩm/Điều inheritance (không implementation các ví dụ hoặc Google-cụ thể hướng dẫn).
Quotes từ nguồn
On—record statements từ Google (và reported statements từ Microsoft). nơi trang exposes text, link là deep link đó jumps để quoted passage.
Google tài liệu — purpose và eligibility
- “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.» Nhảy đến trích dẫn
- “Many types of products such as apparel, shoes, furniture, electronic devices, and luggage are sold in different variations (for example various sizes, colors, materials, or patterns).” (bản dịch) «Nhiều types of các sản phẩm such as apparel, shoes, furniture, electronic devices, và luggage là sold trong khác nhau variations (ví dụ various sizes, colors, materials, hoặc patterns).» Nhảy đến trích dẫn
- “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.» Nhảy đến trích dẫn
Google tài liệu — properties
variesBy: “Aspects by which the variants in the ProductGroup vary… Reference these variant-identifying properties through their full Schema.org URL.” (bản dịch) «Aspects by mà đó variants trong đó ProductGroup vary… Reference những variant-identifying properties qua của họ đầy đủ Schema.org URL.» Nhảy đến trích dẫnhasVariant: “A nested Product property that is one of the variants of the ProductGroup property, if applicable. 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, nếu applicable. MỘT ProductGroup typically có multiple nested variant Sản phẩm properties.» Nhảy đến trích dẫnisVariantOf: “Alternatively, a variant Product property can reference back to its parent ProductGroup using the isVariantOf property on the Product property.” (bản dịch) «Alternatively, 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.» Nhảy đến trích dẫnproductGroupID: “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.» Nhảy đến trích dẫn- On matching IDs: “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.» Nhảy đến trích dẫn
Google tài liệu — unique IDs và các URL
- “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).» Nhảy đến trích dẫn
- “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. » Nhảy đến trích dẫn
- On dynamic markup: “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.» Nhảy đến trích dẫn
Google Merchant Center — item_group_id
- “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.» Nhảy đến trích dẫn
John Mueller, Google (qua công cụ tìm kiếm Roundtable verbatim reproduction của his Feb 2024 LinkedIn post)
- “Product variants in ecommerce are complicated - what do you do with t-shirts in different colors? Folks here Google worked hard to come up with structured data markup & support for it… The changes are also live in the Rich Results Testing tool and in the Search Console reports for these types.” (bản dịch) «Sản phẩm variants trong ecommerce là complicated - điều gì làm bạn làm với t-shirts trong khác nhau colors? Folks ở đây Google worked hard để come lên với đánh dấu dữ liệu có cấu trúc & hỗ trợ cho điều này… Đó thay đổi là cũng trực tiếp trong đó Rich Kết quả Kiểm thử tool và trong đó Search Console các báo cáo cho những types.» Đọc bài đưa tin
Fabrice Canel, Microsoft Bing (reported, không đầu tiên-party doc)
- Responding để liệu Bing hỗ trợ
schema.org/ProductGroup, Canel đã nói Bing làm chưa 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.» Coverage Relayed qua Công cụ tìm kiếm Roundtable coverage of 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 tài liệu trang.
hoàn tất ProductGroup JSON-LD ví dụ
Google own doc ví dụ là intentionally minimal — một variant, không offers. Ở đây
fuller, single-trang (nested hasVariant) version với hai variants, offers, gtin,
image, và brand — shape bạn’d thực ra ship. Note variesBy dùng đầy đủ
schema.org các URL, và productGroupID là đơn giản string.
{
"@context": "https://schema.org/",
"@type": "ProductGroup",
"name": "Wool winter coat",
"description": "A warm wool winter coat, available in several sizes and colors.",
"url": "https://www.example.com/winter-coat",
"brand": {
"@type": "Brand",
"name": "ExampleCo"
},
"productGroupID": "44E01",
"variesBy": [
"https://schema.org/size",
"https://schema.org/color"
],
"hasVariant": [
{
"@type": "Product",
"sku": "44E01-S-GRN",
"gtin": "0123456789012",
"name": "Wool winter coat, small, green",
"image": "https://www.example.com/photos/44E01-S-GRN.jpg",
"size": "small",
"color": "Green",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/winter-coat?size=small&color=green",
"price": "119.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "Product",
"sku": "44E01-L-BLU",
"gtin": "0123456789029",
"name": "Wool winter coat, large, blue",
"image": "https://www.example.com/photos/44E01-L-BLU.jpg",
"size": "large",
"color": "Blue",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/winter-coat?size=large&color=blue",
"price": "119.99",
"priceCurrency": "USD",
"availability": "https://schema.org/OutOfStock"
}
}
]
}Điều để notice:
ProductGroupcó khôngoffers/pricecủa nó own — price lives on mỗi variantOffer, vì group không phải single sellable điều.- mỗi variant carries unique
sku(và ở đâygtin), của nó ownimage, của nó ownavailability, vàsize/colorcác giá trị đó match Điều gìvariesBydeclared. - Availability là theo-variant — nhỏ green coat là
InStock, lớn blue mộtOutOfStock. đó đúng way để xử lý partially-stocked group (see out-của-stock các sản phẩm hướng dẫn cho Cách tín hiệu điều này không có dropping variant).
multi-trang (flat) variant của giống nhau setup
nếu mỗi variant lives on của nó own URL, bạn không nest — mỗi trang carries của nó own
self-contained Product đó points lại lên với isVariantOf và shared group ID
qua inProductGroupWithID:
{
"@context": "https://schema.org/",
"@type": "Product",
"sku": "44E01-S-GRN",
"gtin": "0123456789012",
"name": "Wool winter coat, small, green",
"image": "https://www.example.com/photos/44E01-S-GRN.jpg",
"size": "small",
"color": "Green",
"inProductGroupWithID": "44E01",
"isVariantOf": {
"@type": "ProductGroup",
"productGroupID": "44E01",
"variesBy": [
"https://schema.org/size",
"https://schema.org/color"
]
},
"offers": {
"@type": "Offer",
"url": "https://www.example.com/winter-coat/small-green",
"price": "119.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}mỗi variant trang repeats điều này pattern với của nó own IDs và offer, và giống nhau
productGroupID ("44E01") ties them together. giữ đó ID giống hệt trên all
variant các trang và aligned với của bạn Merchant Center item_group_id.
nên bạn sử dụng ProductGroup, và mà pattern?
Walk tree để land on right markup decision cho của bạn setup.
ProductGroup or plain Product — and nested or flat?
phổ biến ProductGroup mistakes
traps, và Điều gì thực ra đúng:
| Mistake | Reality |
|---|---|
Treating ProductGroup as replacement cho Product | nó wrapper/parent. mỗi variant là vẫn đầy đủ Product với của nó own sku/gtin, price, image, và availability. ProductGroup itself không phải offered cho sale — không put single offers/price on nó. |
Writing variesBy as đơn giản strings ("color", "size") | nó phải sử dụng đầy đủ schema.org các URL (https://schema.org/color). Đơn giản strings truyền JSON-LD validation, và trên thực tế grouping không trigger (Google không document đó cụ thể thất bại, so verify nó on của bạn own markup) — single phần lớn phổ biến mistake trong điều này topic. |
Assuming productGroupID và Merchant Center item_group_id là giống nhau auto-synced trường | họ’re tách biệt các hệ thống — on-trang schema (organic Tìm kiếm) so với. sản phẩm feed (Shopping/danh sách miễn phí). Không có gì syncs them; sử dụng matching các giá trị có chủ ý. |
Đang làm productGroupID URL | nó đơn giản text identifier (parent sku), e.g. "44E01". không over-apply variesBy đầy đủ-URL rule ở đây — khác trường, khác rule. |
Shrugging off productGroupID typo on một variant trang | Trong multi-trang setups, mismatched ID drops đó variant out của group với không lỗi thrown, trong my kiểm thử — Google documents match requirement nhưng không mismatch behavior, so Đây là observed, không officially specified. |
| Marking lên variants đó có không distinct URL | Variants phải là preselectable qua distinct URL (query params là fine). JS-chỉ state thay đổi với không URL có thể’t là validated hoặc được lập chỉ mục as variants. |
| Assuming Bing đọc ProductGroup như Google làm | As của Sept 2024 (Fabrice Canel, qua công cụ tìm kiếm Roundtable), Bing làm không consume ProductGroup markup. Bing Shopping variants chạy qua Microsoft Advertising feed-side itemGroupId, không on-trang schema. |
| Expecting ProductGroup để improve thứ hạng | nó aids understanding và merchant-listing eligibility — nó là không xếp hạng factor. “Eligible” không phải “guaranteed,” và nó certainly không boost. |
| Trusting “hợp lệ” để có nghĩa là “hoạt động” | Validation catches syntax và bắt buộc-thuộc tính gaps, không silent semantic failures. Đơn giản-string variesBy và mismatched IDs cả hai validate và vẫn không hoạt động — kiểm tra them by hand. |
ProductGroup implementation checklist
Hoạt động qua điều này trong order — mỗi item maps để cụ thể gotcha covered trên.
- quyết định của bạn pattern đầu tiên. All variants selectable on một URL → nested
(
hasVariant). mỗi variant on của nó own URL → flat (isVariantOf+inProductGroupWithID). không mix patterns on giống nhau group. - giữ mỗi variant đầy đủ
Product. mỗi một vẫn có của nó ownsku/gtin,image,offers, vàavailability—ProductGroupkhông bao giờ carries singlepricecủa nó own. - Ghi
variesByas đầy đủ schema.org các URL, e.g.https://schema.org/colorvàhttps://schema.org/size— không"color"/"size". Đây là #1 implementation mistake; nó validates either way, và grouping âm thầm không trigger không có URL form trong my kiểm thử (không điều gì đó Google documents), so kiểm tra nó by eye. - đặt
productGroupIDas đơn giản-text identifier (parent sku, e.g."44E01") — không bao giờ URL. khác rule từvariesBy; không conflate them. - Match
productGroupID(hoặcinProductGroupWithID) trên mỗi variant. Google documents match requirement nhưng không Điều gì happens nếu nó violated; trong my kiểm thử, typo on một variant trang drops nó từ group với không lỗi. - Cho mỗi variant unique ID qua
skuhoặcgtin. - xác nhận mỗi variant có distinct, preselectable URL (query params là
fine, e.g.
?size=small&color=green). JS-chỉ state thay đổi với không URL có thể’t là validated hoặc được lập chỉ mục as của nó own variant. - Align
productGroupIDvới Merchant Centeritem_group_id. họ’re tách biệt các hệ thống và không có gì auto-syncs them — sử dụng giống nhau giá trị on purpose. - máy chủ-render fast-thay đổi các trường (
price,availability) nơi có thể — Google warns dynamically-generated markup có thể làm Shopping crawl ít hơn frequent và reliable. - Validate, sau đó verify by hand. Chạy Rich Kết quả Kiểm thử và
schema.org Validator — sau đó manually re-kiểm tra
variesBycác URL vàproductGroupIDmatching, since cả hai truyền validation ngay cả Khi hỏng. - nếu bạn cũng đích Bing, không rely on ProductGroup — nó không phải consumed
tại all (theo Microsoft Fabrice Canel, Sept 2024). Xử lý Bing Shopping
variants qua Microsoft Advertising feed-side
itemGroupIdthay vì.
ProductGroup nhanh-reference
productGroupID so với. item_group_id so với. inProductGroupWithID
| Trường | Lives trong | Format | Feeds |
|---|---|---|---|
productGroupID | On-trang JSON-LD, on ProductGroup (hoặc on variant Product qua isVariantOf) | Đơn giản text (e.g. "44E01") | Organic Tìm kiếm understanding của trang |
inProductGroupWithID | On-trang JSON-LD, on variant Product (multi-trang/flat pattern) | Đơn giản text, phải match group productGroupID | giống nhau as trên — flat-pattern link lại để group |
item_group_id | Google Merchant Center sản phẩm feed | Đơn giản text | Shopping quảng cáo và danh sách miễn phí |
Không có gì auto-syncs những điều này trên các hệ thống — sử dụng giống nhau giá trị trong all three so organic và Shopping agree on mà SKUs belong together.
Nested so với. flat pattern
Nested (hasVariant) | Flat (isVariantOf + inProductGroupWithID) | |
|---|---|---|
| Khi nào nên dùng | Single-trang các trang — all variants selectable on một URL | Multi-trang các trang — mỗi variant có của nó own URL |
| Canonical URL cho group | Một (url on ProductGroup) | None — không single URL represents group |
| nơi group properties trực tiếp | On ProductGroup, mà nests mỗi variant Product | Repeated on mỗi variant trang, qua isVariantOf |
| Variant → group link | Variant là nested bên trong hasVariant | Variant references parent với isVariantOf + inProductGroupWithID |
Thuộc tính format rules
| Thuộc tính | đúng format | sai format |
|---|---|---|
variesBy | đầy đủ schema.org URL: https://schema.org/color | Đơn giản string: "color" (validates; trên thực tế không group — không được ghi lại Google thất bại chế độ) |
productGroupID | Đơn giản text parent sku: "44E01" | URL |
sku / gtin (theo variant) | Unique theo variant | Shared/reused trên variants |
Catch #1 implementation mistake: variesBy as đơn giản strings
variesBy các giá trị đó skip đầy đủ schema.org URL prefix là single phần lớn phổ biến
mistake trong điều này topic — JSON-LD vẫn validates, so không có gì các lỗi out, và trong my
kiểm thử grouping âm thầm không trigger (tài liệu củ Google require đầy đủ-URL form nhưng
không document Điều gì happens nếu bạn skip nó). những điều này snippets catch nó trực tiếp thay vì
relying on eyeballing markup.
Regex: flag bad variesBy array trong thô JSON-LD
Chạy điều này over extracted JSON-LD nguồn (e.g. Screaming Frog custom extraction export,
hoặc bất kỳ thô HTML/text dump) để tìm variesBy arrays containing giá trị đó không phải
đầy đủ schema.org URL:
"variesBy"\s*:\s*\[\s*((?:"(?!https://schema\.org/)[^"]*"\s*,?\s*)+)\]"variesBy"\s*:\s*\[— matches bắt đầu của thuộc tính và của nó opening bracket, allowing cho whitespace formatting differences.(?:"(?!https://schema\.org/)[^"]*"\s*,?\s*)+— capture group: matches một hoặc nhiều hơn quoted strings nơi negative lookahead(?!https://schema\.org/)rules out bất cứ điều gì đó đã bắt đầu với đúng prefix. nếu điều này group matches bất cứ điều gì tại all, ít nhất một entry trong array là bad đơn giản string như"color"hoặc"size"thay vì đầy đủ URL.- match có nghĩ là: dừng và khắc phục đó array trước khi shipping — nó sẽ validate sạch và vẫn fail để trigger grouping.
Chrome DevTools Console snippet: audit trực tiếp trang JSON-LD
Paste vào Console on bất kỳ trang bạn expect để carry ProductGroup markup. nó pulls
mỗi JSON-LD block, walks vào ProductGroup objects (including ones nested dưới
isVariantOf), và các báo cáo bất kỳ variesBy entry đó không phải đầy đủ schema.org URL:
(function () {
const blocks = [...document.querySelectorAll('script[type="application/ld+json"]')];
const findings = [];
blocks.forEach((block, i) => {
let data;
try {
data = JSON.parse(block.textContent);
} catch (e) {
findings.push(`Block ${i}: invalid JSON (${e.message})`);
return;
}
const items = Array.isArray(data) ? data : [data];
items.forEach((item) => {
const groups = [];
if (item['@type'] === 'ProductGroup') groups.push(item);
if (item.isVariantOf && item.isVariantOf['@type'] === 'ProductGroup') groups.push(item.isVariantOf);
groups.forEach((g) => {
const bad = (g.variesBy || []).filter((v) => !String(v).startsWith('https://schema.org/'));
if (bad.length) findings.push(`Block ${i}: bad variesBy values -> ${JSON.stringify(bad)}`);
if (g.productGroupID && /^https?:\/\//.test(g.productGroupID)) {
findings.push(`Block ${i}: productGroupID looks like a URL, should be plain text -> ${g.productGroupID}`);
}
});
});
});
console.log(findings.length ? findings.join('\n') : 'No ProductGroup issues found in this page\'s JSON-LD.');
})();XPath cho Screaming Frog: extract productGroupID trên variant các trang
sử dụng custom extraction để pull productGroupID giá trị straight out của JSON-LD
script tag, sau đó so sánh extracted các giá trị trên của bạn được crawl variant các URL để spot
mismatch:
//script[@type="application/ld+json"]Extract đầy đủ text của mỗi matching node, sau đó kiểm tra extracted productGroupID
(và inProductGroupWithID on flat/multi-trang setups) là giống hệt trên mỗi URL
đó supposed để belong để giống nhau group — single differing giá trị có nghĩ là đó trang
có khả năng dropped out của group với không lỗi thrown, dựa trên kiểm thử (Google
tài liệu require match nhưng không document mismatch behavior).
Tự kiểm tra: ProductGroup Schema
Five nhanh các câu hỏi on ProductGroup, của nó cốt lõi properties, và gotchas. Pick câu trả lời cho mỗi, sau đó kiểm tra.
các tài nguyên worth của bạn time
My related writing
I haven’t published piece cụ thể on ProductGroup schema — điều này bài viết là dedicated treatment. closest liền kề điều I’ve được viết đó inform nó:
- Google Dùng ~40 Các tín hiệu canonicalization — Ở đây Điều gì Đó Có nghĩa là — đó “keep your signals consistent” (bản dịch) «giữ của bạn các tín hiệu consistent» discipline đó underpins matching
productGroupIDtrên variants (và aligning điều này vớiitem_group_id). - Đó Myth of đó Duplicate Nội dung Hình phạt (Search Engine Land) — vì sao grouping variants as một item trong options, thay vì fearing them as duplicates, là đó right mental model. có không duplicate-nội dung hình phạt để “cách sửa” với ProductGroup — đây là về understanding, không avoiding một fine.
cho strategy layer — liệu variant nên ngay cả nhận của nó own URL, và Cách Shopify/WooCommerce/BigCommerce/Magento differ — see sản phẩm variant SEO hướng dẫn on điều này trang web. cho fundamentals, schema markup và dữ liệu có cấu trúc hubs, và sibling Sản phẩm schema deep dive.
từ khoảng ngành
- Sản phẩm variant dữ liệu có cấu trúc (Google Search Central) — đó có thẩm quyền reference; đọc điều này alongside này cho đó đầy đủ thuộc tính các bảng.
- Thêm dữ liệu có cấu trúc hỗ trợ cho Sản phẩm Variants (Google Search Central blog) — đó Feb 2024 announcement.
- Item group ID [item_group_id] (Google Merchant Center Help) — đó feed-side thuộc tính và của nó schema.org cross-references.
- New Google Search Hỗ trợ Cho Sản phẩm Variant Dữ liệu có cấu trúc (Công cụ tìm kiếm Roundtable) — đó Feb 2024 launch recap, với John Mueller verbatim LinkedIn post.
- Bing không hỗ trợ ProductGroup markup (Công cụ tìm kiếm Roundtable) — đó Fabrice Canel statement (Sept 2024).
- Google adds hỗ trợ cho sản phẩm variants (Search Engine Land) — giống nhau-day announcement coverage.
- Google Để Display Hơn Sản phẩm Variants Với New Markup (Search Engine Journal) — đó SEJ take on đó launch.
- Schema piece: ProductGroup (Yoast Nhà phát triển Portal) — real JSON-LD các ví dụ và Yoast default
productGroupID-từ-SKU behavior (plugin-cụ thể). - Cách implement ProductGroup schema (Go Fish Digital) — đơn giản-English “why this exists” (bản dịch) «vì sao này tồn tại» cách diễn đạt.
- schema.org/ProductGroup — đó vocabulary itself, straight từ đó nguồn.
Nhật ký thay đổi
Đã cập nhật 8 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 20 thg 7, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 18 thg 7, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.