Product schema and AI shopping answers
- Schema type
ProductOfferAggregateRating- Checked against
- Google Search Central and schema.org documentation, read November 2026
- Author
- The wprichsnippets.com editors
- Published
- Updated
Product schema is structured data that describes one product: its name, image, offer, price, availability and ratings. Google splits it into product snippets, for pages where people cannot buy, and merchant listings, for pages where they can. Google asks that these facts match the visible page and your Merchant Center data for its shopping and AI features.

01What is product schema?
Product schema is the schema.org Product type and the Offer nested in it, written as JSON-LD on the page for one product. It states what the item is, what it costs, whether it is in stock and how buyers rate it.
Google's introduction to product structured data explains what the markup can do: product information can appear in richer ways in Search, including Google Images and Google Lens, with price, availability, review ratings and shipping information shown in the result. Which of those details appear is Google's call, query by query.
Product schema is the most commercial type in our schema types section, and the one most often generated by a shop plugin rather than written by hand. If you want the general picture first, the handbook home answers how do machines read structured data?
02Product snippets or merchant listings: which one applies?
Google divides product markup into two classes, according to its introduction. Product snippets are for product pages where people cannot buy directly, such as an editorial review. Merchant listings are for pages where customers can buy from you.
| Product snippets | Merchant listings | |
|---|---|---|
| Page type | Product pages without a direct purchase, such as editorial reviews | Pages where customers buy from you |
| Required beyond name | One of review, aggregateRating or offers | image and offers |
| Offer type | Offer or AggregateOffer | Offer, with you as the seller |
| Price | Any price | A price greater than zero |
| Extra options | Pros and cons on editorial reviews | Shipping, returns, sizing and variants |
The two overlap. Google says that adding the required merchant listing properties generally makes a product page eligible for product snippets too, so a shop only needs to aim for merchant listings.
Both apply to one product per page. The product snippet documentation says product rich results only support pages that focus on a single product or variants of the same product, gives "shoes in our shop" as an example of something that is not a specific product, and recommends marking up product pages rather than category pages. It also asks for a distinct URL per currency when a product is sold in more than one.
03How should you mark up offer, price and availability?
The merchant listing documentation requires a name, an image and an offer. The offer needs a price, or a priceSpecification with one, and a priceCurrency in three-letter ISO 4217 format. Availability is recommended, using schema.org values such as InStock, OutOfStock, BackOrder, PreOrder, LimitedAvailability or Discontinued.
Unlike product snippets, merchant listing experiences require a price greater than zero.
Sale prices have a specific pattern. The active price is the one in price; to show it as a sale, add a second price for the original amount marked with a priceType of StrikethroughPrice, and never mark the active price with a priceType. If both price and priceSpecification state an active price, Google uses price and ignores priceSpecification.
Variants need their own decision. A shirt in four sizes and three colours can be one product page with a selector or several pages. Google's product documentation says both product snippets and merchant listings support product variant markup, which tells Google which items are variations of the same parent, and that variants with distinct URLs count as single-product pages.
itemCondition is worth adding for anything sold used or refurbished, using schema.org values such as NewCondition, UsedCondition or RefurbishedCondition. Whatever the markup says about condition, price or stock must match the page a shopper sees at the same moment.
This is where products and software part ways. A free app can carry an offer with a price of 0, as our guide to SoftwareApplication schema explains, but a merchant listing cannot.
04How do ratings work on product pages?
A product's aggregateRating and review follow the same review snippet guidelines as every other type, set out in our guide to review schema and review snippets. The ratings must come from your own users, be visible on the page and not be copied from other websites.
Pros and cons are narrower. The product snippet documentation says only editorial product review pages are eligible for the pros and cons appearance, not merchant product pages or customer product reviews. A shop's product page can show customer ratings; it cannot mark up its own list of pros and cons for that treatment.
The same documentation notes that the Rich Results Test may warn when you provide offers without review or aggregateRating. The warning is not an error, and the honest response to it is to leave ratings out until you have real ones.
05How does product markup reach AI shopping answers?
Google's guidance on AI features in Search says there is no special schema.org markup needed to appear in AI Overviews or AI Mode. Among the basics it lists two that matter for shops: making sure structured data matches the visible text on the page, and checking that Merchant Center and Business Profile information is up to date.
In other words, Google points shops to the same product data it uses elsewhere in Search. The product introduction notes that some experiences combine data from on-page markup and Merchant Center feeds when both are available, and that product snippets may use pricing from a feed when the page markup lacks it.
Delivery method matters. The merchant listing guidelines recommend putting Product markup in the initial HTML and warn that markup generated by JavaScript can make Shopping crawls less frequent and less reliable, which is a problem for prices and stock that change often.
Answer engines outside Google that show shopping results have not published, in the documentation read for this guide, how much weight they give on-page Product markup. Server-rendered HTML with the price, stock status and key specifications in plain text is the common ground every crawler can read.
06Feed or on-page markup?
Both, if you can. Google's introduction says that providing structured data on pages and a Merchant Center feed maximizes eligibility for its experiences and helps it understand and check your data. A feed is the faster channel for price and stock changes; on-page markup ties those facts to the page a shopper lands on.
Whichever channel carries a change first, the page must catch up quickly. A price cut that reaches the feed in the morning and the page in the evening leaves the two disagreeing for a day, and the page is what shoppers and crawlers see when they arrive. Generate the visible price, the JSON-LD and the feed row from one source in your shop system.
On WordPress, WooCommerce prints its own product markup, and its gaps are usually brand, global identifiers and review authors. Our guide to WooCommerce product and review schema covers what it outputs and how to fill those gaps without fighting the theme.
07Product JSON-LD example
The example is a merchant listing for a fictional mug, with a sale price, stock status and a rating average from the shop's own customers. All values are examples, including the GTIN.
1{2 "@context": "https://schema.org",3 "@type": "Product",4 "name": "Example Ceramic Mug",5 "image": [6 "https://example.com/images/mug-1x1.jpg",7 "https://example.com/images/mug-4x3.jpg",8 "https://example.com/images/mug-16x9.jpg"9 ],10 "description": "A 350 ml stoneware mug with a matte glaze.",11 "sku": "EX-MUG-350",12 "gtin13": "0012345678905",113 "brand": {14 "@type": "Brand",15 "name": "Example Pottery"16 },17 "offers": {18 "@type": "Offer",19 "url": "https://example.com/shop/example-ceramic-mug/",20 "priceCurrency": "USD",21 "price": 18,222 "priceSpecification": {23 "@type": "UnitPriceSpecification",24 "priceType": "https://schema.org/StrikethroughPrice",325 "price": 24,26 "priceCurrency": "USD"27 },28 "availability": "https://schema.org/InStock",29 "itemCondition": "https://schema.org/NewCondition"30 },31 "aggregateRating": {32 "@type": "AggregateRating",33 "ratingValue": 4.5,34 "ratingCount": 36435 }36}Shipping details and return policies can be added to the offer, and Google's product introduction also recommends describing return policies under your Organization markup. Add them only when the visible page states the same terms.
08Questions
Q1Do I need a Merchant Center feed if I have product markup?
No, on-page markup works on its own. Google's product documentation says that providing both page markup and a Merchant Center feed maximizes eligibility for its experiences and helps it understand and check the data. If prices or stock change often, a feed is worth the extra setup.
Q2Can a category page use Product schema?
Not for product rich results. Google's product snippet documentation says these results only support pages that focus on a single product or variants of one product, and recommends marking up product pages rather than pages that list products or a category. A category page is a list.
Q3Why does the Rich Results Test warn about offers without ratings?
Google's product snippet documentation says the test may report a warning if you provide offers without review or aggregateRating. It is a warning, not an error: the page can still be eligible. Add ratings only when you have genuine ones from your own customers to show on the page.
Q4Should product markup be added with JavaScript?
Google recommends putting Product markup in the initial HTML. Its merchant listing documentation warns that markup generated by JavaScript can make Shopping crawls less frequent and less reliable, which matters for fast-changing details such as price and availability. Server-side output is the safer default.
09Sources
- Introduction to Product structured dataGoogle Search Central
- Merchant listing (Product, Offer) structured dataGoogle Search Central
- Product snippet (Product, Review, Offer) structured dataGoogle Search Central
- AI features and your websiteGoogle Search Central



