- 9 of 200
- AI Search Visibility & GEO
- Structured Data & Schema Markup
- Medium
Short answer: Product structured data tells Google and other machines the name, image, price and availability of a product on the page. Google uses it for two things: product snippets, the extra price and rating line under a result, and merchant listings, which only apply to pages where someone can actually buy. Crawl Audit check 9 makes sure a page that sells something has Product markup with an offer.
What Crawl Audit checks
- Pass: a
Productnode with anoffersobject. - Warning: a
Productnode with nooffers, so no price or availability. - Fail: no Product node, but the page looks commercial. That means a currency symbol followed by a number (
$,£or€), the words "add to cart", "buy now", "add to bag" or "checkout", or an Offer in the markup. - Pass: no Product node and nothing commercial, so the markup isn't needed.
Read the fail case carefully. A services page that mentions "from £500" counts as commercial, so check 9 can fail on a page that doesn't sell a product at all. Google's product docs are about products, and they say product rich results "only support pages that focus on a single product". If the page sells a service, don't force Product markup onto it. Treat the result as a prompt to check, not a must-fix.
What Google uses it for
Product snippets can show "a text result that includes additional product information such as ratings, review information, price, and availability." They require a name, and Google says they "require either review or aggregateRating or offers".
Merchant listings are stricter. Google says: "Only pages where a shopper can purchase a product are eligible for merchant listing experiences". They require name, image and offers, and the offer needs a price and a priceCurrency, the currency "in three-letter ISO 4217 format".
A minimal block that covers both, trimmed from Google's merchant listing example:
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Executive Anvil",
"image": ["https://example.com/photos/1x1/photo.jpg"],
"offers": {
"@type": "Offer",
"price": 119.99,
"priceCurrency": "USD"
}
}
</script>
Keep the price on the page as visible text too, not only in an image. Google's general rule is "Don't mark up content that is not visible to readers of the page", and the markup should match what a shopper sees.
How to add it on your platform
- Shopify: nothing to add in the Dawn theme. Its product template outputs
{{ product | structured_data }}, which Shopify turns into a Product, or a ProductGroup when the product has variants. If you use another theme, look for that filter in the product template. - Wix Stores: Wix adds product markup to store pages through its presets. You can edit or add markup under the page's Advanced SEO › Structured Data Markup.
- Squarespace: Product markup is generated automatically on product pages and can't be edited. Fill in the price, images and stock in the product settings.
- WordPress: e-commerce plugins and SEO plugins can output Product markup. Check one product page in Google's Rich Results Test to see which one does, and make sure only one does.
- Next.js: build the JSON-LD from the same data that renders the price, so the two can't drift apart.
Common mistakes
- One Product block on a category page listing twenty products. Product rich results are for single-product pages.
- A price in the markup that differs from the page, usually after a sale ends and the markup wasn't updated.
- A missing
priceCurrency, or a currency symbol instead of the code: usePKR,GBPorUSD, not "Rs" or "£". - Product markup on a service. If you sell a service, a clear price in the page text does more than forced Product markup.
Sources
- Google Search Central, Product snippet structured data and Merchant listing structured data (both updated 8 September 2026), checked 3 October 2026.
- Google Search Central, General structured data guidelines.
- Shopify, structured_data filter; Wix, Adding structured data markup; Squarespace, Structured data.
See how your site does on every check.
Crawl Audit runs this check and 199 others on your domain. The full report is $7.89, one time. The free check on this site covers 25.