Ecommerce Schema Markup in 2026: What an Online Store Should Add, and What Google Retired

Ecommerce schema is the schema.org structured data an online store adds so search engines can read its products, prices, variants, reviews and store policies. Which types Google still uses, what each one requires, what it retired in 2025 and 2026, and how product data reaches AI answers, with every source linked and read on 16 October 2026.

By TopCitedPublished
Back to Blog

Ecommerce schema is the structured data, written in the schema.org vocabulary, that an online store adds to its pages so search engines can read its products, prices, stock, variants, reviews and store policies as data rather than as prose. For most stores in 2026, ecommerce schema markup comes down to five pieces:

  • Product with a nested Offer on every page where a shopper can buy
  • ProductGroup where a product comes in sizes, colors or other variants
  • review and rating markup, only where real customer reviews are visible on the page
  • BreadcrumbList for the path to each page
  • one Organization block, using the OnlineStore subtype, that carries your return and shipping policies

This guide sets out which schema types Google still uses for ecommerce, what each one requires, what Google has retired, and how product data reaches AI answers. It is built on primary documentation, each page linked where it is used and each read on 16 October 2026:

Google and OpenAI revise these pages often, so we say when each one was read. TopCited builds AI-answer monitoring and content optimization; where that fits is set out near the end.

Key definitions

TermWhat it means
Structured dataIn Google's words, "a standardized format for providing information about a page and classifying the page content".
schema.orgThe shared vocabulary that structured data uses. It defines a Product as "Any offered product or service."
JSON-LDOne of the three formats Google supports, alongside Microdata and RDFa. Google recommends it where your setup allows.
Rich resultA search result shown with extra detail drawn from structured data, such as price, availability or star ratings.
Merchant listingGoogle's name for product markup on pages where a shopper can buy the product from you.
Product snippetGoogle's name for product markup on pages where people cannot buy directly, such as an editorial review.
ProductGroupA schema.org type for "a group of Products that vary only in certain well-described ways, such as by size, color, material etc."

Which ecommerce schema goes on which page

Google splits product markup into two classes. Merchant listings are "for pages where customers can purchase products from you". Product snippets are "for product pages where people can't directly purchase the product". Google notes that adding the required merchant listing properties generally makes a page eligible for product snippets too. The rest of a store's markup follows from its page types.

PageSchema typeWhat Google requiresAlso worth adding
Product page where shoppers buy from youProduct with a nested Offer (merchant listing)Product: name, image, offers. Offer: price and priceCurrency, directly or through priceSpecificationavailability, itemCondition, brand.name, gtin, sku, description, shippingDetails, hasMerchantReturnPolicy, and aggregateRating or review if reviews are visible
Product sold in sizes, colors or materialsProductGroup, plus Product markup for each variantProductGroup: name. Each variant: a unique ID such as sku or gtin, plus the merchant listing propertiesvariesBy, hasVariant, productGroupID
Editorial review or comparison page, no purchaseProduct (product snippet)name, plus at least one of review, aggregateRating or offerspositiveNotes and negativeNotes for pros and cons
Category or listing pageBreadcrumbList, not ProductitemListElement, with item, name and position on each ListItemGoogle recommends putting product markup on product pages rather than on pages that list products or a category
Home page or about pageOrganization, using the OnlineStore subtypeNo required propertieshasMerchantReturnPolicy, hasShippingService, hasMemberProgram, logo, url, contactPoint

What Google changed in 2025 and 2026

