Winsignia
Insights

How to Add Product Schema Markup

Scott FishmanBy Scott Fishman, Winsignia
5 Min Read
Updated August 2026

Product schema tells search engines and AI shopping tools exactly what you sell, what it costs, and whether it is in stock right now. It is the schema type behind price snippets, availability badges, and increasingly, the products an AI assistant recommends when someone asks it to shop.

Quick Answer

Product schema tells search engines and AI shopping tools exactly what you sell, what it costs, and whether it is in stock, using an offers block with a real currency, price, and availability value. An estimated 43% of U.S. online shoppers now use an AI assistant for product research, and that assistant needs your price and availability in a format it can trust immediately rather than a paragraph it has to interpret.

Key Takeaways
  • The price field should be a plain number written as a string, with no currency symbol, the symbol belongs in priceCurrency instead.
  • Only add aggregateRating if it reflects genuine customer reviews you actually collected, a fabricated rating violates Google’s guidelines and risks getting all your structured data ignored.
  • Schema needs to update the moment your price or stock status changes, stale Product schema confidently tells a model something that is no longer true.

What Product Schema Actually Does

An estimated 43% of U.S. online shoppers now use an AI assistant for product research, and among that group, a growing share treats it as their primary research tool rather than a supplement to a search engine, according to the data in our AI Search Statistics 2026 roundup. An assistant answering a question like “where can I buy sourdough bread nearby” needs your price and availability in a format it can trust immediately, not a paragraph it has to interpret first.

The Code: A Working Example

Here is a working example for a single product page:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Classic Sourdough Loaf",
  "image": "https://riversidebakery.example/products/sourdough.jpg",
  "description": "A naturally leavened sourdough loaf, baked fresh every morning.",
  "brand": {
    "@type": "Brand",
    "name": "Riverside Bakery"
  },
  "offers": {
    "@type": "Offer",
    "priceCurrency": "USD",
    "price": "8.50",
    "availability": "https://schema.org/InStock",
    "url": "https://riversidebakery.example/menu/sourdough-loaf"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "reviewCount": "132"
  }
}

Why the Offers and Review Fields Matter

The offers block is what actually unlocks price display in rich results, and it needs a real currency, a real price, and an availability value pulled from schema.org’s own list (InStock, OutOfStock, PreOrder, and a handful of others). The aggregateRating block is optional but valuable, and it is only valid if the rating reflects genuine customer reviews you actually collected, never a number chosen to look good. Fabricated ratings violate Google’s review snippet guidelines directly, which state plainly not to include fake or undisclosed incentivized reviews in markup, and they are one of the fastest ways to get structured data ignored across your entire site.

Where to Add It on Your Site

Add one Product block per product page, matching the visible price and availability on that page exactly. If your price changes seasonally or your stock runs out, the schema needs to update at the same moment the page does. A model or a shopping feed reading stale Product schema will confidently tell someone something that is no longer true.

How to Validate It

Run each product page through Google’s Rich Results Test to confirm it qualifies for price and availability rich results, then check the raw JSON-LD against Schema.org’s Validator. Pay particular attention to the price field: it should be a plain number written as a string, with no currency symbol inside it, since the symbol belongs in priceCurrency instead.

FAQ

Do I need aggregateRating if I do not have reviews yet?
No. Leave it out entirely rather than adding a rating that is not real. Add it later once you have genuine customer reviews to reflect.

What availability values does schema.org accept?
The most common are InStock, OutOfStock, PreOrder, and Discontinued, each written as a full schema.org URL such as https://schema.org/InStock rather than plain text.

Does Product schema work for services instead of physical goods?
Not directly. A service based offering should use Service schema instead, which describes what you provide rather than what you ship.

Go deeper on structured data for offerings:

Want to Be the Brand AI Recommends?

Book a call and we’ll map what it takes to get there for your business.

Book a Call


Winsignia
Home
Blog
Services
Book a Call

© 2026 Winsignia LLC, Florida, USA. All rights reserved.