Product Schema

How to implement schema.org/Product markup for Google's product snippet and merchant listing rich results — required vs. recommended properties, the availability enum, why Product schema isn't the same as a Merchant Center feed, and how to fix the common Search Console errors.

First published: Jun 27, 2026 · Last updated: Jul 26, 2026 · Advanced
demand #7 in Structured Data#22 in On-Page#103 in Technical SEO#136 on the site

Product schema (schema.org/Product) is structured data that tells search engines a page's product name, price, availability, and reviews, so the page can qualify for Shopping-style rich results. The minimum for a product snippet — the lighter of Google's two experiences — is name plus at least one of offers, review, or aggregateRating; a merchant listing needs offers outright, not as one option among three. Google splits this into two experiences with different strictness — product snippets (price/reviews on any product page; priceCurrency only recommended, price of 0 allowed) and merchant listings (transactional pages; require image, offers, and a price greater than zero with priceCurrency). The single biggest confusion I see: Product schema markup and a Google Merchant Center feed are separate systems with separate validators — passing the Rich Results Test doesn't validate your feed, and price/availability must match across your markup, your feed, and your actual checkout or Google flags a mismatch. Valid markup only makes you eligible; Google still decides whether to show the result.

TL;DR — schema.orgSchema markup is code that uses the schema.org vocabulary to label what your content means so search engines can understand it and show rich results. It's most often written in JSON-LD, and it's not a direct ranking factor./Product markup (usually JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal.) makes a product page eligible for two distinct Google experiences: product snippets (price/reviews on any product page — priceCurrency only recommended, price: 0 allowed) and merchant listings (transactional pages — require image, offers, and a price > 0 with priceCurrency). Minimum for a product snippet: name + at least one of offers/review/aggregateRating — a merchant listing needs offers outright, not as one option among three. The biggest trap is conflating this on-page markup with a Google Merchant CenterGoogle Merchant Center (GMC) is a free platform where retailers upload and manage product data so their products can appear across Google — Shopping, organic Search product grids, Images, Lens, and AI surfaces. Since 2020 it powers free (organic) product listings, not just paid Shopping ads. feed — separate system, separate validator; Google reconciles them, and price/availability must match across markup, feed, and checkout or Google flags a mismatch. Valid markup only earns eligibility; Google’s systems still decide whether to show the result. Whether this article’s implementation angle or the broader ecommerce-SEO angle is what you’re here for, both live in the same place — this topic is cross-listed under structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. and under ecommerce SEOEcommerce SEO is the practice of optimizing an online store so its product and category pages rank in organic search and attract purchase-intent visitors. It uses the same Google algorithm as any other site, but compounds the usual SEO work with commerce-specific challenges like faceted navigation, product variants, and platform-imposed URLs. for exactly that reason.

What Product schema does — two experiences, not one

Most guides flatten “Product schemaProduct schema (schema.org/Product) is structured data that tells search engines a page's product name, price, availability, and reviews so it can appear in Shopping-style rich results. It's separate from a Google Merchant Center feed, though Google reconciles the two.” into a single requirements list. Google actually splits it into two rich-result experiences with different strictness, and knowing which one you’re aiming for is half the battle:

  • Product snippets — for non-transactional or general product pages, emphasizing reviews and price. Lighter requirements.
  • Merchant listings — for pages where the product can be purchased directly, emphasizing full shopping details (price, availability, shipping, returns). Stricter requirements. Evidence for this claim Google documents separate product snippet and merchant listing experiences with different property requirements. Scope: Google Search Product documentation; validate against the intended experience. Confidence: high · Verified: Google: Product structured data

Google’s own framing: “Two markup types exist: Product snippets for non-purchase pages, emphasizing reviews, and Merchant listings for purchase pages, highlighting product details like sizing and shipping.” Same schema.org/Product vocabulary underneath — the difference is which properties Google requires for each.

The minimum for a product snippet — Google’s lighter of the two experiences: Product.name, plus at least one of offers, review, or aggregateRating. That “one of three” flexibility is specific to product snippets. A merchant listing always needs offers — Google’s own required-property table lists name, image, and offers as required, full stop, with no either/or. And a scoping rule worth internalizing — Google: “product rich resultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. only support pages that focus on a single product (or multiple variants of the same product).” A category page (“shoes in our shop”) is not a product; for a line of variants, reach for ProductGroup markup instead (a direct sibling topic).

Product level

PropertyProduct snippetMerchant listing
nameRequiredRequired
imageRecommendedRequired
offers(one of offers/review/rating)Required
descriptionRecommendedRecommended
skuRecommendedRecommended
gtin / mpnRecommendedRecommended
brandRecommendedRecommended (brand.name)
aggregateRatingRecommendedRecommended
reviewRecommendedRecommended

Offer level (offers, an Offer object)

PropertyProduct snippetMerchant listing
priceRequired (0 allowed for free items)Required (must be > 0)
priceCurrencyRecommendedRequired
availabilityRecommendedRecommended
priceValidUntilRecommendedRecommended
itemConditionRecommendedRecommended
hasMerchantReturnPolicyRecommended
shippingDetailsRecommended
urlRecommendedRecommended

