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,brandoffers:price,priceCurrency,availability,priceValidUntilaggregateRatingandreview- the stars - but only if reviews genuinely exist on the pagegtin/mpnwhere 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
AggregateOfferwith 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.