Schema thương mại

Commerce schema là cách gọi bao quát cho các kiểu danh sách schema.org — Product, ProductGroup và JobPosting — mà Google dùng để tạo rich result theo kiểu Shopping và Google for Jobs. Bài viết giải thích mối quan hệ giữa chúng và khi nào nên dùng.

1 tín hiệu bằng chứng trên trang này

"Commerce schema" là cách gọi theo thực hành, không phải danh mục của Google hay schema.org, dành cho các kiểu danh sách schema.org tạo ra rich result giao dịch: Product (một mặt hàng bán riêng lẻ), ProductGroup (kiểu cha nhóm các biến thể) và JobPosting (một vị trí đang tuyển). Google chia chúng giữa hai họ tài liệu (Product/Variants dưới "Shopping", Job posting trong danh sách feature guides chung), và schema.org cũng không hợp nhất chúng — Product/ProductGroup là quan hệ cha/con, còn JobPosting nằm ở một nhánh hoàn toàn khác. Điểm chung duy nhất là mục đích dùng trong SEO: Google chuyển các danh sách có cấu trúc thành cách hiển thị SERP chuyên biệt (merchant listing và dịch vụ Google for Jobs). Không điều nào là yếu tố xếp hạng — schema chỉ mang lại điều kiện đủ, không bảo đảm thứ hạng, hiển thị, CTR hay trích dẫn AI. Điều kiện đủ của Review có hồ sơ riêng, còn chính sách trả hàng cấp Organization và ngoại lệ vận chuyển cấp Offer là hai bản ghi riêng cần được duy trì. Rủi ro vòng đời cũng khác biệt: Product cũ chủ yếu mất điều kiện đủ, nhưng JobPosting cũ chưa gỡ có thể kích hoạt manual action. Hub này chỉ dẫn đường đến các bảng thuộc tính đầy đủ trong từng bài.

TL;DR — “Commerce schema” là cách nhóm theo thực hành của tôi, không phải danh mục của Google hay schema.org, dành cho các kiểu danh sách tạo ra kết quả nhiều định dạng giao dịch: Product, ProductGroup và JobPosting. Google thực sự tách chúng ra — Product/Variants nằm dưới “Shopping”, còn Job posting nằm trong danh sách feature guides chung. schema.org cũng không hợp nhất chúng: Product → ProductGroup là quan hệ cha/con thực sự (Thing > Product > ProductGroup), trong khi JobPosting nằm ở nhánh Intangible (Thing > Intangible > JobPosting), không liên quan đến Product. Điểm duy nhất gắn cả ba là mục đích sử dụng SEO — danh sách có cấu trúc được Google chuyển thành cách hiển thị SERP chuyên biệt (merchant listing và dịch vụ Google for Jobs). Không kiểu nào là yếu tố xếp hạng; nó chỉ mang lại điều kiện đủ — không bảo đảm hiển thị, tăng CTR hay được AI trích dẫn; đó là ba kết quả riêng biệt và không được bảo đảm. Điều kiện đủ của Review/AggregateRating có hồ sơ riêng, còn dữ liệu trả hàng/vận chuyển tách thành chính sách cấp Organization và ngoại lệ cấp Offer — thêm hai hợp đồng mà hub này chỉ dẫn đến. Rủi ro vòng đời cũng khác nhau: Product cũ chủ yếu mất điều kiện đủ, nhưng JobPosting cũ chưa hết hạn có thể kích hoạt manual action.

Trước hết, nói cho đúng: đây là cách nhóm của tôi, không phải của Google

Cách nhóm trong bài viết này kết hợp một số vốn từ vựng và tính năng tìm kiếm liên quan để tiện theo dõi. Bằng chứng cho nhận định này Commerce schema is an editorial grouping rather than a single Schema.org type or Google feature. Phạm vi: This article's taxonomy; Schema.org and Google document individual types and search experiences. Độ tin cậy: cao · Đã xác minh: Schema.org: Product Mỗi trải nghiệm Google có các thuộc tính bắt buộc và được khuyến nghị riêng, và mã đánh dấu hợp lệ không bảo đảm sẽ được hiển thị. Bằng chứng cho nhận định này Google documents distinct structured-data requirements for product snippets and merchant listings, and valid markup does not guarantee display. Phạm vi: Google Product structured data and merchant-listing experiences. Độ tin cậy: cao · Đã xác minh: Google: Product structured data