The two rules people miss most: for merchant listings, “merchant listing experiences require a price greater than zero” (product snippets tolerate 0), and priceCurrency is required for merchant listings but only “currently recommended” for basic product snippets.

Required/recommended split verified directly against Google’s Product snippet and Merchant listing structured-data docs, 2026-07-18 — these tables can change, so re-check them against the live pages before relying on them for a launch.

The availability property and its enum values

availability isn’t strictly required for eligibility, but treat it as essential — it drives the “In stock” / “Out of stock” label users see, and it’s a key field Google matches against your Merchant Center feed. It takes a schema.org enum, and passing a plain string like "in stock" instead of the URL/enum value is one of the most common validation errors.

The full set Google documents for Product:

ValueMeaning
InStockAvailable to buy now
OutOfStockNot currently available
PreOrderNot released yet; orders accepted for future delivery
PreSaleAvailable for order before general availability
BackOrderOrdered but temporarily out of stock
OnlineOnlyOnly available online
InStoreOnlyOnly available in physical stores
LimitedAvailabilityLimited quantity
DiscontinuedNo longer produced
SoldOutSold out (e.g., a limited run)

For the SEO handling of out-of-stock and discontinued items — whether to keep, redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't., or noindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed. them — the out-of-stock products article in the ecommerce cluster goes deeper than the markup alone.

TIP Check the product signals in the page HTML

This catches missing Product, Offer price, and availability markup. A raw-HTML result cannot prove that the visible price matches schema, a feed, or checkout, so run those consistency checks separately.

Audit a live product detail page with my checker before debugging Merchant Center or Search Console. PDP SEO Checker Free

  1. Enter a representative product detail page URL.
  2. Confirm Product, Offer price, and availability are present in the fetched HTML.
  3. Then compare the visible page, structured data, Merchant Center feed, and checkout values.
Presence checks narrow the markup problem; consistency across page, feed, and checkout remains a separate validation step.

Product schema vs. Google Merchant Center feeds — validated separately

This is the confusion I most want to kill. Product schema markupSchema markup is code that uses the schema.org vocabulary to label what your content means so search engines can understand it and show rich results. It's most often written in JSON-LD, and it's not a direct ranking factor. and a Merchant Center product feed are two separate systems. Google reconciles them, but they are not one submission and they are not validated together.

