Direct Answer
For a product page to be eligible for Google's merchant listings, its Schema.org structured data must contain at least a Product with name, image and offers, and an Offer with a price greater than zero and a priceCurrency in ISO 4217 format (e.g. EUR).
Google also recommends gtin, brand, availability, itemCondition, shippingDetails and hasMerchantReturnPolicy. These recommended properties don't block the structured data itself, but they let Google verify that the page matches your Merchant Center feed — which reduces disapprovals for mismatched price or availability.
This guide is for merchants and developers managing product pages on Shopify, WooCommerce, PrestaShop, Magento or a custom site.
Last updated: October 9, 2026.
Table of Contents
- Direct answer
- Required and recommended properties
- Complete JSON-LD example
- Common errors
- How to check your structured data
- Evidence and sources
- FAQ
Required and Recommended Properties
| Property | Type | Status for merchant listings | Key point |
|---|---|---|---|
name |
Product | Required | Must match the page and feed title |
image |
Product | Required | One or more URLs; Google recommends several ratios (16x9, 4x3, 1x1) |
offers |
Product | Required | A single Offer, not an AggregateOffer: the merchant must be the seller |
price |
Offer | Required | Greater than zero, no currency symbol |
priceCurrency |
Offer | Required | Three-letter ISO 4217 code (EUR, USD) |
gtin / gtin13 |
Product | Recommended | Numeric; never make up a value |
brand.name |
Product | Recommended | A single brand |
sku, mpn |
Product | Recommended | Internal and manufacturer identifiers |
availability |
Offer | Recommended | A single value, e.g. https://schema.org/InStock |
itemCondition |
Offer | Recommended | NewCondition, RefurbishedCondition or UsedCondition |
shippingDetails |
Offer | Recommended | Shipping costs and delivery times |
hasMerchantReturnPolicy |
Offer | Recommended | Return policy; Google advises defining it globally under Organization |
priceValidUntil |
Offer | Recommended | A past date can prevent the listing from showing |
Statuses checked against Google Search Central's "Merchant listing structured data" documentation on October 9, 2026.
Complete JSON-LD Example
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Men's Waterproof Hiking Boots",
"image": [
"https://www.example.com/images/boot-1x1.jpg",
"https://www.example.com/images/boot-4x3.jpg",
"https://www.example.com/images/boot-16x9.jpg"
],
"description": "Waterproof hiking boots with Vibram sole.",
"sku": "HIKE-42-BLACK",
"gtin13": "3401234567890",
"brand": { "@type": "Brand", "name": "ExampleBrand" },
"offers": {
"@type": "Offer",
"url": "https://www.example.com/hiking-boots",
"price": 89.9,
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
}
The values in this example are fictitious. The price (89.90) and availability must be strictly identical to those shown on the page and declared in your Merchant Center feed.
Common Errors
- Different price between JSON-LD, page and feed: often caused by a promotion applied only on display, or an inconsistent tax-inclusive/exclusive price. See our guide on inconsistent prices on Google Shopping.
AggregateOfferon a single-seller page: accepted for product snippets, but not for merchant listings.- Zero or empty price for "quote-only" products: the page isn't eligible for merchant listings.
- Made-up GTIN or "N/A": Google states that an incorrect GTIN leads to disapproval and that it's better to omit the attribute when in doubt. See missing GTIN on Google Shopping.
- Several conflicting Product blocks generated by both the theme and an SEO plugin.
- Expired
priceValidUntilafter a promotion ends.
How to Check Your Structured Data
- Google's Rich Results Test: checks syntax and eligibility for a URL.
- Search Console, "Merchant listings" report: lists errors across the whole site.
- Product page compliance audit: MyGoogle checks structured data in its STRUCTURED_DATA category and compares it with the rest of the page (displayed price, availability, images), which a syntax validator doesn't do.
Evidence and Sources
- Required properties (name, image, offers, price, priceCurrency) and the
Offerrequirement: Google Search Central, Merchant listing structured data (accessed October 9, 2026). - Sale duration (
validFrom,validThrough,priceValidUntil): "Sale duration" section added in July 2026, per the Google Search Central documentation updates log. - GTIN, brand and price formats in the feed: Google Merchant Center Help, Product data specification (accessed October 9, 2026).
- Feed attribute / Schema.org mapping: Supported structured data attributes and values.
FAQ
Is structured data required for Google Merchant Center? It doesn't replace the product feed, but Google uses it to verify that the page matches the feed and for free merchant listings. A page without valid structured data loses that verification and part of its eligibility.
Which Schema.org properties are required for a merchant listing? For the Product: name, image and offers. For the Offer: price (greater than zero) and priceCurrency in ISO 4217 format. Other properties are recommended.
Should I use Offer or AggregateOffer? Offer for merchant listings, because Google requires the merchant to be the seller of the product. AggregateOffer is only accepted for product snippets.
What if my product has no GTIN? Leave the property out rather than making up a value. Google states that an incorrect GTIN leads to product disapproval.
How do I know if my JSON-LD matches my page? The Rich Results Test checks syntax, not consistency with the displayed price. A product page audit like MyGoogle compares the two.
Next Step
Check one of your template product pages: run an audit on MyGoogle to verify your structured data and its consistency with the displayed price, availability and images. For the complete list of feed attributes, see our guide to required GMC feed attributes.