[{"data":1,"prerenderedAt":1570},["ShallowReactive",2],{"post-\u002Fblog\u002Fproduct-schema-for-ai-search":3,"surround-\u002Fblog\u002Fproduct-schema-for-ai-search":1551,"related-\u002Fblog\u002Fproduct-schema-for-ai-search":1557},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"datePublished":10,"dateModified":10,"author":11,"tags":12,"faq":16,"body":32,"_type":1545,"_id":1546,"_source":1547,"_file":1548,"_stem":1549,"_extension":1550},"\u002Fblog\u002Fproduct-schema-for-ai-search","blog",false,"","Product Schema for AI Search: JSON-LD That Gets You Into AI Answers","Complete copy-paste Product JSON-LD for e-commerce, plus FAQPage, BreadcrumbList, and Organization schema — and how to validate it for AI search.","2026-07-30","Rynex Team",[13,14,15],"technical-seo","geo","ai-search",[17,20,23,26,29],{"q":18,"a":19},"Does JSON-LD structured data help with AI search visibility?","Yes. AI engines that retrieve web pages to build answers prefer sources whose facts — price, availability, brand — can be parsed unambiguously. JSON-LD provides exactly that, in a format every major crawler already understands.",{"q":21,"a":22},"What fields should Product JSON-LD include at minimum?","name, description, sku, brand, image, and an offers object with price, priceCurrency, and availability. These cover the facts an AI shopping answer needs to state about your product.",{"q":24,"a":25},"Can I add aggregateRating to my product schema without reviews?","No. Only include aggregateRating if it reflects real, verifiable reviews collected on your site. Fabricated ratings violate Google's structured data policies and can earn a manual action, and they poison AI answers with false claims.",{"q":27,"a":28},"Does my Shopify theme already output product schema?","Probably some, but often incomplete or duplicated. Many themes emit partial Product markup, and review or SEO apps may inject a second conflicting copy. Audit the rendered page rather than assuming the theme has it covered.",{"q":30,"a":31},"How do I validate my product structured data?","Run the page through Google's Rich Results Test to check eligibility and the Schema.org validator to check general correctness. Validate the rendered page URL, not your source code, so you catch what crawlers actually see.",{"type":33,"children":34,"toc":1525},"root",[35,52,59,81,94,107,113,126,651,656,770,796,802,807,814,819,1033,1038,1044,1049,1182,1188,1201,1207,1212,1218,1223,1255,1268,1368,1373,1379,1391,1429,1442,1448,1468,1474,1479,1483,1488,1492,1497,1501,1506,1510,1515,1519],{"type":36,"tag":37,"props":38,"children":39},"element","p",{},[40,43,50],{"type":41,"value":42},"text","When an AI engine assembles a shopping answer, it needs your price, availability, and brand as facts it can trust — not as strings it has to guess out of your page layout. Product JSON-LD hands those facts over in a format every major crawler parses natively, which makes it one of the highest-leverage technical moves in ",{"type":36,"tag":44,"props":45,"children":47},"a",{"href":46},"\u002Fblog\u002Fwhat-is-generative-engine-optimization",[48],{"type":41,"value":49},"generative engine optimization",{"type":41,"value":51},".",{"type":36,"tag":53,"props":54,"children":56},"h2",{"id":55},"why-does-structured-data-matter-for-ai-search",[57],{"type":41,"value":58},"Why does structured data matter for AI search?",{"type":36,"tag":37,"props":60,"children":61},{},[62,64,71,73,79],{"type":41,"value":63},"Because retrieval-augmented answers prefer parseable sources. ChatGPT search, Perplexity, and Gemini build product answers by retrieving pages and extracting facts from them. A page where the price lives in a ",{"type":36,"tag":65,"props":66,"children":68},"code",{"className":67},[],[69],{"type":41,"value":70},"\u003Cspan class=\"pr-x2\">",{"type":41,"value":72}," styled by your theme forces the model to infer; a page with JSON-LD states ",{"type":36,"tag":65,"props":74,"children":76},{"className":75},[],[77],{"type":41,"value":78},"\"price\": \"189.00\", \"priceCurrency\": \"USD\"",{"type":41,"value":80}," outright. Unambiguous, machine-readable facts lower the cost of using you as a source — and when an engine chooses between two similar product pages, the one it can parse cleanly is the safer citation.",{"type":36,"tag":37,"props":82,"children":83},{},[84,86,92],{"type":41,"value":85},"There's a second effect: consistency. Your schema, your visible page copy, and your ",{"type":36,"tag":44,"props":87,"children":89},{"href":88},"\u002Fblog\u002Fllms-txt-for-ecommerce",[90],{"type":41,"value":91},"llms.txt",{"type":41,"value":93}," all assert facts about your products. When they agree, you look like a reliable source. When they conflict, you look like a risk.",{"type":36,"tag":37,"props":95,"children":96},{},[97,99,105],{"type":41,"value":98},"None of this matters if crawlers can't reach the page in the first place — get your ",{"type":36,"tag":44,"props":100,"children":102},{"href":101},"\u002Fblog\u002Frobots-txt-for-ai-crawlers",[103],{"type":41,"value":104},"robots.txt AI-crawler configuration",{"type":41,"value":106}," right before polishing markup.",{"type":36,"tag":53,"props":108,"children":110},{"id":109},"what-does-complete-product-json-ld-look-like",[111],{"type":41,"value":112},"What does complete Product JSON-LD look like?",{"type":36,"tag":37,"props":114,"children":115},{},[116,118,124],{"type":41,"value":117},"Here is a complete, copy-paste Product schema for a product page. Place it in a ",{"type":36,"tag":65,"props":119,"children":121},{"className":120},[],[122],{"type":41,"value":123},"\u003Cscript type=\"application\u002Fld+json\">",{"type":41,"value":125}," tag anywhere in the page (head or body):",{"type":36,"tag":127,"props":128,"children":132},"pre",{"className":129,"code":130,"language":131,"meta":7,"style":7},"language-html shiki shiki-themes github-dark","\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"Product\",\n  \"name\": \"Ridgeline 55L Backpack\",\n  \"description\": \"A 55-liter three-season backpacking pack with an adjustable torso, field-replaceable buckles, and a lifetime repair program. Weighs 3.4 lbs.\",\n  \"sku\": \"RTS-RIDGE-55-GRN\",\n  \"mpn\": \"RIDGE55\",\n  \"brand\": {\n    \"@type\": \"Brand\",\n    \"name\": \"Alpine Trail Supply\"\n  },\n  \"image\": [\n    \"https:\u002F\u002Fwww.alpinetrailsupply.example\u002Fimages\u002Fridgeline-55-front.jpg\",\n    \"https:\u002F\u002Fwww.alpinetrailsupply.example\u002Fimages\u002Fridgeline-55-side.jpg\",\n    \"https:\u002F\u002Fwww.alpinetrailsupply.example\u002Fimages\u002Fridgeline-55-detail.jpg\"\n  ],\n  \"url\": \"https:\u002F\u002Fwww.alpinetrailsupply.example\u002Fproducts\u002Fridgeline-55\",\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"url\": \"https:\u002F\u002Fwww.alpinetrailsupply.example\u002Fproducts\u002Fridgeline-55\",\n    \"price\": \"189.00\",\n    \"priceCurrency\": \"USD\",\n    \"availability\": \"https:\u002F\u002Fschema.org\u002FInStock\",\n    \"itemCondition\": \"https:\u002F\u002Fschema.org\u002FNewCondition\",\n    \"shippingDetails\": {\n      \"@type\": \"OfferShippingDetails\",\n      \"shippingRate\": {\n        \"@type\": \"MonetaryAmount\",\n        \"value\": \"0\",\n        \"currency\": \"USD\"\n      },\n      \"shippingDestination\": {\n        \"@type\": \"DefinedRegion\",\n        \"addressCountry\": \"US\"\n      }\n    },\n    \"hasMerchantReturnPolicy\": {\n      \"@type\": \"MerchantReturnPolicy\",\n      \"applicableCountry\": \"US\",\n      \"returnPolicyCategory\": \"https:\u002F\u002Fschema.org\u002FMerchantReturnFiniteReturnWindow\",\n      \"merchantReturnDays\": 60,\n      \"returnMethod\": \"https:\u002F\u002Fschema.org\u002FReturnByMail\",\n      \"returnFees\": \"https:\u002F\u002Fschema.org\u002FFreeReturn\"\n    }\n  },\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"4.7\",\n    \"reviewCount\": \"132\"\n  }\n}\n\u003C\u002Fscript>\n","html",[133],{"type":36,"tag":65,"props":134,"children":135},{"__ignoreMap":7},[136,176,185,194,203,212,221,230,239,248,257,266,275,284,293,302,311,320,329,338,347,356,365,374,383,392,401,410,419,428,437,446,455,464,473,482,491,500,509,518,527,536,545,554,563,572,580,589,598,607,616,625,634],{"type":36,"tag":137,"props":138,"children":141},"span",{"class":139,"line":140},"line",1,[142,148,154,160,165,171],{"type":36,"tag":137,"props":143,"children":145},{"style":144},"--shiki-default:#E1E4E8",[146],{"type":41,"value":147},"\u003C",{"type":36,"tag":137,"props":149,"children":151},{"style":150},"--shiki-default:#85E89D",[152],{"type":41,"value":153},"script",{"type":36,"tag":137,"props":155,"children":157},{"style":156},"--shiki-default:#B392F0",[158],{"type":41,"value":159}," type",{"type":36,"tag":137,"props":161,"children":162},{"style":144},[163],{"type":41,"value":164},"=",{"type":36,"tag":137,"props":166,"children":168},{"style":167},"--shiki-default:#9ECBFF",[169],{"type":41,"value":170},"\"application\u002Fld+json\"",{"type":36,"tag":137,"props":172,"children":173},{"style":144},[174],{"type":41,"value":175},">\n",{"type":36,"tag":137,"props":177,"children":179},{"class":139,"line":178},2,[180],{"type":36,"tag":137,"props":181,"children":182},{"style":144},[183],{"type":41,"value":184},"{\n",{"type":36,"tag":137,"props":186,"children":188},{"class":139,"line":187},3,[189],{"type":36,"tag":137,"props":190,"children":191},{"style":144},[192],{"type":41,"value":193},"  \"@context\": \"https:\u002F\u002Fschema.org\",\n",{"type":36,"tag":137,"props":195,"children":197},{"class":139,"line":196},4,[198],{"type":36,"tag":137,"props":199,"children":200},{"style":144},[201],{"type":41,"value":202},"  \"@type\": \"Product\",\n",{"type":36,"tag":137,"props":204,"children":206},{"class":139,"line":205},5,[207],{"type":36,"tag":137,"props":208,"children":209},{"style":144},[210],{"type":41,"value":211},"  \"name\": \"Ridgeline 55L Backpack\",\n",{"type":36,"tag":137,"props":213,"children":215},{"class":139,"line":214},6,[216],{"type":36,"tag":137,"props":217,"children":218},{"style":144},[219],{"type":41,"value":220},"  \"description\": \"A 55-liter three-season backpacking pack with an adjustable torso, field-replaceable buckles, and a lifetime repair program. Weighs 3.4 lbs.\",\n",{"type":36,"tag":137,"props":222,"children":224},{"class":139,"line":223},7,[225],{"type":36,"tag":137,"props":226,"children":227},{"style":144},[228],{"type":41,"value":229},"  \"sku\": \"RTS-RIDGE-55-GRN\",\n",{"type":36,"tag":137,"props":231,"children":233},{"class":139,"line":232},8,[234],{"type":36,"tag":137,"props":235,"children":236},{"style":144},[237],{"type":41,"value":238},"  \"mpn\": \"RIDGE55\",\n",{"type":36,"tag":137,"props":240,"children":242},{"class":139,"line":241},9,[243],{"type":36,"tag":137,"props":244,"children":245},{"style":144},[246],{"type":41,"value":247},"  \"brand\": {\n",{"type":36,"tag":137,"props":249,"children":251},{"class":139,"line":250},10,[252],{"type":36,"tag":137,"props":253,"children":254},{"style":144},[255],{"type":41,"value":256},"    \"@type\": \"Brand\",\n",{"type":36,"tag":137,"props":258,"children":260},{"class":139,"line":259},11,[261],{"type":36,"tag":137,"props":262,"children":263},{"style":144},[264],{"type":41,"value":265},"    \"name\": \"Alpine Trail Supply\"\n",{"type":36,"tag":137,"props":267,"children":269},{"class":139,"line":268},12,[270],{"type":36,"tag":137,"props":271,"children":272},{"style":144},[273],{"type":41,"value":274},"  },\n",{"type":36,"tag":137,"props":276,"children":278},{"class":139,"line":277},13,[279],{"type":36,"tag":137,"props":280,"children":281},{"style":144},[282],{"type":41,"value":283},"  \"image\": [\n",{"type":36,"tag":137,"props":285,"children":287},{"class":139,"line":286},14,[288],{"type":36,"tag":137,"props":289,"children":290},{"style":144},[291],{"type":41,"value":292},"    \"https:\u002F\u002Fwww.alpinetrailsupply.example\u002Fimages\u002Fridgeline-55-front.jpg\",\n",{"type":36,"tag":137,"props":294,"children":296},{"class":139,"line":295},15,[297],{"type":36,"tag":137,"props":298,"children":299},{"style":144},[300],{"type":41,"value":301},"    \"https:\u002F\u002Fwww.alpinetrailsupply.example\u002Fimages\u002Fridgeline-55-side.jpg\",\n",{"type":36,"tag":137,"props":303,"children":305},{"class":139,"line":304},16,[306],{"type":36,"tag":137,"props":307,"children":308},{"style":144},[309],{"type":41,"value":310},"    \"https:\u002F\u002Fwww.alpinetrailsupply.example\u002Fimages\u002Fridgeline-55-detail.jpg\"\n",{"type":36,"tag":137,"props":312,"children":314},{"class":139,"line":313},17,[315],{"type":36,"tag":137,"props":316,"children":317},{"style":144},[318],{"type":41,"value":319},"  ],\n",{"type":36,"tag":137,"props":321,"children":323},{"class":139,"line":322},18,[324],{"type":36,"tag":137,"props":325,"children":326},{"style":144},[327],{"type":41,"value":328},"  \"url\": \"https:\u002F\u002Fwww.alpinetrailsupply.example\u002Fproducts\u002Fridgeline-55\",\n",{"type":36,"tag":137,"props":330,"children":332},{"class":139,"line":331},19,[333],{"type":36,"tag":137,"props":334,"children":335},{"style":144},[336],{"type":41,"value":337},"  \"offers\": {\n",{"type":36,"tag":137,"props":339,"children":341},{"class":139,"line":340},20,[342],{"type":36,"tag":137,"props":343,"children":344},{"style":144},[345],{"type":41,"value":346},"    \"@type\": \"Offer\",\n",{"type":36,"tag":137,"props":348,"children":350},{"class":139,"line":349},21,[351],{"type":36,"tag":137,"props":352,"children":353},{"style":144},[354],{"type":41,"value":355},"    \"url\": \"https:\u002F\u002Fwww.alpinetrailsupply.example\u002Fproducts\u002Fridgeline-55\",\n",{"type":36,"tag":137,"props":357,"children":359},{"class":139,"line":358},22,[360],{"type":36,"tag":137,"props":361,"children":362},{"style":144},[363],{"type":41,"value":364},"    \"price\": \"189.00\",\n",{"type":36,"tag":137,"props":366,"children":368},{"class":139,"line":367},23,[369],{"type":36,"tag":137,"props":370,"children":371},{"style":144},[372],{"type":41,"value":373},"    \"priceCurrency\": \"USD\",\n",{"type":36,"tag":137,"props":375,"children":377},{"class":139,"line":376},24,[378],{"type":36,"tag":137,"props":379,"children":380},{"style":144},[381],{"type":41,"value":382},"    \"availability\": \"https:\u002F\u002Fschema.org\u002FInStock\",\n",{"type":36,"tag":137,"props":384,"children":386},{"class":139,"line":385},25,[387],{"type":36,"tag":137,"props":388,"children":389},{"style":144},[390],{"type":41,"value":391},"    \"itemCondition\": \"https:\u002F\u002Fschema.org\u002FNewCondition\",\n",{"type":36,"tag":137,"props":393,"children":395},{"class":139,"line":394},26,[396],{"type":36,"tag":137,"props":397,"children":398},{"style":144},[399],{"type":41,"value":400},"    \"shippingDetails\": {\n",{"type":36,"tag":137,"props":402,"children":404},{"class":139,"line":403},27,[405],{"type":36,"tag":137,"props":406,"children":407},{"style":144},[408],{"type":41,"value":409},"      \"@type\": \"OfferShippingDetails\",\n",{"type":36,"tag":137,"props":411,"children":413},{"class":139,"line":412},28,[414],{"type":36,"tag":137,"props":415,"children":416},{"style":144},[417],{"type":41,"value":418},"      \"shippingRate\": {\n",{"type":36,"tag":137,"props":420,"children":422},{"class":139,"line":421},29,[423],{"type":36,"tag":137,"props":424,"children":425},{"style":144},[426],{"type":41,"value":427},"        \"@type\": \"MonetaryAmount\",\n",{"type":36,"tag":137,"props":429,"children":431},{"class":139,"line":430},30,[432],{"type":36,"tag":137,"props":433,"children":434},{"style":144},[435],{"type":41,"value":436},"        \"value\": \"0\",\n",{"type":36,"tag":137,"props":438,"children":440},{"class":139,"line":439},31,[441],{"type":36,"tag":137,"props":442,"children":443},{"style":144},[444],{"type":41,"value":445},"        \"currency\": \"USD\"\n",{"type":36,"tag":137,"props":447,"children":449},{"class":139,"line":448},32,[450],{"type":36,"tag":137,"props":451,"children":452},{"style":144},[453],{"type":41,"value":454},"      },\n",{"type":36,"tag":137,"props":456,"children":458},{"class":139,"line":457},33,[459],{"type":36,"tag":137,"props":460,"children":461},{"style":144},[462],{"type":41,"value":463},"      \"shippingDestination\": {\n",{"type":36,"tag":137,"props":465,"children":467},{"class":139,"line":466},34,[468],{"type":36,"tag":137,"props":469,"children":470},{"style":144},[471],{"type":41,"value":472},"        \"@type\": \"DefinedRegion\",\n",{"type":36,"tag":137,"props":474,"children":476},{"class":139,"line":475},35,[477],{"type":36,"tag":137,"props":478,"children":479},{"style":144},[480],{"type":41,"value":481},"        \"addressCountry\": \"US\"\n",{"type":36,"tag":137,"props":483,"children":485},{"class":139,"line":484},36,[486],{"type":36,"tag":137,"props":487,"children":488},{"style":144},[489],{"type":41,"value":490},"      }\n",{"type":36,"tag":137,"props":492,"children":494},{"class":139,"line":493},37,[495],{"type":36,"tag":137,"props":496,"children":497},{"style":144},[498],{"type":41,"value":499},"    },\n",{"type":36,"tag":137,"props":501,"children":503},{"class":139,"line":502},38,[504],{"type":36,"tag":137,"props":505,"children":506},{"style":144},[507],{"type":41,"value":508},"    \"hasMerchantReturnPolicy\": {\n",{"type":36,"tag":137,"props":510,"children":512},{"class":139,"line":511},39,[513],{"type":36,"tag":137,"props":514,"children":515},{"style":144},[516],{"type":41,"value":517},"      \"@type\": \"MerchantReturnPolicy\",\n",{"type":36,"tag":137,"props":519,"children":521},{"class":139,"line":520},40,[522],{"type":36,"tag":137,"props":523,"children":524},{"style":144},[525],{"type":41,"value":526},"      \"applicableCountry\": \"US\",\n",{"type":36,"tag":137,"props":528,"children":530},{"class":139,"line":529},41,[531],{"type":36,"tag":137,"props":532,"children":533},{"style":144},[534],{"type":41,"value":535},"      \"returnPolicyCategory\": \"https:\u002F\u002Fschema.org\u002FMerchantReturnFiniteReturnWindow\",\n",{"type":36,"tag":137,"props":537,"children":539},{"class":139,"line":538},42,[540],{"type":36,"tag":137,"props":541,"children":542},{"style":144},[543],{"type":41,"value":544},"      \"merchantReturnDays\": 60,\n",{"type":36,"tag":137,"props":546,"children":548},{"class":139,"line":547},43,[549],{"type":36,"tag":137,"props":550,"children":551},{"style":144},[552],{"type":41,"value":553},"      \"returnMethod\": \"https:\u002F\u002Fschema.org\u002FReturnByMail\",\n",{"type":36,"tag":137,"props":555,"children":557},{"class":139,"line":556},44,[558],{"type":36,"tag":137,"props":559,"children":560},{"style":144},[561],{"type":41,"value":562},"      \"returnFees\": \"https:\u002F\u002Fschema.org\u002FFreeReturn\"\n",{"type":36,"tag":137,"props":564,"children":566},{"class":139,"line":565},45,[567],{"type":36,"tag":137,"props":568,"children":569},{"style":144},[570],{"type":41,"value":571},"    }\n",{"type":36,"tag":137,"props":573,"children":575},{"class":139,"line":574},46,[576],{"type":36,"tag":137,"props":577,"children":578},{"style":144},[579],{"type":41,"value":274},{"type":36,"tag":137,"props":581,"children":583},{"class":139,"line":582},47,[584],{"type":36,"tag":137,"props":585,"children":586},{"style":144},[587],{"type":41,"value":588},"  \"aggregateRating\": {\n",{"type":36,"tag":137,"props":590,"children":592},{"class":139,"line":591},48,[593],{"type":36,"tag":137,"props":594,"children":595},{"style":144},[596],{"type":41,"value":597},"    \"@type\": \"AggregateRating\",\n",{"type":36,"tag":137,"props":599,"children":601},{"class":139,"line":600},49,[602],{"type":36,"tag":137,"props":603,"children":604},{"style":144},[605],{"type":41,"value":606},"    \"ratingValue\": \"4.7\",\n",{"type":36,"tag":137,"props":608,"children":610},{"class":139,"line":609},50,[611],{"type":36,"tag":137,"props":612,"children":613},{"style":144},[614],{"type":41,"value":615},"    \"reviewCount\": \"132\"\n",{"type":36,"tag":137,"props":617,"children":619},{"class":139,"line":618},51,[620],{"type":36,"tag":137,"props":621,"children":622},{"style":144},[623],{"type":41,"value":624},"  }\n",{"type":36,"tag":137,"props":626,"children":628},{"class":139,"line":627},52,[629],{"type":36,"tag":137,"props":630,"children":631},{"style":144},[632],{"type":41,"value":633},"}\n",{"type":36,"tag":137,"props":635,"children":637},{"class":139,"line":636},53,[638,643,647],{"type":36,"tag":137,"props":639,"children":640},{"style":144},[641],{"type":41,"value":642},"\u003C\u002F",{"type":36,"tag":137,"props":644,"children":645},{"style":150},[646],{"type":41,"value":153},{"type":36,"tag":137,"props":648,"children":649},{"style":144},[650],{"type":41,"value":175},{"type":36,"tag":37,"props":652,"children":653},{},[654],{"type":41,"value":655},"Field-by-field notes:",{"type":36,"tag":657,"props":658,"children":659},"ul",{},[660,672,682,700,710,720,760],{"type":36,"tag":661,"props":662,"children":663},"li",{},[664,670],{"type":36,"tag":665,"props":666,"children":667},"strong",{},[668],{"type":41,"value":669},"name",{"type":41,"value":671}," — match the visible product title exactly. Mismatches between markup and page copy erode trust in both.",{"type":36,"tag":661,"props":673,"children":674},{},[675,680],{"type":36,"tag":665,"props":676,"children":677},{},[678],{"type":41,"value":679},"description",{"type":41,"value":681}," — a real description with the facts a buyer needs (capacity, weight, differentiators), not a keyword string.",{"type":36,"tag":661,"props":683,"children":684},{},[685,690,692,698],{"type":36,"tag":665,"props":686,"children":687},{},[688],{"type":41,"value":689},"sku \u002F mpn",{"type":41,"value":691}," — stable identifiers that let engines reconcile your product across pages and feeds. Add ",{"type":36,"tag":65,"props":693,"children":695},{"className":694},[],[696],{"type":41,"value":697},"gtin13",{"type":41,"value":699}," if you have barcodes.",{"type":36,"tag":661,"props":701,"children":702},{},[703,708],{"type":36,"tag":665,"props":704,"children":705},{},[706],{"type":41,"value":707},"image",{"type":41,"value":709}," — full absolute URLs; multiple angles help.",{"type":36,"tag":661,"props":711,"children":712},{},[713,718],{"type":36,"tag":665,"props":714,"children":715},{},[716],{"type":41,"value":717},"offers.price \u002F priceCurrency",{"type":41,"value":719}," — the single most important pair in the block. Price as a string number, currency as an ISO 4217 code.",{"type":36,"tag":661,"props":721,"children":722},{},[723,728,730,736,738,744,745,751,752,758],{"type":36,"tag":665,"props":724,"children":725},{},[726],{"type":41,"value":727},"offers.availability",{"type":41,"value":729}," — use the full schema.org URL (",{"type":36,"tag":65,"props":731,"children":733},{"className":732},[],[734],{"type":41,"value":735},"https:\u002F\u002Fschema.org\u002FInStock",{"type":41,"value":737},", ",{"type":36,"tag":65,"props":739,"children":741},{"className":740},[],[742],{"type":41,"value":743},"OutOfStock",{"type":41,"value":737},{"type":36,"tag":65,"props":746,"children":748},{"className":747},[],[749],{"type":41,"value":750},"PreOrder",{"type":41,"value":737},{"type":36,"tag":65,"props":753,"children":755},{"className":754},[],[756],{"type":41,"value":757},"BackOrder",{"type":41,"value":759},") and keep it synced with your inventory system, not hardcoded.",{"type":36,"tag":661,"props":761,"children":762},{},[763,768],{"type":36,"tag":665,"props":764,"children":765},{},[766],{"type":41,"value":767},"shippingDetails \u002F hasMerchantReturnPolicy",{"type":41,"value":769}," — optional but valuable: shipping cost and return windows are exactly what shopping answers get asked about.",{"type":36,"tag":37,"props":771,"children":772},{},[773,778,780,786,788,794],{"type":36,"tag":665,"props":774,"children":775},{},[776],{"type":41,"value":777},"A warning on aggregateRating: only include it if it's real.",{"type":41,"value":779}," The ",{"type":36,"tag":65,"props":781,"children":783},{"className":782},[],[784],{"type":41,"value":785},"ratingValue",{"type":41,"value":787}," and ",{"type":36,"tag":65,"props":789,"children":791},{"className":790},[],[792],{"type":41,"value":793},"reviewCount",{"type":41,"value":795}," must reflect genuine reviews collected for that product and visible on your site. Invented ratings violate Google's structured data policies (a manual action risk) and feed false claims into AI answers with your brand attached. If you have no reviews yet, omit the block entirely — an absent rating is neutral; a fake one is a liability.",{"type":36,"tag":53,"props":797,"children":799},{"id":798},"what-schema-types-matter-beyond-product",[800],{"type":41,"value":801},"What schema types matter beyond Product?",{"type":36,"tag":37,"props":803,"children":804},{},[805],{"type":41,"value":806},"Product markup is the core, but three or four supporting types round out the picture an AI engine builds of your store.",{"type":36,"tag":808,"props":809,"children":811},"h3",{"id":810},"faqpage-for-product-qa",[812],{"type":41,"value":813},"FAQPage for product Q&A",{"type":36,"tag":37,"props":815,"children":816},{},[817],{"type":41,"value":818},"If your product page answers real questions — \"Is this pack carry-on compatible?\", \"How do I adjust the torso length?\" — mark them up:",{"type":36,"tag":127,"props":820,"children":822},{"className":129,"code":821,"language":131,"meta":7,"style":7},"\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Is the Ridgeline 55L carry-on compatible?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"No. At 55 liters it exceeds most airline carry-on limits. Our Dayline 28L fits standard carry-on dimensions.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Can I replace the hip belt buckle myself?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Yes. All buckles are field-replaceable without tools, and replacement buckles are available in our spare parts collection.\"\n      }\n    }\n  ]\n}\n\u003C\u002Fscript>\n",[823],{"type":36,"tag":65,"props":824,"children":825},{"__ignoreMap":7},[826,853,860,867,875,883,891,899,907,915,923,931,938,945,952,959,967,974,981,989,996,1003,1011,1018],{"type":36,"tag":137,"props":827,"children":828},{"class":139,"line":140},[829,833,837,841,845,849],{"type":36,"tag":137,"props":830,"children":831},{"style":144},[832],{"type":41,"value":147},{"type":36,"tag":137,"props":834,"children":835},{"style":150},[836],{"type":41,"value":153},{"type":36,"tag":137,"props":838,"children":839},{"style":156},[840],{"type":41,"value":159},{"type":36,"tag":137,"props":842,"children":843},{"style":144},[844],{"type":41,"value":164},{"type":36,"tag":137,"props":846,"children":847},{"style":167},[848],{"type":41,"value":170},{"type":36,"tag":137,"props":850,"children":851},{"style":144},[852],{"type":41,"value":175},{"type":36,"tag":137,"props":854,"children":855},{"class":139,"line":178},[856],{"type":36,"tag":137,"props":857,"children":858},{"style":144},[859],{"type":41,"value":184},{"type":36,"tag":137,"props":861,"children":862},{"class":139,"line":187},[863],{"type":36,"tag":137,"props":864,"children":865},{"style":144},[866],{"type":41,"value":193},{"type":36,"tag":137,"props":868,"children":869},{"class":139,"line":196},[870],{"type":36,"tag":137,"props":871,"children":872},{"style":144},[873],{"type":41,"value":874},"  \"@type\": \"FAQPage\",\n",{"type":36,"tag":137,"props":876,"children":877},{"class":139,"line":205},[878],{"type":36,"tag":137,"props":879,"children":880},{"style":144},[881],{"type":41,"value":882},"  \"mainEntity\": [\n",{"type":36,"tag":137,"props":884,"children":885},{"class":139,"line":214},[886],{"type":36,"tag":137,"props":887,"children":888},{"style":144},[889],{"type":41,"value":890},"    {\n",{"type":36,"tag":137,"props":892,"children":893},{"class":139,"line":223},[894],{"type":36,"tag":137,"props":895,"children":896},{"style":144},[897],{"type":41,"value":898},"      \"@type\": \"Question\",\n",{"type":36,"tag":137,"props":900,"children":901},{"class":139,"line":232},[902],{"type":36,"tag":137,"props":903,"children":904},{"style":144},[905],{"type":41,"value":906},"      \"name\": \"Is the Ridgeline 55L carry-on compatible?\",\n",{"type":36,"tag":137,"props":908,"children":909},{"class":139,"line":241},[910],{"type":36,"tag":137,"props":911,"children":912},{"style":144},[913],{"type":41,"value":914},"      \"acceptedAnswer\": {\n",{"type":36,"tag":137,"props":916,"children":917},{"class":139,"line":250},[918],{"type":36,"tag":137,"props":919,"children":920},{"style":144},[921],{"type":41,"value":922},"        \"@type\": \"Answer\",\n",{"type":36,"tag":137,"props":924,"children":925},{"class":139,"line":259},[926],{"type":36,"tag":137,"props":927,"children":928},{"style":144},[929],{"type":41,"value":930},"        \"text\": \"No. At 55 liters it exceeds most airline carry-on limits. Our Dayline 28L fits standard carry-on dimensions.\"\n",{"type":36,"tag":137,"props":932,"children":933},{"class":139,"line":268},[934],{"type":36,"tag":137,"props":935,"children":936},{"style":144},[937],{"type":41,"value":490},{"type":36,"tag":137,"props":939,"children":940},{"class":139,"line":277},[941],{"type":36,"tag":137,"props":942,"children":943},{"style":144},[944],{"type":41,"value":499},{"type":36,"tag":137,"props":946,"children":947},{"class":139,"line":286},[948],{"type":36,"tag":137,"props":949,"children":950},{"style":144},[951],{"type":41,"value":890},{"type":36,"tag":137,"props":953,"children":954},{"class":139,"line":295},[955],{"type":36,"tag":137,"props":956,"children":957},{"style":144},[958],{"type":41,"value":898},{"type":36,"tag":137,"props":960,"children":961},{"class":139,"line":304},[962],{"type":36,"tag":137,"props":963,"children":964},{"style":144},[965],{"type":41,"value":966},"      \"name\": \"Can I replace the hip belt buckle myself?\",\n",{"type":36,"tag":137,"props":968,"children":969},{"class":139,"line":313},[970],{"type":36,"tag":137,"props":971,"children":972},{"style":144},[973],{"type":41,"value":914},{"type":36,"tag":137,"props":975,"children":976},{"class":139,"line":322},[977],{"type":36,"tag":137,"props":978,"children":979},{"style":144},[980],{"type":41,"value":922},{"type":36,"tag":137,"props":982,"children":983},{"class":139,"line":331},[984],{"type":36,"tag":137,"props":985,"children":986},{"style":144},[987],{"type":41,"value":988},"        \"text\": \"Yes. All buckles are field-replaceable without tools, and replacement buckles are available in our spare parts collection.\"\n",{"type":36,"tag":137,"props":990,"children":991},{"class":139,"line":340},[992],{"type":36,"tag":137,"props":993,"children":994},{"style":144},[995],{"type":41,"value":490},{"type":36,"tag":137,"props":997,"children":998},{"class":139,"line":349},[999],{"type":36,"tag":137,"props":1000,"children":1001},{"style":144},[1002],{"type":41,"value":571},{"type":36,"tag":137,"props":1004,"children":1005},{"class":139,"line":358},[1006],{"type":36,"tag":137,"props":1007,"children":1008},{"style":144},[1009],{"type":41,"value":1010},"  ]\n",{"type":36,"tag":137,"props":1012,"children":1013},{"class":139,"line":367},[1014],{"type":36,"tag":137,"props":1015,"children":1016},{"style":144},[1017],{"type":41,"value":633},{"type":36,"tag":137,"props":1019,"children":1020},{"class":139,"line":376},[1021,1025,1029],{"type":36,"tag":137,"props":1022,"children":1023},{"style":144},[1024],{"type":41,"value":642},{"type":36,"tag":137,"props":1026,"children":1027},{"style":150},[1028],{"type":41,"value":153},{"type":36,"tag":137,"props":1030,"children":1031},{"style":144},[1032],{"type":41,"value":175},{"type":36,"tag":37,"props":1034,"children":1035},{},[1036],{"type":41,"value":1037},"Question-and-answer pairs map directly onto how people query AI assistants, which makes this markup unusually well-suited to AI retrieval. Only mark up Q&A that actually appears on the page.",{"type":36,"tag":808,"props":1039,"children":1041},{"id":1040},"breadcrumblist-for-site-structure",[1042],{"type":41,"value":1043},"BreadcrumbList for site structure",{"type":36,"tag":37,"props":1045,"children":1046},{},[1047],{"type":41,"value":1048},"Breadcrumbs tell engines where a product sits in your catalog hierarchy — useful context for \"show me their backpack range\" style queries:",{"type":36,"tag":127,"props":1050,"children":1052},{"className":129,"code":1051,"language":131,"meta":7,"style":7},"\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"BreadcrumbList\",\n  \"itemListElement\": [\n    { \"@type\": \"ListItem\", \"position\": 1, \"name\": \"Home\",\n      \"item\": \"https:\u002F\u002Fwww.alpinetrailsupply.example\u002F\" },\n    { \"@type\": \"ListItem\", \"position\": 2, \"name\": \"Backpacks\",\n      \"item\": \"https:\u002F\u002Fwww.alpinetrailsupply.example\u002Fcollections\u002Fbackpacks\" },\n    { \"@type\": \"ListItem\", \"position\": 3, \"name\": \"Ridgeline 55L Backpack\" }\n  ]\n}\n\u003C\u002Fscript>\n",[1053],{"type":36,"tag":65,"props":1054,"children":1055},{"__ignoreMap":7},[1056,1083,1090,1097,1105,1113,1121,1129,1137,1145,1153,1160,1167],{"type":36,"tag":137,"props":1057,"children":1058},{"class":139,"line":140},[1059,1063,1067,1071,1075,1079],{"type":36,"tag":137,"props":1060,"children":1061},{"style":144},[1062],{"type":41,"value":147},{"type":36,"tag":137,"props":1064,"children":1065},{"style":150},[1066],{"type":41,"value":153},{"type":36,"tag":137,"props":1068,"children":1069},{"style":156},[1070],{"type":41,"value":159},{"type":36,"tag":137,"props":1072,"children":1073},{"style":144},[1074],{"type":41,"value":164},{"type":36,"tag":137,"props":1076,"children":1077},{"style":167},[1078],{"type":41,"value":170},{"type":36,"tag":137,"props":1080,"children":1081},{"style":144},[1082],{"type":41,"value":175},{"type":36,"tag":137,"props":1084,"children":1085},{"class":139,"line":178},[1086],{"type":36,"tag":137,"props":1087,"children":1088},{"style":144},[1089],{"type":41,"value":184},{"type":36,"tag":137,"props":1091,"children":1092},{"class":139,"line":187},[1093],{"type":36,"tag":137,"props":1094,"children":1095},{"style":144},[1096],{"type":41,"value":193},{"type":36,"tag":137,"props":1098,"children":1099},{"class":139,"line":196},[1100],{"type":36,"tag":137,"props":1101,"children":1102},{"style":144},[1103],{"type":41,"value":1104},"  \"@type\": \"BreadcrumbList\",\n",{"type":36,"tag":137,"props":1106,"children":1107},{"class":139,"line":205},[1108],{"type":36,"tag":137,"props":1109,"children":1110},{"style":144},[1111],{"type":41,"value":1112},"  \"itemListElement\": [\n",{"type":36,"tag":137,"props":1114,"children":1115},{"class":139,"line":214},[1116],{"type":36,"tag":137,"props":1117,"children":1118},{"style":144},[1119],{"type":41,"value":1120},"    { \"@type\": \"ListItem\", \"position\": 1, \"name\": \"Home\",\n",{"type":36,"tag":137,"props":1122,"children":1123},{"class":139,"line":223},[1124],{"type":36,"tag":137,"props":1125,"children":1126},{"style":144},[1127],{"type":41,"value":1128},"      \"item\": \"https:\u002F\u002Fwww.alpinetrailsupply.example\u002F\" },\n",{"type":36,"tag":137,"props":1130,"children":1131},{"class":139,"line":232},[1132],{"type":36,"tag":137,"props":1133,"children":1134},{"style":144},[1135],{"type":41,"value":1136},"    { \"@type\": \"ListItem\", \"position\": 2, \"name\": \"Backpacks\",\n",{"type":36,"tag":137,"props":1138,"children":1139},{"class":139,"line":241},[1140],{"type":36,"tag":137,"props":1141,"children":1142},{"style":144},[1143],{"type":41,"value":1144},"      \"item\": \"https:\u002F\u002Fwww.alpinetrailsupply.example\u002Fcollections\u002Fbackpacks\" },\n",{"type":36,"tag":137,"props":1146,"children":1147},{"class":139,"line":250},[1148],{"type":36,"tag":137,"props":1149,"children":1150},{"style":144},[1151],{"type":41,"value":1152},"    { \"@type\": \"ListItem\", \"position\": 3, \"name\": \"Ridgeline 55L Backpack\" }\n",{"type":36,"tag":137,"props":1154,"children":1155},{"class":139,"line":259},[1156],{"type":36,"tag":137,"props":1157,"children":1158},{"style":144},[1159],{"type":41,"value":1010},{"type":36,"tag":137,"props":1161,"children":1162},{"class":139,"line":268},[1163],{"type":36,"tag":137,"props":1164,"children":1165},{"style":144},[1166],{"type":41,"value":633},{"type":36,"tag":137,"props":1168,"children":1169},{"class":139,"line":277},[1170,1174,1178],{"type":36,"tag":137,"props":1171,"children":1172},{"style":144},[1173],{"type":41,"value":642},{"type":36,"tag":137,"props":1175,"children":1176},{"style":150},[1177],{"type":41,"value":153},{"type":36,"tag":137,"props":1179,"children":1180},{"style":144},[1181],{"type":41,"value":175},{"type":36,"tag":808,"props":1183,"children":1185},{"id":1184},"organization-on-your-homepage",[1186],{"type":41,"value":1187},"Organization on your homepage",{"type":36,"tag":37,"props":1189,"children":1190},{},[1191,1193,1199],{"type":41,"value":1192},"One Organization block, sitewide identity: name, logo, URL, ",{"type":36,"tag":65,"props":1194,"children":1196},{"className":1195},[],[1197],{"type":41,"value":1198},"sameAs",{"type":41,"value":1200}," links to your social profiles, and contact info. This is how engines connect \"the brand\" to \"the domain\" — the connective tissue for brand-level questions.",{"type":36,"tag":808,"props":1202,"children":1204},{"id":1203},"howto-where-legitimate",[1205],{"type":41,"value":1206},"HowTo — where legitimate",{"type":36,"tag":37,"props":1208,"children":1209},{},[1210],{"type":41,"value":1211},"If you publish genuine step-by-step content (a torso-fitting guide, a buckle replacement walkthrough), HowTo markup fits. Do not force product pages into HowTo shape to chase rich results; misapplied types get ignored at best.",{"type":36,"tag":53,"props":1213,"children":1215},{"id":1214},"how-do-you-validate-structured-data",[1216],{"type":41,"value":1217},"How do you validate structured data?",{"type":36,"tag":37,"props":1219,"children":1220},{},[1221],{"type":41,"value":1222},"Two tools, run against the live URL rather than your source code:",{"type":36,"tag":1224,"props":1225,"children":1226},"ol",{},[1227,1245],{"type":36,"tag":661,"props":1228,"children":1229},{},[1230,1235,1237,1243],{"type":36,"tag":665,"props":1231,"children":1232},{},[1233],{"type":41,"value":1234},"Google's Rich Results Test",{"type":41,"value":1236}," (search.google.com\u002Ftest\u002Frich-results) — checks whether your markup qualifies for rich results and surfaces errors and warnings per type. Errors (missing ",{"type":36,"tag":65,"props":1238,"children":1240},{"className":1239},[],[1241],{"type":41,"value":1242},"offers",{"type":41,"value":1244},", malformed price) need fixing; warnings (missing optional fields) are judgment calls.",{"type":36,"tag":661,"props":1246,"children":1247},{},[1248,1253],{"type":36,"tag":665,"props":1249,"children":1250},{},[1251],{"type":41,"value":1252},"The Schema.org validator",{"type":41,"value":1254}," (validator.schema.org) — checks general schema correctness beyond Google's feature set, which is closer to what non-Google AI engines consume.",{"type":36,"tag":37,"props":1256,"children":1257},{},[1258,1260,1266],{"type":41,"value":1259},"Validate the ",{"type":36,"tag":1261,"props":1262,"children":1263},"em",{},[1264],{"type":41,"value":1265},"rendered",{"type":41,"value":1267}," page because that's what matters: JSON-LD injected by apps or JavaScript, theme conditionals, and per-variant logic all only show up in the final HTML. A useful spot check in your browser console:",{"type":36,"tag":127,"props":1269,"children":1273},{"className":1270,"code":1271,"language":1272,"meta":7,"style":7},"language-js shiki shiki-themes github-dark","document.querySelectorAll('script[type=\"application\u002Fld+json\"]')\n  .forEach(s => console.log(JSON.parse(s.textContent)));\n","js",[1274],{"type":36,"tag":65,"props":1275,"children":1276},{"__ignoreMap":7},[1277,1305],{"type":36,"tag":137,"props":1278,"children":1279},{"class":139,"line":140},[1280,1285,1290,1295,1300],{"type":36,"tag":137,"props":1281,"children":1282},{"style":144},[1283],{"type":41,"value":1284},"document.",{"type":36,"tag":137,"props":1286,"children":1287},{"style":156},[1288],{"type":41,"value":1289},"querySelectorAll",{"type":36,"tag":137,"props":1291,"children":1292},{"style":144},[1293],{"type":41,"value":1294},"(",{"type":36,"tag":137,"props":1296,"children":1297},{"style":167},[1298],{"type":41,"value":1299},"'script[type=\"application\u002Fld+json\"]'",{"type":36,"tag":137,"props":1301,"children":1302},{"style":144},[1303],{"type":41,"value":1304},")\n",{"type":36,"tag":137,"props":1306,"children":1307},{"class":139,"line":178},[1308,1313,1318,1322,1328,1334,1339,1344,1348,1354,1358,1363],{"type":36,"tag":137,"props":1309,"children":1310},{"style":144},[1311],{"type":41,"value":1312},"  .",{"type":36,"tag":137,"props":1314,"children":1315},{"style":156},[1316],{"type":41,"value":1317},"forEach",{"type":36,"tag":137,"props":1319,"children":1320},{"style":144},[1321],{"type":41,"value":1294},{"type":36,"tag":137,"props":1323,"children":1325},{"style":1324},"--shiki-default:#FFAB70",[1326],{"type":41,"value":1327},"s",{"type":36,"tag":137,"props":1329,"children":1331},{"style":1330},"--shiki-default:#F97583",[1332],{"type":41,"value":1333}," =>",{"type":36,"tag":137,"props":1335,"children":1336},{"style":144},[1337],{"type":41,"value":1338}," console.",{"type":36,"tag":137,"props":1340,"children":1341},{"style":156},[1342],{"type":41,"value":1343},"log",{"type":36,"tag":137,"props":1345,"children":1346},{"style":144},[1347],{"type":41,"value":1294},{"type":36,"tag":137,"props":1349,"children":1351},{"style":1350},"--shiki-default:#79B8FF",[1352],{"type":41,"value":1353},"JSON",{"type":36,"tag":137,"props":1355,"children":1356},{"style":144},[1357],{"type":41,"value":51},{"type":36,"tag":137,"props":1359,"children":1360},{"style":156},[1361],{"type":41,"value":1362},"parse",{"type":36,"tag":137,"props":1364,"children":1365},{"style":144},[1366],{"type":41,"value":1367},"(s.textContent)));\n",{"type":36,"tag":37,"props":1369,"children":1370},{},[1371],{"type":41,"value":1372},"If that throws a parse error, so does every crawler.",{"type":36,"tag":53,"props":1374,"children":1376},{"id":1375},"platform-notes-shopify-and-friends",[1377],{"type":41,"value":1378},"Platform notes: Shopify and friends",{"type":36,"tag":37,"props":1380,"children":1381},{},[1382,1384,1389],{"type":41,"value":1383},"Shopify themes often emit ",{"type":36,"tag":1261,"props":1385,"children":1386},{},[1387],{"type":41,"value":1388},"partial",{"type":41,"value":1390}," Product schema — audit, don't assume. Common failure modes we see on real stores:",{"type":36,"tag":657,"props":1392,"children":1393},{},[1394,1414,1419,1424],{"type":36,"tag":661,"props":1395,"children":1396},{},[1397,1399,1405,1406,1412],{"type":41,"value":1398},"The theme outputs Product markup but omits ",{"type":36,"tag":65,"props":1400,"children":1402},{"className":1401},[],[1403],{"type":41,"value":1404},"sku",{"type":41,"value":737},{"type":36,"tag":65,"props":1407,"children":1409},{"className":1408},[],[1410],{"type":41,"value":1411},"brand",{"type":41,"value":1413},", or the availability URL.",{"type":36,"tag":661,"props":1415,"children":1416},{},[1417],{"type":41,"value":1418},"A review app injects a second Product block, so the page asserts two conflicting products.",{"type":36,"tag":661,"props":1420,"children":1421},{},[1422],{"type":41,"value":1423},"Variant pages show the selected variant's price on screen but the default variant's price in JSON-LD.",{"type":36,"tag":661,"props":1425,"children":1426},{},[1427],{"type":41,"value":1428},"An SEO app and the theme both emit Organization markup with different data.",{"type":36,"tag":37,"props":1430,"children":1431},{},[1432,1434,1440],{"type":41,"value":1433},"The fix is always the same: view the rendered source of a real product page, extract every ",{"type":36,"tag":65,"props":1435,"children":1437},{"className":1436},[],[1438],{"type":41,"value":1439},"ld+json",{"type":41,"value":1441}," block, and reconcile them into one accurate set. The same audit applies to WooCommerce, BigCommerce, and headless builds — the platforms differ, the failure modes don't.",{"type":36,"tag":53,"props":1443,"children":1445},{"id":1444},"how-does-rynex-check-this-automatically",[1446],{"type":41,"value":1447},"How does Rynex check this automatically?",{"type":36,"tag":37,"props":1449,"children":1450},{},[1451,1453,1459,1461,1467],{"type":41,"value":1452},"The Rynex GEO health check includes AI crawlability checks that flag missing or invalid JSON-LD alongside your robots.txt rules and llms.txt — so a broken Product block or a conflicting duplicate shows up as a finding rather than a silent visibility leak. You can run the ",{"type":36,"tag":44,"props":1454,"children":1456},{"href":1455},"\u002Fgeo-audit",[1457],{"type":41,"value":1458},"free GEO Audit",{"type":41,"value":1460}," against your store right now to see where your structured data stands. And once your markup is clean, measure whether it's paying off by ",{"type":36,"tag":44,"props":1462,"children":1464},{"href":1463},"\u002Fblog\u002Ftrack-ai-search-traffic-ga4",[1465],{"type":41,"value":1466},"tracking AI search traffic in GA4",{"type":41,"value":51},{"type":36,"tag":53,"props":1469,"children":1471},{"id":1470},"faq",[1472],{"type":41,"value":1473},"FAQ",{"type":36,"tag":808,"props":1475,"children":1477},{"id":1476},"does-json-ld-structured-data-help-with-ai-search-visibility",[1478],{"type":41,"value":18},{"type":36,"tag":37,"props":1480,"children":1481},{},[1482],{"type":41,"value":19},{"type":36,"tag":808,"props":1484,"children":1486},{"id":1485},"what-fields-should-product-json-ld-include-at-minimum",[1487],{"type":41,"value":21},{"type":36,"tag":37,"props":1489,"children":1490},{},[1491],{"type":41,"value":22},{"type":36,"tag":808,"props":1493,"children":1495},{"id":1494},"can-i-add-aggregaterating-to-my-product-schema-without-reviews",[1496],{"type":41,"value":24},{"type":36,"tag":37,"props":1498,"children":1499},{},[1500],{"type":41,"value":25},{"type":36,"tag":808,"props":1502,"children":1504},{"id":1503},"does-my-shopify-theme-already-output-product-schema",[1505],{"type":41,"value":27},{"type":36,"tag":37,"props":1507,"children":1508},{},[1509],{"type":41,"value":28},{"type":36,"tag":808,"props":1511,"children":1513},{"id":1512},"how-do-i-validate-my-product-structured-data",[1514],{"type":41,"value":30},{"type":36,"tag":37,"props":1516,"children":1517},{},[1518],{"type":41,"value":31},{"type":36,"tag":1520,"props":1521,"children":1522},"style",{},[1523],{"type":41,"value":1524},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":7,"searchDepth":178,"depth":178,"links":1526},[1527,1528,1529,1535,1536,1537,1538],{"id":55,"depth":178,"text":58},{"id":109,"depth":178,"text":112},{"id":798,"depth":178,"text":801,"children":1530},[1531,1532,1533,1534],{"id":810,"depth":187,"text":813},{"id":1040,"depth":187,"text":1043},{"id":1184,"depth":187,"text":1187},{"id":1203,"depth":187,"text":1206},{"id":1214,"depth":178,"text":1217},{"id":1375,"depth":178,"text":1378},{"id":1444,"depth":178,"text":1447},{"id":1470,"depth":178,"text":1473,"children":1539},[1540,1541,1542,1543,1544],{"id":1476,"depth":187,"text":18},{"id":1485,"depth":187,"text":21},{"id":1494,"depth":187,"text":24},{"id":1503,"depth":187,"text":27},{"id":1512,"depth":187,"text":30},"markdown","content:blog:product-schema-for-ai-search.md","content","blog\u002Fproduct-schema-for-ai-search.md","blog\u002Fproduct-schema-for-ai-search","md",[1552,1554],{"_path":88,"title":1553},"llms.txt for E-Commerce: What It Is, With a Copy-Paste Template",{"_path":1555,"title":1556},"\u002Fblog\u002Fprofound-vs-peec-vs-rynex","Profound vs Peec AI vs Rynex: AI Visibility Tracking for Online Stores",[1558,1562,1566],{"_path":1559,"title":1560,"description":1561},"\u002Fblog\u002Fbest-geo-tools-for-ecommerce","Best GEO Tools for E-Commerce in 2026, Compared","Compare the best GEO tools for e-commerce in 2026 — Profound, Peec AI, Otterly.ai, and Rynex — on measurement methodology, store fit, and pricing.",{"_path":1563,"title":1564,"description":1565},"\u002Fblog\u002Ffree-ai-visibility-audit-guide","Free AI Visibility Audit: What It Checks and How to Read Your Score","What a free AI visibility audit actually checks — crawlability, structured data, real AI mentions, competitor gaps — and how to act on your score.",{"_path":1567,"title":1568,"description":1569},"\u002Fblog\u002Fhow-to-get-your-store-recommended-by-chatgpt","How to Get Your Store Recommended by ChatGPT (2026 Guide)","A practical 2026 guide to getting your store recommended by ChatGPT: AI crawler access, llms.txt, Product JSON-LD, earned mentions, and how to measure it.",1785436070596]