Tôi muốn nói rõ ngay từ đầu vì nhiều nội dung về schema “commerce” hoặc “ecommerce” ngầm khiến người đọc nghĩ đây là một họ chính thức. Không phải vậy.

  • Tài liệu của Google tự tách chúng ra. Trong structured data gallery, “Job posting” nằm trong danh sách Feature guides phẳng, cùng với các kiểu không liên quan như Article, Local business và Organization. Trong khi đó, “Product snippet”, “Merchant listing” và “Variants” nằm trực tiếp dưới tiêu đề Shopping riêng biệt. Đây là hai họ tài liệu khác nhau.
  • schema.org cũng không hợp nhất chúng. Hệ phân cấp kiểu này có một nhóm riêng “Product, Offer, and AggregateOffer” — còn JobPosting không xuất hiện trong nhóm cấp cao nhất cùng với chúng.

Vậy tại sao đặt chúng trong một bài viết? Vì trong thực tế — cách một SEOer thực sự làm việc — chúng là cùng một dạng vấn đề: nội dung kiểu danh sách có cấu trúc được đánh dấu để mở khóa một trải nghiệm tìm kiếm chuyên biệt. Mục đích dùng chung đó là có thật và hữu ích; cách phân loại chung thì không. Tôi thà nói thẳng còn hơn giả vờ Google đã vẽ ra chiếc hộp này.

Ba kiểu ở một glance

  • Product (schema.org/Product) — một mặt hàng bán riêng lẻ. Google biến mã Product hợp lệ thành hai trải nghiệm: product snippets (sao đánh giá và giá trên các trang không mua hàng) và merchant listings (kết quả theo kiểu Shopping đầy đủ hơn trên các trang có thể mua mặt hàng). Mức tối thiểu để có điều kiện đủ cho rich result là name cộng với ít nhất một trong offers, review hoặc aggregateRating — nhưng nhánh review/aggregateRating còn phải tuân theo các quy tắc Review snippet riêng của Google (bao gồm hạn chế về review tự phục vụ), không phải cứ trang sản phẩm nào cũng hiện sao. Xem bài chuyên sâu về Review schema để hiểu hồ sơ điều kiện đủ này.
  • ProductGroup (schema.org/ProductGroup) — kiểu cha nhóm các variants của một mặt hàng khái niệm (một áo thun có nhiều kích cỡ và màu sắc) để Google hiểu chúng là các lựa chọn của cùng sản phẩm, không phải các danh sách không liên quan. Nó liên kết các biến thể bằng hasVariant, variesBy và productGroupID. Quan trọng là nó không thay thế Product — mỗi biến thể vẫn là một Product đầy đủ của riêng mình; ProductGroup nằm phía trên chúng.
  • JobPosting (schema.org/JobPosting) — một vị trí đang tuyển, được đánh dấu để trang đủ điều kiện xuất hiện trong trải nghiệm Google for Jobs (thẻ/băng chuyền danh sách trong Search). Các thuộc tính bắt buộc cơ bản là title, description, datePosted, hiringOrganization và jobLocation (hoặc applicantLocationRequirements cho vai trò hoàn toàn từ xa).

Tôi cố ý không đi sâu vào bảng thuộc tính của từng kiểu trong hub này — các bài chuyên sâu về ba kiểu ở cuối bài mới là nơi có nội dung đó.

Chúng nằm ở đâu trong hệ phân cấp schema.org

Đây là phần hầu như không ai trích dẫn chính xác, và nó phân biệt một phỏng đoán với một sự thật:

  • Product — Thing > Product.
  • ProductGroup — Thing > Product > ProductGroup. Đây là một kiểu con của Product thực sự, kế thừa mọi thuộc tính của Product và thêm hasVariant, productGroupID và variesBy. Vì vậy, “Product so với ProductGroup” không phải lựa chọn loại trừ lẫn nhau — ProductGroup là một Product chuyên biệt, được xây dựng cho trường hợp có biến thể.
  • JobPosting — Thing > Intangible > JobPosting. Đây là một nhánh hoàn toàn tách biệt. Định nghĩa JobPosting không tham chiếu Product, Offer hay bất kỳ kiểu thương mại nào.

Kết luận: Product và ProductGroup có quan hệ phân loại (cha/con, có thể kiểm chứng và trích dẫn); JobPosting không có quan hệ phân loại với chúng. Sợi dây nối cả ba là mục đích dùng trong SEO, không phải quan hệ kế thừa. Nói rõ như vậy là bạn đang đứng trên nền tảng vững chắc.

