Product Schema Checker
The Product Schema Checker is a free tool that reads the product structured data (JSON-LD) on a product page and shows which facts Google and AI shopping tools can read, what's missing, and where to fix it in Shopify.
Free · No sign-up · Results in seconds
ExampleThe kind of product data a standard Shopify theme adds (made-up product). Paste your own, or check a link above.
Ready for Google's product results: all required facts found
Found a ProductGroup with 2 variants in the JSON-LD you pasted.
Needed by Google
Google requires these for product results on pages where shoppers can buy.
Sources: Google's merchant listing guide, Google's product variants guide
Product name
FoundnameCedar Beard Oil
Required: it's how Google and AI tools know what the product is.
Variant names
FoundhasVariant[].nameCedar Beard Oil - 30 ml, Cedar Beard Oil - 50 ml
Required: Google asks for the same required facts on every variant, starting with its name.
Image
FoundimageRequired: Google needs at least one image to show the product.
Offer
FoundoffersRequired: the offer holds the price, currency and stock status.
Price
Foundoffers.price24.00 to 34.00 USD
Required: shoppers and AI tools compare products by price.
Currency
Foundoffers.priceCurrencyUSD
Required: a price needs its currency, as a 3-letter code like USD.
Recommended by Google
Not required, but Google recommends them, and they make your product easier to understand.
Source: Google's merchant listing guide
Brand
Foundbrand.nameExample Grooming Co
Lets shoppers and AI tools match your product to searches for your brand.
Description
FounddescriptionBeard oil with jojoba and argan oil for dry skin under short to medium beards.
Tells machines who the product is for and what it does, in your words.
Stock status
Foundoffers.availabilityIn stock
Shows whether shoppers can buy it now.
Barcode (GTIN)
Some variants only (1 of 2)gtin0000000000017
Shopping tools use barcodes to tell exactly which product it is.
Where to fix it in Shopify: Products > the product > the variant > Barcode (ISBN, UPC, GTIN, etc.). Fill it in for every variant that has one.
SKU
FoundskuCBO-30, CBO-50
Your own product code. Google uses a SKU or barcode to tell variants apart.
Part number (MPN)
MissingmpnThe maker's part number. Useful when a product has no barcode.
Where to fix it in Shopify: Not in Shopify's standard product data. A developer or an SEO app can add it.
Condition
Missingoffers.itemConditionSays whether the product is new, used or refurbished.
Where to fix it in Shopify: Not in Shopify's standard product data. A developer or an SEO app can add it.
Offer link
Foundoffers.urlhttps://example-store.com/products/cedar-beard-oil?variant=1
The link that opens this exact product or variant, so shoppers land on the right one.
Product group ID
FoundproductGroupID1000000001
Tells Google that the variants belong to one product.
What the variants differ by
MissingvariesByTells Google what changes between variants, like size or colour.
Where to fix it in Shopify: Not in Shopify's standard product data. A developer or an SEO app can add it.
Sale end date
Not neededoffers.priceValidUntilOnly needed for a sale price that ends on a set date.
Shipping
Not on this pageoffers.shippingDetailsShipping costs and times can show in Google's results. They can also be set for the whole store.
Where to fix it in Shopify: Add them once for the whole store: in Google Merchant Center or Search Console's shipping and returns settings, or with store-wide markup on your home page. Google reads those too.
Returns
Not on this pageoffers.hasMerchantReturnPolicyYour return policy can show in Google's results. It can also be set for the whole store.
Where to fix it in Shopify: Add them once for the whole store: in Google Merchant Center or Search Console's shipping and returns settings, or with store-wide markup on your home page. Google reads those too.
Reviews
NoneaggregateRatingNone in the product data.
Only add ratings markup if real customer reviews show on the page.
Extra facts AI shopping tools can use
Our advice: OpenAI says ChatGPT shopping reads structured product data such as price and description. These extra facts make your product easier to match to a shopper's question.
Source: OpenAI Help: shopping in ChatGPT
Category
FoundcategoryBeard Oil
Says what kind of product it is, in your words or as a Google category.
Colour
MissingcolorHelps match questions that name a colour.
Where to fix it in Shopify: Use clear variant option names (Colour, Size) and fill in the product's category and metafields in Shopify admin.
Size
MissingsizeHelps match questions that name a size.
Where to fix it in Shopify: Use clear variant option names (Colour, Size) and fill in the product's category and metafields in Shopify admin.
Material
MissingmaterialHelps match questions that name a material, like cotton or leather.
Where to fix it in Shopify: Use clear variant option names (Colour, Size) and fill in the product's category and metafields in Shopify admin.
Who it's for
MissingaudienceSays who the product is for, like adults or children.
Where to fix it in Shopify: Not in Shopify's standard product data. A developer or an SEO app can add it.
Certification
NonehasCertificationOnly if the product really has one, like an organic certification. Leave it out otherwise.
Fix it in Shopify
Most of these are fixed in Shopify admin, not in code: your theme turns your product's fields into product data. Fill in the fields above, then check again.
Show the product data we found
Product data (JSON-LD)
{
"@context": "https://schema.org",
"@type": "ProductGroup",
"@id": "https://example-store.com/products/cedar-beard-oil#product",
"name": "Cedar Beard Oil",
"description": "Beard oil with jojoba and argan oil for dry skin under short to medium beards.",
"url": "https://example-store.com/products/cedar-beard-oil",
"brand": {
"@type": "Brand",
"name": "Example Grooming Co"
},
"category": "Beard Oil",
"productGroupID": "1000000001",
"hasVariant": [
{
"@type": "Product",
"@id": "https://example-store.com/products/cedar-beard-oil?variant=1#variant",
"name": "Cedar Beard Oil - 30 ml",
"sku": "CBO-30",
"gtin": "0000000000017",
"image": "https://example-store.com/cdn/cedar-30.jpg",
"offers": {
"@type": "Offer",
"price": "24.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://example-store.com/products/cedar-beard-oil?variant=1"
}
},
{
"@type": "Product",
"@id": "https://example-store.com/products/cedar-beard-oil?variant=2#variant",
"name": "Cedar Beard Oil - 50 ml",
"sku": "CBO-50",
"image": "https://example-store.com/cdn/cedar-50.jpg",
"offers": {
"@type": "Offer",
"price": "34.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://example-store.com/products/cedar-beard-oil?variant=2"
}
}
]
}GEO is a Shopify app that helps your products get recommended by AI, then counts the orders AI sends you.
See how GEO fixes your product pages for AIWhat this tool checks
- Google's required product facts: name, image, price and currency
- Recommended facts like brand, barcode, SKU, stock status, shipping and returns
- Variants grouped as a ProductGroup
- Problems like two product blocks that disagree, or a price that doesn't match your store
How this tool works
- We download the product page the way a crawler first sees it, before any JavaScript runs, and read every JSON-LD block (up to 20). Google recommends putting product data in the page's HTML, because data added later by JavaScript can make shopping crawls less reliable. Source: Google's merchant listing guide
- On Shopify stores we also read the product's public data file (/products/{handle}.js) to compare price and stock.
- We check the facts against Google's merchant listing and product variant guides (required and recommended). The extra facts group is our own advice. Source: Google's product variants guide
- We read JSON-LD only, not microdata or RDFa.
- Shipping and returns can be set for the whole store or in Google Merchant Center, so when they're not on the page we say 'not on this page', not 'missing'.
- We don't run Google's Rich Results Test, and passing here doesn't guarantee a rich result.
Maintained by GEO. Updated .
Questions people ask
What is product schema?
Product schema is a small block of code on a product page that states the product's facts, like its name, price, currency, stock status and brand, in a format machines can read without guessing. Most stores add it as JSON-LD. Google uses it for product results in Search, and AI shopping tools can read the same facts.
Sources: Google's merchant listing guide, OpenAI Help: shopping in ChatGPT
Does Shopify add product schema automatically?
Shopify's own themes, like Dawn and Horizon, do. They use Shopify's structured_data filter, which outputs a Product for products without variants and a ProductGroup for products with variants, with the brand, description, price, currency, stock status and, when you've filled in the barcode field, the GTIN. Other themes vary, so check yours. Shipping, returns and ratings usually need extra setup.
Sources: Shopify's structured_data filter, Dawn's product section
Which product schema fields does Google require?
For product results on pages where shoppers can buy, Google requires the product name, an image, and an offer with a price and currency. It recommends many more, including brand, GTIN, SKU, stock status, shipping details and a return policy.
Source: Google's merchant listing guide
Does product schema help me get recommended by ChatGPT?
It helps AI tools read your facts correctly, but it won't get you recommended on its own. Google says its AI features need no special schema, and OpenAI says ChatGPT already gets Shopify product data through Shopify Catalog with no extra work from merchants. Clear facts on the page and mentions on sites AI trusts matter more.
Sources: Google's AI features guide, OpenAI Help: shopping in ChatGPT
Should I add review stars to my product schema?
Only if real customer reviews show on the page. Google's review guidelines don't allow fake or undisclosed incentivised reviews. If a reviews app adds ratings, check it puts them in the page's HTML: Google says data added later by JavaScript can make shopping crawls less reliable.
Sources: Google Search Central updates, Google's merchant listing guide
Why does my page have two product blocks?
Usually your theme adds one and an app, often a reviews or SEO app, adds another. If they disagree, for example on price or stock, machines can't tell which is right. Keep one complete block: turn off the app's product data if your theme already has it, or the other way round.
More free tools
- FAQ Schema Generator
Turn your questions and answers into FAQ markup and a ready Shopify section.
- AI Bot Checker
Check if your product copy sounds generic, and which facts shoppers and AI are missing.
- AI Visibility Checker
See if ChatGPT, Gemini and Perplexity recommend your product, and who they pick instead.
Updated · Made by GEO