02 · Structure · Open source
Complete JSON-LD Schema for Magento 2
angeo/module-rich-data
Magento’s default theme emits partial microdata. This emits complete JSON-LD — Product, Organization, BreadcrumbList, FAQPage and WebSite — with the fields AI engines and Google actually require.
Free and MIT-licensed. No licence key, no account, no telemetry.
What it does
Four things worth knowing before you install.
Availability as a full URI
https://schema.org/InStock, not the bare string InStock. This one difference is the most common reason a product with valid-looking schema is skipped entirely.
Return and shipping details
MerchantReturnPolicy and OfferShippingDetails are emitted from your existing configuration — both are required for full eligibility in Google’s merchant experiences.
Product identifiers
GTIN and MPN mapped from your attributes, so an engine can match your listing to the same product elsewhere instead of treating it as unknown.
Breadcrumbs and item lists
BreadcrumbList on product and category pages and ItemList on listings, giving an engine the catalogue hierarchy without inferring it from URLs.
Check for duplicates after installing. If your theme or another extension already emits Product schema, you can end up with two conflicting nodes. Validate one product URL before rolling out.
Requirements
| Magento | Open Source / Adobe Commerce 2.4.x |
| PHP | 8.2+ |
| Format | JSON-LD @graph |
| Themes | Luma and Hyvä |
| Licence | MIT |
Questions
Does Magento not already output Product schema?
It outputs partial microdata. AI engines and Google both prefer JSON-LD, and the default output is missing fields that determine whether a product is usable at all.
Why does offers.availability matter so much?
Because an engine that cannot confirm a product is purchasable will not quote it. A bare string is not a recognised value, so the offer reads as unresolved.
Does it work with Hyvä?
Yes. Schema is emitted independently of the frontend theme, which matters because some Hyvä setups drop the default microdata entirely.
Will it conflict with my SEO extension?
It can, if that extension also emits Product schema. Disable one of the two — running both produces duplicate nodes that engines resolve unpredictably.
Works with
Each module is independent, but these three are the ones most often installed alongside it.
Not sure whether you need this one?
Run the free scanner on your domain, or install the CLI audit. Both report which signals your store currently fails, so you install only what closes a real gap.