Product so với ProductGroup: khi nào dùng kiểu nào

Quy tắc đơn giản:

  • Một cấu hình có thể mua → dùng Product thông thường. Một SKU, một mức giá, một trang có thể mua được.
  • Một mặt hàng khái niệm có nhiều biến thể có thể mua → dùng ProductGroup bao quanh các thành viên Product của nó. Đây là trường hợp một chiếc áo có năm màu. Bản thân ProductGroup không được chào bán — các thành viên hasVariant mới được bán, mỗi thành viên có sku/gtin, giá và tình trạng còn hàng riêng.

Google cũng ghi lại ProductGroup theo cách khác: nó nằm trên trang Variants, không phải một hướng dẫn tính năng cấp cao nhất độc lập — càng cho thấy Google coi đây là phần mở rộng của Product chứ không phải một loại rich result hoàn toàn tách biệt. Bảng thuộc tính đầy đủ, điểm dễ nhầm về URL đầy đủ của variesBy và việc đối soát với item_group_id của Merchant Center thuộc bài chuyên sâu ProductGroup, không phải hub này.

JobPosting: trường hợp ngoại lệ

JobPosting không có quan hệ phân loại nào với Product — nhưng nó có cùng dạng vấn đề nên vẫn có chỗ trong hub này. Về vận hành, có hai điểm khiến nó khác biệt:

  1. Luôn một việc làm trên mỗi trang. Quy tắc của Google: “The JobPosting markup must only be used on pages that contain a single job posting.” (bản dịch) «Mã đánh dấu JobPosting chỉ được dùng trên các trang chứa một tin tuyển dụng duy nhất.» Không bao giờ đặt nó trên trang danh sách hoặc kết quả tìm kiếm. Product/ProductGroup không có hạn chế một-mặt-hàng-mỗi-trang tương đương — thực tế ProductGroup tồn tại chính để xử lý nhiều biến thể trên cùng một trang.
  2. Tin đã hết hạn là nghĩa vụ tuân thủ, không phải việc cài đặt rồi bỏ đó. Phần rủi ro bên dưới là nơi mức độ khác biệt với Product rõ nhất.

Các quy tắc chung cho cả ba kiểu

Dù ba kiểu không cùng hệ phân loại, chúng vẫn tuân theo các nguyên tắc chung về dữ liệu có cấu trúc của Google, nên đáng nêu các quy tắc một lần:

  • Thuộc tính bắt buộc là cổng điều kiện đủ. Thiếu một thuộc tính bắt buộc thì trang không đủ điều kiện cho rich result đó. Thuộc tính được khuyến nghị giúp nâng chất lượng — Google dùng mức lương trong tin tuyển dụng làm ví dụ: người dùng thích tin nêu rõ lương hơn tin không nêu. Logic “đầy đủ hơn thì tốt hơn” cũng áp dụng cho Product.
  • Điều kiện đủ ≠ bảo đảm hiển thị. Mã đánh dấu hợp lệ đưa bạn vào nhóm đủ điều kiện; hệ thống Google vẫn quyết định riêng có hiển thị phần nâng cao hay không.
  • Chỉ đánh dấu nội dung hiển thị và chính xác. Không dùng mã đánh dấu ẩn, review giả hay dữ liệu gây hiểu lầm — chính sách spam và chất lượng nội dung của Google áp dụng cho cả ba, đồng thời mỗi kiểu còn có chính sách riêng của tính năng (chẳng hạn chính sách nội dung JobPosting).
  • JSON-LD là định dạng được khuyến nghị cho cả ba — dễ bảo trì ở quy mô lớn hơn Microdata/RDFa nhúng.

Mỗi kiểu kết nối ra sao ngoài mã đánh dấu trên trang