Google's documentation changelog records the changes that matter to a store. The dates are Google's.

  • FAQ rich results are gone. On 8 May 2026 Google added a deprecation notice saying the feature "will no longer appear in Google Search starting May 7, 2026". On 15 June 2026 it removed the documentation, because the feature "is no longer shown in Google Search results". How-to rich results went in September 2023, when Google removed that documentation because the rich result was "no longer shown in search results". Neither type is in Google's current list of supported structured data.
  • Shipping policies moved to the store level. On 12 November 2025 Google added documentation for merchant-level shipping policies, using ShippingService nested under Organization through hasShippingService. A product's own shippingDetails now overrides that standard policy, and it supports fewer properties.
  • Return policies did the same. Return policy markup got its own page on 10 June 2025. On 11 July 2025 Google clarified that merchant-level return policies must be defined under Organization markup, and that offer-level return policies support only a subset of them.
  • Loyalty programs became markable. Google has supported MemberProgram markup since 10 June 2025. It shows loyalty program information in Australia, Brazil, Canada, France, Germany, Mexico, the UK and the US.
  • Sale dates and categories were documented. On 7 July 2026 Google explained how validFrom, validThrough and priceValidUntil set the effective range of a sale price. It also explained how Product.category can carry your own category text or a Google product category.
  • Adult products got a property. hasAdultConsideration was added to merchant listing and product variant markup on 20 May 2026.
  • Fake reviews got a named rule. On 24 July 2026 Google added a review snippet guideline against fake and undisclosed incentivized reviews.

The product page: required and recommended properties

Merchant listing markup belongs only on pages where the shopper buys from you. Google says only those pages are eligible, "not pages with links to other sites that sell the product". An affiliate or review site uses product snippet markup instead.

PropertyOnMerchant listing statusWhat it holds
nameProductRequiredThe product's name
imageProductRequiredImage URLs that are crawlable, indexable and show the product
offersProductRequiredA nested Offer
price, or priceSpecification.priceOfferRequiredThe price the product is offered at now
priceCurrency, or priceSpecification.priceCurrencyOfferRequiredThe currency of that price
availabilityOfferRecommendedStock status, such as https://schema.org/InStock
itemConditionOfferRecommendedCondition, such as https://schema.org/NewCondition
shippingDetails, hasMerchantReturnPolicyOfferRecommendedOverrides of your store-wide shipping and return policies for this product
descriptionProductRecommendedThe product description, which Google calls strongly recommended
brand.name, gtin, sku, mpnProductRecommendedBrand and product identifiers
aggregateRating, reviewProductRecommendedRatings and reviews that are visible on the page
color, size, material, patternProductRecommendedThe attributes that tell variants apart

Here is a product page block, shortened from the example in Google's merchant listing documentation. The values are Google's placeholders:

{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "Executive Anvil",
  "image": [
    "https://example.com/photos/1x1/photo.jpg",
    "https://example.com/photos/4x3/photo.jpg",
    "https://example.com/photos/16x9/photo.jpg"
  ],
  "description": "Sleeker than ACME's Classic Anvil, the Executive Anvil is perfect for the business traveler looking for something to drop from a height.",
  "sku": "0446310786",
  "mpn": "925872",
  "brand": {
    "@type": "Brand",
    "name": "ACME"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": 4.4,
    "reviewCount": 89
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/anvil",
    "priceCurrency": "USD",
    "price": 119.99,
    "itemCondition": "https://schema.org/UsedCondition",
    "availability": "https://schema.org/InStock"
  }
}

The block goes in a JSON-LD script element in the page's HTML. Four rules from Google's merchant listing guidelines shape where it goes:

  • One product per page. Product rich results "only support pages that focus on a single product (or multiple variants of the same product)". Google's example of what does not count is "shoes in our shop".
  • Prefer the initial HTML. Google recommends that merchants put Product markup in the initial HTML. It warns that markup generated with JavaScript "can make Shopping crawls less frequent and less reliable", which matters most for price and availability, the facts that change fastest.
  • One currency per URL. If you sell in several currencies, Google asks for a distinct URL per currency.
  • Expect checking. Google "may attempt to verify merchant listing product data before showing the information in search results."

Prices: active, strikethrough and member

Google recognizes three kinds of price on an Offer:

  • Active price. The price the product is offered at now. Mark it with price, or with a priceSpecification that has neither of the two properties below.
  • Strikethrough price. The higher regular price during a sale, marked with priceType set to StrikethroughPrice. The active price then becomes the sale price automatically.
  • Member price. The price for members of a loyalty program, marked with validForMemberTier.