Google spells out the three options: “To provide rich product data to Google Search you can add Product structured data to your web pages, upload data feeds with Google Merchant CenterGoogle Merchant Center (GMC) is a free platform where retailers upload and manage product data so their products can appear across Google — Shopping, organic Search product grids, Images, Lens, and AI surfaces. Since 2020 it powers free (organic) product listings, not just paid Shopping ads. and opt into free listingsFree product listings (originally launched as \"Surfaces across Google\" in 2020) are unpaid, organic product placements Google generates from your Merchant Center feed or on-page Product structured data. There's no bid and no CPC — Google matches your product data to a query and decides whether and where to show it — across the Shopping tab, Google Search (Popular Products grids), Images, Lens, Maps/Business Profile, YouTube, and Gemini; AI Mode and AI Overviews aren't on Google's official surfaces list, though practitioner reporting links them to the same eligibility pool. They're enabled by default in most cases for new Merchant Center accounts. within the Merchant Center console, or both.” Evidence for this claim Google treats on-page Product structured data and Merchant Center feeds as separate, complementary ways to provide product data. Scope: Google Search ecommerce guidance; the systems can be reconciled but are validated separately. Confidence: high · Verified: Google: Share product data And on why you might do both: “Providing both structured data on web pages and a Merchant Center feed maximizes your eligibility to experiences and helps Google correctly understand and verify your data. Some experiences combine data from structured data and Google Merchant Center feeds if both are available. For example, product snippets may use pricing data from your merchant feed if it’s not present in the structured data on the page.”

Read that carefully: they’re combined when available, which is exactly why people assume they’re the same system. The practical consequences:

  • Two validators. Markup is checked with the Rich ResultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. Test and monitored in Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results.; the feed is checked with Merchant Center diagnostics. Passing the Rich Results Test says nothing about whether your feed is valid, and vice versa.
  • You don’t need a feed to earn a merchant listing. On-page structured data alone can produce merchant-listing rich results. As John Mueller framed it, there’s also “the possibility to submit a feed to your merchant center account, to show products there.” The feed is an additive path, not a prerequisite.

Keep price and availability consistent across markup, feed, and checkout

The Merchant Center spec is explicit that merchants must “accurately submit the product’s price and currency, and match with the price from your landing page, structured data, and at checkout.” So price and availability have to agree in three places: your on-page Offer, your Merchant Center feed, and the actual checkout. If they diverge, Google can flag a mismatch or suspend the item even when your JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. validates cleanly. Clean markup is necessary; consistency is what keeps the listing live. If you sell on Bing too, the same discipline applies to Microsoft Merchant CenterMicrosoft's free platform (inside Microsoft Advertising, formerly 'Bing Merchant Center') where retailers create a store and submit a product feed. One feed powers both free Product Listings on the Bing Shopping tab and paid Microsoft Shopping Campaigns — the Bing/Copilot-side twin of Google Merchant Center. As of 2026 it's also the product-data foundation Copilot draws on for AI-assisted shopping and checkout. — its feed system is the Bing-side equivalent of Google’s.

Reviews and ratings — and the self-serving-review myth

review and aggregateRating remain documented, eligible Product properties for star ratings — nothing about that changed. Two rules to get right:

  • Reviewer names must be a person or team, not promotional text. Google’s examples: “Not recommended: ‘50% off on Black Friday’. Recommended: ‘James Smith’ or ‘CNET Reviewers’.”
  • Pros and cons structured data is editorial-only. Google: “Only editorial product review pages are eligible for the pros and cons appearance in Search results.” A merchant describing its own product can’t use it.

Now the myth I want to correct precisely, because it gets mangled constantly:

“Google killed review stars for product pages the same way it did for business reviews.” — False, and the distinction matters.

The self-serving-reviews restriction is scoped to LocalBusiness / Organization markup, not Product. Google’s wording: “If the entity that’s being reviewed controls the reviews about itself, their pages that use LocalBusiness or any other type of Organization structured data are ineligible for star review feature.” That policy dates to September 2019 and targets a business rating itself. Product review/aggregateRating are still eligible.

What has tightened is genuine-review enforcement more broadly — Google’s Reviews System, the Product Reviews updates, and site-reputation-abuse policy increasingly discount manipulated or incentivized ratings even where the markup validates. So the correct statement is: Product review stars are still eligible, but the ratings must be genuine, user-sourced, and about the product — not a blanket structured-data ban. Also don’t aggregate ratings from other sites into your own markup; Google’s guidance is a flat “Don’t aggregate reviews or ratings from other websites.” The deeper eligibility discussion lives in the Review schemaReview schema (schema.org/Review) is structured data for a single critic's or user's evaluation of one specific thing — one author, one itemReviewed, one reviewRating — distinct from AggregateRating, which summarizes many reviews into an average. and AggregateRating schema siblings rather than here.

Identifiers and trust signals: sku, gtin, mpn, brand

These are “recommended,” not “required,” in Search’s own spec — but they carry real weight on the Merchant Center / shopping side, where product matching against the global catalog depends on them:

  • gtin — the global identifier (UPC/EAN/ISBN). The strongest matching signal; supply it whenever the product has one.
  • mpn — manufacturer part number, for products without a GTIN.
  • brand — the manufacturer/brand name (brand.name).
  • sku — your own internal identifier.

Fill these in even though Search calls them optional; incomplete identifiers are a common reason a product is technically eligible yet underperforms in shopping surfaces where matching depends on them.

Return policy and shipping

For merchant listings, hasMerchantReturnPolicy and shippingDetails are recommended. Google’s steer: define the return policy once at the Organization level, not per-offer — “We recommend you provide a global return policy for your business under Organization markup instead… Only if some of your products have specific return policies… use this property under Offer.” That’s where the Organization schemaOrganization schema (schema.org/Organization) is structured data that describes the business or entity itself — name, logo, official URL, social profiles, contact info, and identifiers — rather than a page's content. Google says it can help disambiguate your brand and some properties can influence visual elements like Knowledge Panel/attribution; it has no required properties and doesn't guarantee a Knowledge Panel. sibling comes in — the site-wide return policy belongs there, with per-Offer overrides reserved for exceptions.

On images, Google recommends “multiple high-resolution images (minimum of 50K pixels when multiplying width and height) with the following aspect ratios: 16x9, 4x3, and 1x1.”

Why your valid markup still shows no rich result

Eligibility is not display. Mueller listed what it takes: “It requires that the page be indexed, that the page has valid structured data on it, and that our systems have determined that it’s worth showing this structured data.” That last clause is the one people forget — you can do everything right and Google can still decide not to surface the enhancement. Getting the markup correct only puts you in the running.

JSON-LD and the AI-shopping angle

Use JSON-LD — it’s Google’s recommended format and by far the most maintainable at ecommerce scale (it isn’t interleaved with your HTML and can be injected by your platform). Beyond classic rich results, there’s a growing practitioner theory that complete Product schema also helps AI shopping tools read and recommend products — worth flagging as an open, unverified angle rather than something Google’s Product structured-data documentation establishes or promises. Getting the markup right costs nothing extra either way, so treat it as a reasonable bet, not a guaranteed payoff.

For where Product schema sits in the wider structured-data picture, see the broader Schema Markup and Structured Data hubs this article nests under; for the full product page, see the product page SEOProduct page SEO is the practice of optimizing an individual product detail page (PDP) so it ranks in organic search and earns rich results. It blends unique product copy, structured data, variant canonicalization, image SEO, and customer reviews — but the structured data earns rich results and eligibility for free product listings, it doesn't make the page rank. work in the ecommerce cluster.

Add an expert note

Pin an expert quote

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