Skip to content
5.0 Upwork, 100+ reviews Adobe Certified since 2021 New: become your own Magento developer Learn more →
Magento glossary

What is Magento structured data?

Short answer Structured data in Magento means Schema.org JSON-LD printed in the page HTML, usually in a <script type="application/ld+json"> block, so search engines can read what a page is: a product with a price and stock status, a breadcrumb trail, an article and its author. Valid markup makes product pages eligible for Google rich results such as price, availability and review stars. Luma only ships basic Product microdata in its templates, so on most stores I add JSON-LD for Product, Offer, AggregateRating, BreadcrumbList and Organization through a module. I check each template with the Rich Results Test and watch Search Console after every release.

How it works
  1. Pick the schema types your page templates need 01
  2. Emit JSON-LD via a Block class or head.additional 02
  3. Wire entity references via @id URIs 03
  4. Validate with Rich Results Test + Schema Validator 04
  5. Monitor in Search Console Enhancements reports 05
Each step is explained below

Most common mistake Wrong MIME type on the script tag

How it works

Five steps from schema-type selection to Search Console monitoring

There is no magic here: a shared vocabulary, a script tag, two validators and a Search Console report. This is the order I work in when I add schema to a store.

  1. 01

    Pick the schema types your page templates need

    I map page types to schema types before writing any markup. Product with a nested Offer (plus AggregateRating and Review when the store has reviews) on product pages, BreadcrumbList on catalog pages, Organization and WebSite on the home page, Article or BlogPosting on blog posts, LocalBusiness for a physical shop. The full type list is at schema.org/docs/full.html; pick the most specific type that really matches the page.

  2. 02

    Emit JSON-LD via a Block class or head.additional

    I add the markup through layout XML, either in the head.additional container or as a block near the page content, with its own template. A Block or ViewModel builds a PHP array and the template prints <script type="application/ld+json"><?= json_encode($graph, JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE) ?></script>. An @graph array lets me put Product, BreadcrumbList and Organization in one script tag. Building the data in PHP and encoding it with json_encode also saves you from broken JSON when a product name contains quotes.

  3. 03

    Wire entity references via @id URIs

    I give each entity an @id, for example https://yoursite.com/#organization, and reference it instead of repeating it. An Article’s author then becomes {"@id": "https://yoursite.com/#kishan-savaliya"} rather than a full Person object on every page. The Person or Organization is defined once, usually in markup that loads site-wide, and every page points back to it. The markup stays short and the same entity is described the same way everywhere.

  4. 04

    Validate with Rich Results Test + Schema Validator

    I use two free tools. validator.schema.org checks the markup against the Schema.org vocabulary: wrong types, unknown properties, broken nesting. search.google.com/test/rich-results tells you whether Google can show a rich result for the page, and lists errors (these block it) and warnings (missing recommended properties). I fix every error before release and as many warnings as the store’s data allows, for example adding gtin or brand when the catalog actually has those values.

  5. 05

    Monitor in Search Console Enhancements reports

    After release, Google Search Console shows a report per rich result type, such as product snippets, merchant listings, breadcrumbs and review snippets. Each report lists valid items, warnings and errors with example URLs, and you can inspect a single URL to see what Google picked up. I check these reports for a few weeks after any theme or module deploy, because a sudden drop almost always means a template change broke the markup.

When to use

Four cases where I always add structured data

Valid markup that matches the visible page has very little downside. These are the four cases where I add it on every project.

  • Every Magento store, Product schema is baseline

    I would not skip Product schema on any store. It is what makes product pages eligible for price, availability and review stars in Google results, and it feeds Google’s free merchant listings too. At minimum I ship Product with an Offer (price, currency, availability), plus AggregateRating and Review when the store has real reviews. Luma’s built-in microdata only covers part of this, so a module such as mage2kishan/module-structured-data or Mageplaza Rich Snippets fills the gaps.

  • Sites optimising for AI Overviews and Perplexity

    Clean JSON-LD makes it easier for any crawler, including the ones behind AI search tools, to pick out the product name, price, author and dates without guessing from the HTML. Nobody outside those companies knows how much weight they give it, so I do not sell schema as an AI ranking trick. I treat it as clear metadata that matches the visible page, which helps classic search and AI answers alike.

  • FAQ blocks on service and guide pages

    Since 2023 Google only shows FAQ rich results for a small group of well-known government and health sites, so most stores will not get expandable questions in search any more. I still add FAQPage markup when a page has a real, visible FAQ, because it describes the content clearly for other search engines and AI tools and costs very little. I just do not promise a click-through lift from it.

  • Video and event content

    VideoObject and Event still have their own result types in Google: video results can show a thumbnail and duration, and events can show dates and a location. Google stopped showing HowTo rich results in 2023, so I no longer add HowTo markup for search alone. If a store has product videos on its PDPs or sells event tickets, marking those up is a small job for the extra visibility it can bring.

Common mistakes

Three structured-data mistakes that silently kill rich results