Giá trị thống nhất thực sự không nằm ở phân loại — mà ở chỗ Google dành cho nội dung dạng danh sách một cách hiển thị theo dòng sản phẩm riêng:

  • Product / ProductGroup ↔ Google Merchant Center. Bạn có thể cung cấp dữ liệu sản phẩm bằng dữ liệu có cấu trúc trên trang, nguồn cấp Merchant Center hoặc cả hai. Google khuyến nghị dùng cả hai để tối đa hóa điều kiện đủ, và đối soát hai nguồn này — chúng là các hệ thống tách biệt được xác thực riêng, không phải một lần gửi duy nhất. Vượt qua Rich Results Test không có nghĩa nguồn cấp hợp lệ, và ngược lại. Giá và tình trạng còn hàng phải khớp giữa mã đánh dấu trên trang, nguồn cấp và bước thanh toán.
  • JobPosting ↔ Google for Jobs. Mã JobPosting hợp lệ giúp một trang có duy nhất một tin tuyển dụng đủ điều kiện vào trải nghiệm Jobs — một vertical riêng, không phải bề mặt Shopping.
  • Trả hàng và vận chuyển cũng tách ở cấp chi tiết hơn. MerchantReturnPolicy thường nằm ở cấp Organization — chính sách mặc định toàn trang về thời hạn và điều khoản trả hàng. OfferShippingDetails hoạt động ở cấp Offer và dùng để ghi đè mặc định cấp tổ chức cho một mặt hàng cụ thể (ví dụ sản phẩm nặng hơn hoặc khu vực có mức phí khác). Hãy coi đó là hai bản ghi riêng có thể cũ lệch nhau; chính sách cấp tổ chức và mọi ngoại lệ cấp offer đều cần được duy trì riêng. Quy tắc ưu tiên đầy đủ nằm trong bài chuyên sâu MerchantReturnPolicy và OfferShippingDetails.
  • Dữ liệu có cấu trúc trên trang, nguồn cấp Merchant Center và nội dung mà các tính năng Google Search hoặc câu trả lời AI thực sự hiển thị là ba hợp đồng riêng, không phải một pipeline — mã đánh dấu hợp lệ chỉ mang lại điều kiện đủ ở lớp đầu, không tự động điền lớp thứ hai và không bảo đảm bất kỳ điều gì ở lớp thứ ba. Vượt qua một lớp không chứng minh các lớp còn lại tương đương.

Sự bất đối xứng với Bing đáng được nói thẳng: Bing xác thực cả ba kiểu một cách chung theo hình dạng schema.org, nhưng không công bố bảng thuộc tính bắt buộc/khuyến nghị hay chính sách nội dung riêng cho bất kỳ kiểu nào, và không có trải nghiệm tương đương Merchant listings hoặc Google for Jobs. Riêng ProductGroup, Fabrice Canel của Bing nói (tháng 9 năm 2024) rằng Bing vẫn chưa dùng mã ProductGroup trong chú thích mua sắm, dù nó “on their radar”. (bản dịch) «đang được họ theo dõi.» Tóm lại: cùng vốn từ vựng nền tảng, nhưng chỉ Google đã xây dựng các trải nghiệm rich result chuyên biệt, được ghi lại, trên đó.

Khác biệt về rủi ro và vòng đời

Đây là điểm tương phản tôi muốn mọi người ghi nhớ nhất vì ít nơi trình bày rõ: danh sách cũ cần vệ sinh vòng đời ở cả ba kiểu — nhưng mức độ rủi ro khác nhau rõ rệt.

  • Một Product cũ hoặc hết hàng chủ yếu mất điều kiện đủ cho rich result hoặc hiển thị nhãn “sold out”/“out of stock”. Khó chịu, nhưng không thảm họa.
  • Một JobPosting cũ chưa gỡ là cấp rủi ro khác. Google nói: “We don’t allow expired job postings,” (bản dịch) «Chúng tôi không cho phép tin tuyển dụng đã hết hạn», và việc không hết hạn hoặc gỡ tin đã đóng “may result in a manual action.” (bản dịch) «có thể dẫn đến manual action.» Đây là hậu quả tệ hơn đáng kể so với việc chỉ không đủ điều kiện. Có ba cách Google chấp nhận để hết hạn một tin: đặt validThrough ở quá khứ, trả về 404/410 hoặc gỡ mã đánh dấu.

Bài học chung là danh sách có cấu trúc cần một quy trình vòng đời — nhưng nếu chỉ xây dựng một pipeline dọn dẹp, hãy ưu tiên cho việc làm.

Commerce schema có giúp SEO không?

Không, không giúp xếp hạng. John Mueller nói trực tiếp: “Structured data won’t make your site rank better.” (bản dịch) «Dữ liệu có cấu trúc sẽ không giúp trang web của bạn xếp hạng tốt hơn.» Schema giúp đạt điều kiện đủ cho rich result và trải nghiệm chuyên biệt, đồng thời giúp Google hiểu các trang của bạn. Đánh đồng “I added schema” (bản dịch) «Tôi đã thêm schema» với “I’ll rank better” (bản dịch) «Tôi sẽ xếp hạng tốt hơn» là một trong những lầm tưởng phổ biến nhất về cả ba kiểu.

