LLMs cite pages that answer a product query completely in structured form. Shopify's default schema output gets you a bare Product type with a name and description. That is not enough. ChatGPT and Perplexity are pattern-matching against structured signals when they decide what to surface. A page with full AggregateRating, Offer, ProductGroup, and Brand markup gives those models something concrete to latch onto. A page with defaults gives them nothing they cannot get elsewhere.
- AggregateRating with ratingValue, reviewCount, and bestRating
- Offer or AggregateOffer with price, priceCurrency, availability, and priceValidUntil
- ProductGroup for variant sets linking back to the parent product
- Brand with sameAs pointing to Wikidata or official brand profiles
- Physical attributes: color, size, material, gtin, sku, mpn
- Relying on Shopify default theme output without auditing what actually renders
- Omitting AggregateRating because reviews are not surfaced in the theme
- Injecting schema in one place but rendering different product data in HTML
- No ProductGroup markup, so all variants look like disconnected pages to a crawler
"@type": "Product", "name": "[Product Name]", "brand": { "@type": "Brand", "name": "[Brand]", "sameAs": "[Wikidata URL]" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.6", "reviewCount": "284" }, "offers": { "@type": "Offer", "price": "89.00", "availability": "InStock", "priceValidUntil": "2026-12-31" }