Every "my schema is not working" audit I run lands on one of these three issues. Check each before assuming Google is being unfair.

  • Wrong MIME type on the script tag

    The single most common bug. Putting your JSON-LD in <script type="text/javascript"> or omitting the type attribute entirely makes Google skip the block. The crawler matches the literal string application/ld+json, nothing else triggers JSON-LD parsing. Audit your template output in DevTools and confirm every structured-data block opens with <script type="application/ld+json">. This catches about a third of "my schema isn’t showing up" tickets.

  • Marking up content that is not visible to users

    Google’s structured-data guidelines explicitly forbid marking up prices, reviews, availability, or any other property that is not visible on the rendered page. If you set ratingValue: 4.8 in JSON-LD but no stars appear in the page’s rendered HTML, that is grounds for a manual penalty. The penalty: Google removes all rich-result eligibility for the affected URL pattern, sometimes sitewide. Always derive schema values from the same data source that renders the visible price / rating block. Never hard-code marketing values into schema.

  • FAQPage answers exceeding 3000 characters

    Google truncates FAQPage rich results when any single answer runs past 3000 characters, and in some cases rejects the entire FAQPage block. Audit your FAQ answer lengths before shipping, this is especially common when content writers paste long explanatory paragraphs into FAQ slots that were sized for short answers. The fix: split long answers across multiple questions, or move the long-form content into the Article body and keep the FAQ tight. Run strlen() on each answer in your Block class as a sanity check.

FAQ

Magento structured data, frequently asked questions

  • JSON-LD vs Microdata vs RDFa, which should I use?
    Use JSON-LD. The Schema.org specification accepts all three syntaxes equally, but Google’s documentation explicitly states a preference for JSON-LD because it sits in the page <head> as a separate block, isolated from the rendered DOM. That makes it dramatically easier to maintain, you can rebuild templates, swap frontend frameworks, even migrate from Luma to Hyvä without touching schema markup. Microdata couples the markup to your HTML tags inline (data-attribute soup), and RDFa is essentially Microdata with a different syntax. For any new Magento build in 2026, JSON-LD is the only sensible choice.
  • Is Microdata still valid? Will my existing Microdata stop working?
    Microdata is still fully valid, Google, Bing, and every other consumer of Schema.org markup still parse it. If your existing Magento store ships Microdata (the older mage2kishan module versions and several third-party extensions did), you do not need to rush a migration. The Schema.org spec accepts all three equivalently. The reason to migrate to JSON-LD is maintainability, not validity. Plan the migration when you next rebuild your templates, not as an emergency. The one practical edge: some newer rich-result types (like FAQPage) are easier to author cleanly in JSON-LD because they nest deeply.
  • Why are my Product rich snippets not showing in Google SERP?
    Three common causes. (1) Validation errors, run the URL through search.google.com/test/rich-results and fix every red error. (2) Insufficient page authority, Google’s rich-result engine applies a quality filter; even valid markup can be suppressed on pages with weak backlink profiles or thin content. Build domain authority and the snippets unlock retroactively. (3) Google’s discretion, even on perfectly valid markup, Google chooses what to render. Valid structured data makes your page eligible for a rich result; it does not guarantee one. Monitor the Search Console Enhancements report and the rich-result preview to see what Google actually displays.
  • Does Magento 2.4 emit Product schema automatically?
    Yes, Magento 2.4.x ships a thin built-in Product schema block out of the box, emitting name, image, price, availability, and brand. Adobe added it in the 2.4.x series after years of merchants complaining about the gap. The built-in is functional but incomplete, most production stores need Review and AggregateRating nesting, sku and gtin13 properties, offers with priceValidUntil, and BreadcrumbList sitewide. Third-party modules (mage2kishan/module-structured-data, Mageplaza Rich Snippets, Magezon) fill those gaps. Audit your current emit with view-source: on a PDP before assuming the core is enough.
  • Can I have multiple schema blocks on one page?
    Yes, and the standard pattern is to combine them via a single @graph array inside one JSON-LD script tag. That keeps the HTML clean and makes entity-reference (@id cross-linking) work cleanly across types. A typical Magento PDP combines Product + Offer + AggregateRating + Review + BreadcrumbList in one @graph. The alternative, multiple separate <script type="application/ld+json"> blocks, also works and Google parses them equivalently, but it duplicates the @context boilerplate and makes maintenance harder. Single @graph is preferred unless you have a strong reason otherwise (e.g. dynamically-injected blocks from different modules).
  • How exactly does structured data help with AI Overviews?
    LLM-powered search engines (Google AI Overviews, ChatGPT browse, Perplexity, You.com) crawl your page’s structured data alongside its visible text, and they treat the structured data as authoritative metadata when summarising the topic. Properties like name, description, author, datePublished, aggregateRating, and about feed directly into the citation snippet the AI generates. Without structured data, the LLM has to infer those facts from your prose, less reliable, more likely to misattribute, less likely to cite. With structured data, the LLM cites with confidence. This is why "AI-citation visibility" has become the new rich-result, structured data is the lever.
Schema audit

Want a structured-data audit on your Magento store?

Send your storefront URL, I will run the Rich Results Test on every page-type, audit your @graph structure, check FAQ-length compliance, verify visibility-of-marked-up-content, and reply with a written fix list, fixed-price quote, and earliest start date. 24-business-hour turnaround.

Kishan Savaliya Online 10 AM to 7 PM IST Chat on WhatsApp