A price specification must not carry both priceType and validForMemberTier. Google says price specifications containing both "are ignored".

Variants: ProductGroup and Product

A shirt in four sizes and three colors is one ProductGroup and twelve Product variants. schema.org describes the group as a template: "While a ProductGroup itself is not directly offered for sale, the various varying products that it represents can be." Google's product variant guide sets these technical rules:

  • Each variant needs its own unique ID in its markup, for example through sku or gtin.
  • Each product group needs its own unique ID, given with productGroupID on the group or inProductGroupWithID on each variant.
  • Each variant must be selectable by URL. The site must be able to preselect each variant directly with a distinct URL, using query parameters. That includes showing the right image, price and availability, and letting the shopper add that variant to the cart.
  • A single-page product needs one canonical URL for the group. This is typically the URL with no variant preselected.
  • Product markup is still required. ProductGroup adds to the merchant listing properties; it does not replace them.

Some platforms produce this for you. Shopify's structured_data Liquid filter, for example, outputs a product "as a schema.org Product if they have no variants, and a ProductGroup if they have one or more variants." Whether your theme uses it is a separate question, which the testing step below answers.

Reviews and ratings: what Google allows

Star ratings are the part of ecommerce schema most often marked up wrongly, and the review snippet guidelines carry a warning that Google "may take manual action" against a site that violates them.

  • The reviews must be on the page. Users must be able to see the review text and rating you mark up, and the aggregate rating if you use one.
  • Do not import ratings. "Don't aggregate reviews or ratings from other websites."
  • Add an aggregate if you mark up several individual reviews.
  • No fake or undisclosed incentivized reviews, in the page or in the markup. Google's examples are reviews not based on a genuine experience, and reviews written for money, discounts, vouchers or free products without a clear and prominent disclosure.
  • Reviews of the business itself are a separate rule. On pages using Organization or LocalBusiness markup, reviews that the business controls about itself make the page ineligible for the star feature. That rule is about reviews of the store, not of the products it sells.

A structured data manual action is narrower than it sounds. Google's general guidelines say the page "loses eligibility for appearance as a rich result; it doesn't affect how the page ranks in Google web search."

Store-wide markup: Organization, shipping, returns and loyalty

Your store's policies are now described once, at the store level, and overridden per product only where a product differs.

  • Where it goes. Google recommends placing Organization markup on your home page or on a single page that describes your organization, such as the about us page, and says it does not need to be on every page.
  • Which type. For an ecommerce site, Google recommends the OnlineStore subtype rather than OnlineBusiness. Organization has no required properties.
  • Returns. Use MerchantReturnPolicy, nested through hasMerchantReturnPolicy. It needs either applicableCountry and returnPolicyCategory, or a merchantReturnLink to your returns page.
  • Shipping. Use ShippingService, nested through hasShippingService. Its one required property is shippingConditions, which carries the destinations, rates and transit times.
  • Loyalty. Describe the program with MemberProgram under Organization. Put each product's member price on its Offer, as above.

Here is the store-level return policy, shortened from the example in Google's return policy guide. Google's example describes products sold to customers in Germany, Austria and Switzerland that are returned by mail to Ireland, within 60 days, with free returns and full refunds, new products only:

{
  "@context": "https://schema.org",
  "@type": "OnlineStore",
  "name": "Example Online Store",
  "url": "https://www.example.com",
  "logo": "https://www.example.com/assets/images/logo.png",
  "hasMerchantReturnPolicy": {
    "@type": "MerchantReturnPolicy",
    "applicableCountry": ["DE", "AT", "CH"],
    "returnPolicyCountry": "IE",
    "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
    "merchantReturnDays": 60,
    "itemCondition": "https://schema.org/NewCondition",
    "returnMethod": "https://schema.org/ReturnByMail",
    "returnFees": "https://schema.org/FreeReturn",
    "refundType": "https://schema.org/FullRefund"
  }
}