Và vấn đề không chỉ là thứ hạng. Điều kiện đủ, rich result thực sự được hiển thị, mức tăng CTR và doanh thu là bốn tuyên bố riêng biệt — đừng gộp chúng làm một. Mã đánh dấu hợp lệ không bảo đảm danh sách của bạn xuất hiện trong Shopping hay trải nghiệm Jobs (điều kiện đủ không đồng nghĩa hiển thị), không bảo đảm có thêm lượt nhấp, và — vì không kiểu schema nào trong hub này được ghi nhận là tín hiệu tăng khả năng hiển thị trong AI — cũng không phải đòn bẩy để xuất hiện hoặc được trích dẫn trong AI Overviews hay AI Mode. Hãy đo từng kết quả riêng; triển khai schema đáng làm để giành một tính năng tìm kiếm mà nó có thể mang lại, không phải làm đại diện cho mọi kết quả còn lại.

Quan điểm của tôi cũng giống Mueller: hãy hiểu schema thực sự dùng để làm gì trước khi dành thời gian phát triển cho nó. Schema vẫn còn được dùng — Mueller cũng từng nói Google không khai tử schema — nhưng bạn triển khai nó để giành một tính năng tìm kiếm, không phải để đẩy thứ hạng, bảo đảm một lượt nhấp hay đưa câu trả lời AI lên cao hơn.

Đọc gì tiếp theo

Hub này là bản đồ; mỗi mục sau đây có bài chuyên sâu riêng nằm bên dưới:

  • Product schema — hai trải nghiệm Google (product snippets và merchant listings), cách tách thuộc tính bắt buộc/khuyến nghị, enum availability và gỡ rối nhầm lẫn giữa nguồn cấp và mã đánh dấu. Bắt đầu ở đây nếu trang của bạn bán một mặt hàng.
  • ProductGroup schema — nhóm biến thể bằng hasVariant/variesBy/productGroupID, mô hình một trang so với nhiều trang, điểm dễ nhầm về URL đầy đủ của schema.org và đối soát với item_group_id của Merchant Center. Bắt đầu ở đây nếu mặt hàng có các kích cỡ/màu sắc/chất liệu.
  • JobPosting schema — thuộc tính bắt buộc so với khuyến nghị, xử lý remote/hybrid, quy tắc một tin mỗi trang, vệ sinh hết hạn và thay đổi quyền truy cập Indexing API giai đoạn 2024–2025 cho job board. Bắt đầu ở đây cho trang tuyển dụng hoặc job board.
  • MerchantReturnPolicy schema — kiểu thuộc tính lồng nhau cho chính sách trả hàng: thứ tự ưu tiên giữa mã đánh dấu và cài đặt Merchant Center, cùng nhầm lẫn giữa applicableCountry và returnPolicyCountry.
  • OfferShippingDetails schema — thuộc tính đi kèm về phí vận chuyển/điểm đến/thời gian giao và khi nào Google thực sự yêu cầu chúng cho free listings.
  • Review schema — hồ sơ điều kiện đủ riêng đằng sau nhánh review/aggregateRating của rich result Product: quy tắc review đơn lẻ so với tổng hợp, hạn chế review tự phục vụ và lý do không phải trang sản phẩm nào cũng tự động đủ điều kiện hiện sao. Hãy bắt đầu ở đây khi bạn đã qua câu hỏi “which of the three do I use” (bản dịch) «Tôi dùng kiểu nào trong ba kiểu» và muốn biết “can this page actually show review stars” (bản dịch) «trang này có thực sự hiển thị sao đánh giá không».

Để có bức tranh rộng hơn, hub này nằm trong cụm con dữ liệu có cấu trúc lớn hơn — hãy xem thêm bài viết schema markup cùng cụm để tìm hiểu vốn từ vựng, định dạng và vòng đời ngừng dùng. Tất cả nằm trong cụm on-page, nơi dữ liệu có cấu trúc đứng cạnh phần còn lại của SEO kỹ thuật on-page.

Thêm ghi chú chuyên gia

Ghim trích dẫn chuyên gia

Người mới? Hãy tạo hồ sơ chưa có người xác nhận cho họ tại /admin/experts/ → Ghim trích dẫn chuyên gia trước.