Product Schema for Google Shopping: Complete Guide (2026)
Every JSON-LD field Google reads from your product pages, which are required for Shopping eligibility, and the mistakes that cause structured-data disapprovals.
On this page6 sections+
Product schema is JSON-LD structured data, defined by schema.org, that you embed on product pages so Google can read prices, availability, brand, ratings, and other attributes without parsing visible HTML. For Google Shopping, valid Product schema is effectively required: 867 stores in our audit data fail this check, and missing or invalid schema triggers "landing page requirements" disapprovals plus reduced impression share for products that do serve.
Why Product schema matters for Shopping
Three reasons:
- Cross-validation with the feed. Google compares your feed's price, availability, and brand against what the page schema says. Mismatches disapprove.
- Rich Results in Search. Product schema unlocks rich snippets in organic Search (price, rating, availability shown directly in SERP).
- Performance Max ranking signal. PMax weights well-structured landing pages higher than poorly-structured ones, even when both pass standard Shopping requirements.
Required fields
For Google Shopping eligibility, Google requires these fields [1]:
| Field | Type | Notes |
|---|---|---|
| name | string | Product title, ideally matching feed title |
| image | URL or array | Primary image, must be reachable, no auth |
| offers.price | number/string | Match the feed price exactly |
| offers.priceCurrency | ISO 4217 code | "USD", "EUR", "GBP", etc. |
| offers.availability | URL enum | https://schema.org/InStock, OutOfStock, PreOrder, etc. |
Recommended fields
Add these to maximize Shopping ranking and rich-result eligibility:
brand(string or Brand node) — strongly affects Shopping rankingsku(string) — useful for variant-level trackinggtinorgtin8/12/13/14(string) — Google's preferred identifiermpn(string) — for branded items without GTINdescription(string) — improves rich-result coverageaggregateRating(AggregateRating node) — unlocks rating stars in Searchreview(Review array) — for individual review displayoffers.priceValidUntil(date) — required for sale pricesoffers.itemCondition(URL enum) — schema.org/NewCondition by defaulthasMerchantReturnPolicy(MerchantReturnPolicy node) — required for return badge eligibility
Full reference example
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Acme Wireless Headphones, Black",
"image": [
"https://example.com/products/acme-headphones-1.jpg",
"https://example.com/products/acme-headphones-2.jpg"
],
"description": "Acme noise-cancelling wireless headphones with 40-hour battery life.",
"sku": "ACME-WH-001-BLK",
"gtin13": "0840000123456",
"brand": { "@type": "Brand", "name": "Acme" },
"offers": {
"@type": "Offer",
"url": "https://example.com/products/acme-wireless-headphones",
"price": "199.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"priceValidUntil": "2026-12-31",
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"applicableCountry": "US",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 30,
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/FreeReturn"
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": 247
}
}
</script>
Common schema bugs that disapprove products
1. priceCurrency missing
The price is "29.99" but no currency is declared. Google does not know if USD, EUR, or CAD. Fix: always populate priceCurrency with an ISO 4217 code.
2. availability as plain text
The value is "In Stock" or "true" instead of the URL https://schema.org/InStock. Google's parser is strict here. Fix: use the full schema.org URL.
3. Image URL not reachable or requires auth
The image link redirects, returns 404, or requires authentication. Fix: serve images at stable public URLs.
4. Multiple Product schemas on the same page
Theme emits one Product node, an SEO plugin emits another, a review app emits a third. Google picks one and may pick the wrong values. Fix: audit page source, disable all but one source.
5. priceValidUntil missing on sale prices
You have a sale price with no end date in the schema. Google strips the rich result. Fix: include priceValidUntil for any product where the price is time-limited.
6. Brand as a string when Google expects a node
Some Shopify themes emit "brand": "Acme". Google now requires Brand to be a node: "brand": { "@type": "Brand", "name": "Acme" }. The string form still works but emits a warning.
Validation workflow
- Pick 5 random products (a high-price item, a variant-heavy item, a sale item, a low-stock item, a free-shipping item).
- Run each through Google's Rich Results Test [4]. Confirm Product schema passes with no errors and only minor warnings.
- Cross-check with Schema.org's Markup Validator [5] for strict spec compliance.
- Use Search Console's URL Inspection to fetch the page as Googlebot and confirm the rendered HTML includes the JSON-LD block.
- Compare schema values against feed values for each product. Mismatches must be resolved before going live.
Validate Product schema across your catalog
Free FeedShield audit. Tests Product schema on every URL, flags missing required fields, surfaces feed-vs-schema mismatches.
Run free auditBottom line
Product schema is the contract between your landing page and Google's Shopping infrastructure. Get the five required fields right, add the recommended ones for ranking and rich results, audit for common bugs, and validate on a sample. Most schema disapprovals come from one of six recurring bugs covered above; fixing those resolves nearly all "landing page requirements" flags in our customer data.
Frequently asked questions
Is Product schema required for Google Shopping?+
Do I need both feed data and Product schema?+
What's the difference between Microdata, RDFa, and JSON-LD?+
Can I have multiple Product schemas on the same page?+
Does AggregateRating from review apps count as Product schema?+
How does Google handle variant products in Product schema?+
Sources & further reading
References cited inline as [1], [2], etc.
- [1]Product structured data — Google Search Central — Google (2026-03-10)
- [2]Schema.org Product — Schema.org
- [3]Schema.org Offer — Schema.org
- [4]Rich Results Test — Google
- [5]Schema Markup Validator — Schema.org
Charles leads compliance research at FeedShield. He tracks Google Merchant Center policy updates, turns them into audit rules inside the FeedShield ComplianceIQ engine, and writes the step-by-step recovery guides used by agencies and merchants appealing suspensions. His coverage focuses on the practical fixes that move accounts from disapproved to reinstated.
Related reading
Check your store's GMC compliance
Automated audit with 250+ compliance checks across 27 categories. Free, no credit card.