Skip to main content

Structured data overview

Schema.org JSON-LD blocks emitted in the page <head> (Luma + Hyvä) and via the seo.structured_data GraphQL field (headless). Pluggable provider pattern — register new schema types by implementing one interface.

Built-in providers

Provider codeSchema typeWhere it fires
productProduct (with Offer, optional AggregateRating, Brand, gtin, mpn)Product pages
breadcrumbBreadcrumbListProduct + category pages
organizationOrganization (with logo, sameAs)Home page only
websiteWebSite + SearchAction (sitelinks search box)Home page only

Each is independently togglable.

Configuration

Stores → Configuration → SEO Suite → Structured Data (JSON-LD)

FieldDefault
Enable JSON-LD outputNo
Product schemaYes (when master switch on)
Breadcrumb schemaYes
Organization schema (home page)Yes
WebSite + SearchAction schema (home page)Yes
Organization nameFalls back to store name
Organization logo URLEmpty (recommended to set)
Social / official URLs (one per line)Empty — used for sameAs
Search URL templateDefaults to /catalogsearch/result/?q={search_term_string}

Per-store overrides supported.

Output format

JSON-LD is rendered with JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT so the source view stays readable. The template also escapes </ to <\/ defensively.

<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Acme Widget Pro",
"sku": "AWP-001",
"image": "https://store.example/media/catalog/product/cache/.../awp.jpg",
"url": "https://store.example/acme-widget-pro.html",
"offers": {
"@type": "Offer",
"price": "49.99",
"priceCurrency": "GBP",
"availability": "https://schema.org/InStock",
"url": "https://store.example/acme-widget-pro.html"
},
"brand": {
"@type": "Brand",
"name": "Acme"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.5,
"reviewCount": 28,
"bestRating": 5,
"worstRating": 1
}
}
</script>

How it composes with Magento core

Magento Open Source ships no JSON-LD out of the box. Adobe Commerce ships limited Product/Offer JSON-LD via Magento_CatalogStorefront. The SEO Suite's providers don't conflict — both blocks render and Google merges them, but to avoid confusion we recommend disabling Adobe Commerce's storefront JSON-LD if you're on EE.

Validation

Use Google's Rich Results Test on a product page URL. You should see Product snippets detected with no errors.

Splitting structured data across multiple <script> tags

A single provider can return either one document or an array of documents. The renderer wraps each in its own <script> tag — the recommended pattern over packing multiple @types into one block, because Google's parser is more lenient with separate blocks.

Next