TL;DR
- Ship Schema.org Product markup with all 6 recommended properties: name, image, sku, brand, offers, aggregateRating
- Add FAQPage schema for AI Overview eligibility — second-most-cited markup in Google answers
- BreadcrumbList, Article, Review, SoftwareApplication, and Organization each cover specific page types
- Validate with Google Rich Results Test, Schema.org Validator, and a curl-as-GPTBot fetch
- Common blockers: multiple conflicting Product blocks, expired priceValidUntil, JSON-LD injected via GTM
This is a copy-paste reference for the Schema.org markup that ecommerce stores need to be discovered by Google, ChatGPT, Perplexity, and Claude. Each block below is production-ready JSON-LD. Drop the snippet into your <head> and replace the values with your own.
Why Schema.org markup matters in 2026
AI shopping agents read JSON-LD blocks from the page HTML and treat the structured data as the source of truth for product facts. When the markup is complete, the agent can quote price, brand, rating, and availability directly. When it is missing or partial, the agent often skips the product because there is no reliable data to cite.
Classical Google SEO has rewarded Schema markup for over a decade. For agentic commerce in 2026, complete markup is a precondition for citation rather than an optimization.
1. Product (mandatory on every product page)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Heartly Pro Plan",
"image": [
"https://www.heartly.io/og/pro-plan-1x1.png",
"https://www.heartly.io/og/pro-plan-4x3.png",
"https://www.heartly.io/og/pro-plan-16x9.png"
],
"description": "AI-powered flash sales for Shopify and WooCommerce. Autopilot, competitor radar, mobile apps.",
"sku": "HEARTLY-PRO",
"mpn": "HRTLY-PRO-2026",
"brand": {
"@type": "Brand",
"name": "Heartly"
},
"offers": {
"@type": "Offer",
"url": "https://www.heartly.io/pricing",
"priceCurrency": "USD",
"price": "49.50",
"priceValidUntil": "2026-12-31",
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127"
}
}
</script>
The six recommended properties for AI agent eligibility: name, image, sku, brand, offers, aggregateRating. Ship all six for full coverage. Ship fewer and expect proportionally lower citation rates.
2. Organization (one block in your root layout)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Your Store Name",
"legalName": "Your Store Legal Entity GmbH",
"url": "https://www.your-store.com",
"logo": "https://www.your-store.com/logo.png",
"foundingDate": "2024",
"address": {
"@type": "PostalAddress",
"streetAddress": "Main Street 1",
"addressLocality": "Berlin",
"postalCode": "10115",
"addressCountry": "DE"
},
"contactPoint": {
"@type": "ContactPoint",
"email": "support@your-store.com",
"contactType": "customer support"
},
"sameAs": [
"https://twitter.com/your-store",
"https://www.linkedin.com/company/your-store"
]
}
</script>
3. FAQPage (for FAQ sections, Google AI Overview eligible)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Does the product support both Shopify and WooCommerce?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Heartly is production-ready on both Shopify and WooCommerce with full feature parity."
}
},
{
"@type": "Question",
"name": "Is there a free trial?",
"acceptedAnswer": {
"@type": "Answer",
"text": "14 days free with full feature access. No credit card required to start the trial."
}
}
]
}
</script>
FAQ schema is one of the most-cited markup types in Google AI Overview answers. Heartly ships FAQPage schema on every comparison page and landing page automatically.
4. BreadcrumbList (one block per non-root page)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.your-store.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "Shoes",
"item": "https://www.your-store.com/shoes"
},
{
"@type": "ListItem",
"position": 3,
"name": "Running Shoes",
"item": "https://www.your-store.com/shoes/running"
}
]
}
</script>
5. Article (for blog posts)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Article title here",
"description": "Article description here",
"image": "https://www.your-store.com/blog/article-image.jpg",
"author": {
"@type": "Person",
"name": "Author Name",
"url": "https://www.your-store.com/about/author-name"
},
"publisher": {
"@type": "Organization",
"name": "Your Store Name",
"logo": {
"@type": "ImageObject",
"url": "https://www.your-store.com/logo.png"
}
},
"datePublished": "2026-05-16",
"dateModified": "2026-05-16",
"mainEntityOfPage": "https://www.your-store.com/blog/article-slug"
}
</script>
6. Review (for product review pages)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Review",
"itemReviewed": {
"@type": "Product",
"name": "Product Name"
},
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"author": {
"@type": "Person",
"name": "Reviewer Name"
},
"reviewBody": "Full review text here."
}
</script>
7. SoftwareApplication (for SaaS tools)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Heartly",
"applicationCategory": "BusinessApplication",
"applicationSubCategory": "E-commerce Marketing Software",
"operatingSystem": "Web",
"offers": [
{ "@type": "Offer", "name": "Basic", "price": "14.50", "priceCurrency": "USD" },
{ "@type": "Offer", "name": "Plus", "price": "29.50", "priceCurrency": "USD" },
{ "@type": "Offer", "name": "Pro", "price": "49.50", "priceCurrency": "USD" }
]
}
</script>
How to validate
Three tools confirm your markup parses correctly:
- Google Rich Results Test (search.google.com/test/rich-results). Paste a URL or HTML snippet. Returns a list of detected structured data items and any errors.
- Schema Markup Validator (validator.schema.org). The official Schema.org validator. More thorough than the Google tool for properties Google does not currently use but other agents do.
- Manual fetch as agent. Run
curl -A "GPTBot" https://your-page.comand grep forapplication/ld+json. Confirm the JSON-LD is in the server response and not added by client-side JavaScript.
Common mistakes that block citations
- Multiple Product blocks per page with conflicting prices. Pick one default variant. Ship one Offer.
- Image URLs that return 404 or redirect. AI agents follow image URLs. Broken images downgrade the credibility of the whole block.
- AggregateRating with reviewCount of 0. If you do not have real review data, omit the block. Empty data is worse than no data.
- priceValidUntil in the past. The agent treats expired offers as no longer available and skips the product.
- JSON-LD injected via Google Tag Manager. Many AI crawlers do not execute GTM. Render JSON-LD server-side instead.
Next steps
For the framework, see the pillar at /agentic-commerce. For the practical audit checklist, see Prepare Your Store for AI Shoppers. For the ChatGPT-specific ranking signal study, see How ChatGPT Picks Products — Inside the Ranking Signals.