How to add ecommerce schema markup, step by step

  1. List your page types. Sort your pages into product, variant, editorial, category, home or about, and policy pages, and match each to a row of the first table above.
  2. Check what your platform already outputs. Run a product URL through Google's Rich Results Test before you add anything. Your platform or theme may emit Product markup already, and a plugin added on top can then describe the same product twice with different values.
  3. Mark up product pages with Product and Offer. Include every required property and as many recommended ones as are true and visible, in the initial HTML where you can. Google's general guidelines say: "Don't mark up content that is not visible to readers of the page."
  4. Group variants with ProductGroup. Give each variant a unique sku or gtin and a URL that preselects it.
  5. Add the store-level block. Put OnlineStore on the home or about page, with return and shipping policies nested under it. Override them on an Offer only for the products that differ.
  6. Mark up reviews only where they are visible on the page and come from your own customers.
  7. Add BreadcrumbList. Google recommends breadcrumbs that "represent a typical user path to a page, instead of mirroring the URL structure."
  8. Validate. Use the Rich Results Test for Google's features, and the Schema Markup Validator to check schema.org markup in general. Then deploy a few pages and use Search Console's URL Inspection tool to see how Google sees them.
  9. Monitor in Search Console. Google points to two reports. The Merchant listings report covers pages where shoppers can buy products, and the Product snippets report covers other product pages, such as reviews. Both list warnings and errors.
  10. Keep the markup true. When a price or stock level changes, the markup has to change with the page. Google's guideline is short: "Provide up-to-date information."

Does ecommerce schema help in AI Overviews, AI Mode and ChatGPT?

For Google, structured data is not an AI switch. Google's guide to optimizing for generative AI features lists "overfocusing on structured data" among the things you do not need to do:

"Structured data isn't required for generative AI search, and there's no special schema.org markup you need to add. However, it's a good idea to continue using it as part of your overall SEO strategy, as it helps with being eligible for rich results on Google Search."

What the same guide recommends for stores is the product data itself. "Where appropriate, generative AI responses can include product listings, product information, and information about local businesses," it says. Merchant Center feeds and Google Business Profiles "can help your products and services to be visible in both AI responses and other Google Search results."

Google's page on AI features and your website lists two checks from the same family. Make sure your structured data "matches the visible text on the page", and check that your Merchant Center and Business Profile information is up to date. Its Product structured data introduction explains why the two sources work together. "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." For example, product snippets may use pricing data from your feed when the markup leaves it out.

For ChatGPT, OpenAI documents a feed, not on-page markup. OpenAI's product feed specification asks for one row per purchasable item or variant, with nine required fields: item_id, title, description, url, brand, seller_name, image_url, availability and price. According to its getting started guide, onboarding product feeds "is currently available to approved partners". OpenAI also accepts a Google-compatible format, "only after OpenAI confirms it for your registered feed".

Separately, OpenAI's crawler documentation says sites that opt out of OAI-SearchBot "will not be shown in ChatGPT search answers, though can still appear as navigational links." None of the OpenAI pages we read says whether ChatGPT reads schema.org markup on product pages, so we make no claim either way.

The practical consequence is that the same product facts now live in up to three places. The table below is our own mapping, not an official crosswalk. The Merchant Center column names are the ones OpenAI's Google-compatible format lists as matching its own fields.

Factschema.org, on the pageMerchant Center feed columnOpenAI feed field
Your product IDskuiditem_id
Namenametitletitle
Descriptiondescriptiondescriptiondescription
Product page URLoffers.urllinkurl
Main imageimageimage_linkimage_url
Stock statusoffers.availabilityavailabilityavailability
Priceoffers.price with offers.priceCurrencypriceprice
Brandbrand.namebrandbrand

