Magento 2 Rich Snippets and Product Schema Markup

Magento 2 Rich Snippets and Product Schema Markup

November 27, 2025 · By Magento Company
Magento 2 Rich Snippets and Product Schema Markup

Structured data is how your products earn rich results in Google - price, availability and star ratings shown directly in search. Stores with complete product schema see measurably higher click-through from the same rankings. Magento emits basic product markup out of the box, but “basic” leaves most of the value on the table. Here is what complete looks like.

What Google Wants on a Product Page

The Product schema properties that drive rich results:

  • name, image, description, sku, brand
  • offers: price, priceCurrency, availability, priceValidUntil
  • aggregateRating and review - the stars - but only if reviews genuinely exist on the page
  • gtin/mpn where available - increasingly important for Google Shopping and free listings

JSON-LD is the format Google recommends and the one to use. Magento’s native microdata is functional but harder to extend cleanly; a JSON-LD block in the head is easier to build, test and override.

Building the Block

A view model assembling the array, rendered via json_encode in a template injected on product pages:

$schema = [
    '@context' => 'https://schema.org',
    '@type' => 'Product',
    'name' => $product->getName(),
    'sku' => $product->getSku(),
    'image' => [$imageUrl],
    'offers' => [
        '@type' => 'Offer',
        'price' => $product->getFinalPrice(),
        'priceCurrency' => $currencyCode,
        'availability' => $product->isSalable()
            ? 'https://schema.org/InStock'
            : 'https://schema.org/OutOfStock',
        'priceValidUntil' => $specialToDate ?: null,
    ],
];

Details that matter:

  • Final price, including catalog rule effects - the schema price must match the displayed price or Google flags a mismatch
  • Real availability, refreshed with the page cache (schema inside the hole-punched, cached page is fine as long as the page reflects current stock)
  • Configurable products: use an AggregateOffer with low/high price, or emit offers per variant. Google supports both; consistency with what the customer sees is what matters

Reviews: Honesty Required

Only mark up reviews displayed on the page, from real customers. Google explicitly penalises self-serving review markup on pages without visible reviews - and fake aggregate ratings are a manual-action risk. If your store has few reviews, that is the real problem to fix (post-purchase review emails), not the markup.

Beyond Products

  • BreadcrumbList: cheap win, improves how URLs display in results
  • Organization on the homepage: name, logo, sameAs social profiles
  • FAQ on genuine FAQ content, marked up visibly

Test, Then Test Again

  • Rich Results Test (Google) for page-level validation
  • Schema.org validator for syntax
  • Search Console’s Shopping and Enhancements reports for site-wide errors at scale

The classic errors: price as a string with currency symbol (must be numeric), missing priceCurrency, availability as a boolean instead of the schema URL, review markup without visible reviews.

Complete product schema is an afternoon’s work for a store-wide, permanent CTR improvement. In the ranking-versus-CTR equation, it is the cheapest lever most Magento stores never fully pull.

SEO Marketing Magento 2