Common ecommerce schema mistakes

  • Marking up a category page as a Product. Google's example of what is not a specific product is "shoes in our shop".
  • Marking up ratings shoppers cannot see, or importing them from another site.
  • Selling several currencies from one URL.
  • Variants without their own IDs or URLs, so Google cannot tell them apart or preselect them.
  • Repeating the full return and shipping policy on every Offer instead of once under Organization, with overrides only where a product differs.
  • Injecting Product markup with JavaScript on a fast-moving catalog. Google warns this can make Shopping crawls less frequent and less reliable.
  • Building FAQPage or HowTo markup for a rich result Google no longer shows. Questions and answers can still help shoppers on the page; the markup no longer earns a rich result.
  • Treating valid markup as a guarantee. Google "does not guarantee that your structured data will show up in search results, even if your page is marked up correctly according to the Rich Results Test."
  • Treating schema as an AI-visibility switch. Google's own guide says no special markup is needed for its generative AI features.

Where TopCited fits

Ecommerce schema helps search engines read your catalog. Whether AI answers then name your products is a separate question, and that is the part TopCited works on.

  • Seeing whether AI answers mention you. TopCited's content monitoring runs your query sets on a schedule you set (cron, with timezone support) and records the brand mentions in the answers. It reports gap analysis, meaning the queries where competitors appear and you do not, and your share of voice against the competitors mentioned alongside you. For a store, the query set is the product questions your customers ask.
  • Rewriting the page itself. The CORE optimizer rewrites your existing content and scores it before and after, including keyword coverage, so a thin description becomes a rewritten page rather than a list of issues.
  • A starting point. To see where you stand, request a GEO audit through the form on our site.

For the markup itself, follow Google's guides linked above and test with the Rich Results Test. For measuring AI answers, see how to track brand mentions in AI search.

FAQ

Frequently asked questions

Ecommerce schema is the structured data, in the schema.org vocabulary and usually written as JSON-LD, that an online store adds to its pages so search engines can read its products, prices, stock, variants, reviews and store policies as data. Google uses it to make pages eligible for rich results such as product snippets and merchant listings.

For most stores: Product with a nested Offer on every page where shoppers buy, ProductGroup for products sold in variants, review and rating markup only where reviews are visible, BreadcrumbList, and one Organization block using the OnlineStore subtype on the home or about page, carrying return and shipping policies.

For Google's merchant listings, a Product needs name, image and offers, and its Offer needs a price and a priceCurrency, either directly or through priceSpecification. Google recommends adding availability, itemCondition, brand, identifiers such as gtin or sku, a description, and shipping and return details.

Use merchant listing markup on pages where customers can buy the product from you. Use product snippet markup on product pages where people cannot buy directly, such as editorial reviews or affiliate pages. Google says the required merchant listing properties generally make a page eligible for product snippets too.

Not for a rich result. Google's changelog says the FAQ rich result stopped appearing in Google Search from 7 May 2026, and Google removed its FAQ documentation on 15 June 2026. A visible FAQ section can still help shoppers; the FAQPage markup no longer earns a rich result.

Under your Organization markup, on the home or about page: MerchantReturnPolicy through hasMerchantReturnPolicy, and ShippingService through hasShippingService. Override them on an individual Offer only for products whose policy differs. Offer-level overrides support fewer properties than the store-level types.

Google's guide to generative AI features says structured data is not required for them and no special schema.org markup is needed, though it still helps with rich results. For product listings in AI responses, Google points to Merchant Center feeds. OpenAI documents a product feed for ChatGPT, open to approved partners, and the OpenAI pages we read do not say whether ChatGPT reads on-page schema.

Run the page through Google's Rich Results Test, and use the Schema Markup Validator for schema.org syntax in general. Then check a few deployed pages with Search Console's URL Inspection tool, and watch the Merchant listings and Product snippets reports for errors after every template change.

The short version

Ecommerce schema tells search engines what you sell, at what price, in which variants, and on what terms. In 2026 it comes down to:

  • Product and Offer on every page where shoppers buy, with name, image, price and currency at minimum.
  • ProductGroup for variants, each with its own ID and URL.
  • Reviews marked up only where shoppers can see them.
  • Store-wide policies once, under OnlineStore, with overrides only where a product differs.
  • No FAQ or HowTo markup expected to earn a rich result. Google no longer shows either.
  • Markup, page and feeds kept in agreement. For AI answers, Google points to the feeds, not to any special markup.