Online store SEO
Product structured data in 2026: what Google requires, recommends and has retired
18 Oct 2026 ·6 min read · اقرأ بالعربية
Structured data is code in your product pages, usually a JSON-LD block, that states the product's name, image, price, currency and availability in a form Google doesn't have to guess. Google uses it for two kinds of product results: product snippets, for pages where people can't buy directly (such as review pages), and merchant listings, for pages where they can. Missing or broken markup doesn't hide your page, but it makes the page ineligible for product results that show price, availability and ratings. Google also says that providing both structured data and a Merchant Center feed "maximizes your eligibility".
What Google uses in 2026
Merchant listings. Required: name, image, offers.price (greater than zero) and offers.priceCurrency. Recommended: availability, url, itemCondition, brand, gtin/mpn/sku, shippingDetails, hasMerchantReturnPolicy, category, color/size/material and inProductGroupWithID. Images should be at least 50,000 pixels (width × height).
Product snippets. Required: name plus one of review, aggregateRating or offers.
Recent additions. Organization-level hasShippingService and hasMerchantReturnPolicy (November 2025; settings in Search Console take precedence), category (July 2025) and hasAdultConsideration (May 2026). Products with variants use ProductGroup with hasVariant.
Retired. FAQ rich results stopped on 7 May 2026. Practice problems went in January 2026. The June 2025 batch removed course info, ClaimReview, estimated salary, learning video, special announcement and vehicle listing results. The sitelinks search box and HowTo went earlier. FAQ markup already on your pages does no harm; it just no longer produces a rich result, so don't add it expecting one.
A minimal merchant-listing block looks like this:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Oud perfume, 50 ml",
"image": ["https://example.com/images/oud-50ml.jpg"],
"sku": "OUD-50",
"brand": { "@type": "Brand", "name": "Example Brand" },
"offers": {
"@type": "Offer",
"url": "https://example.com/products/oud-50ml",
"price": "200.00",
"priceCurrency": "SAR",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
}
</script>
How to check
- Test a product URL in Google's Rich Results Test, and look at the merchant listing and product snippet reports in Search Console.
- View the page source, search for
application/ld+json, and compare the price in the markup with the price shown on the page. - Count the
Productblocks. There should be one per product page. - Run the free audit. Store Audit by Ahmed Fayed checks for Product markup, required and recommended fields, price mismatches, duplicate blocks, invalid JSON, English values on Arabic pages and retired types.
How to fix
Salla
Sources disagree about what Salla outputs by default. A 2026 Arabic guide says Salla doesn't add Product schema automatically; another source rates Salla's product schema "basic"; a vendor says price, ratings and availability are missing. Salla's default Raed theme contains no JSON-LD, so any markup a store has comes from the platform. Check your own product page before acting. What you control: fill in GTIN (barcode), MPN and brand in the product form, which Salla's help center itself recommends. Missing types such as breadcrumbs, organization or ratings are a platform limitation unless you run a custom theme. Adding them through GTM is a workaround that depends on Google running JavaScript.
Zid
A live Zid product page exposed price, original price, availability, brand and condition, but whether that came from JSON-LD or microdata wasn't confirmed. Check your own page, and contact Zid support about fields you can't set in the product form.
Shopify
Shopify's Dawn and Horizon themes use the structured_data filter, which outputs Product (or ProductGroup when the product has variants) with name, description, image, brand, category, url and offers with price, currency and availability, plus Organization on every page. They don't output AggregateRating (a reviews app adds it), shippingDetails, hasMerchantReturnPolicy or BreadcrumbList, and whether gtin is output isn't documented. Other themes vary. Add the missing parts in theme code or through one reviews or schema app, and make sure the app's Product block doesn't duplicate the theme's.
WordPress/WooCommerce
WooCommerce outputs Product with name, description, image, sku, gtin (when a valid global ID is set), offers with price, availability and priceValidUntil, AggregateRating with reviews, and BreadcrumbList. Since version 11.3 it adds a store-level return-policy link on the refund page. It doesn't output brand, shippingDetails or itemCondition. A May 2026 article says gtin is missing; the current WooCommerce source code includes it when a valid ID is set, so check your own output. Paid tiers of SEO plugins or custom code fill the gaps. Watch for duplicates: Yoast, Rank Math, the theme, a page builder and a reviews plugin can each print their own Product or Organization block.
Custom-coded
Output the JSON-LD in the server HTML, generated from the same data that renders the visible price, so the two can't drift apart.
Common mistakes
- A markup price that differs from the visible price, for example after a sale ends.
- A
priceof 0, or a missingpriceCurrency. - Two Product blocks from two sources on the same page.
- English values in the markup of Arabic pages. Use the page's language in
nameanddescription. - Adding FAQ or HowTo markup to win rich results that Google no longer shows.
- Invalid JSON. One stray comma or unescaped quote in a description breaks the whole block.
Run the free Store Audit by Ahmed Fayed to check the product markup on your store. If you'd like help fixing this, contact me on WhatsApp +20 102 702 0701 or at ahmed-fayed.com.
Sources
- Google: Product structured data overview (Dec 2025)
- Google: Product snippet structured data (Sep 2026)
- Google: Merchant listing structured data
- Google Search Central blog: More ways to share shipping and return policies (Nov 2025)
- Google Search Central: Documentation updates
- Google Search Central blog: Simplifying search results (Jun 2025)
- Search Engine Journal: Google drops FAQ rich results (May 2026)
- Tajer Codes: Why your Salla store doesn't appear on Google (Aug 2026)
- ClickRank: Missing schema on Salla (vendor, Feb 2026)
- h-haboubi: E-commerce platforms in Saudi Arabia
- Salla Help: SEO tools in your store
- Shopify Dev: structured_data filter
- WooCommerce: class-wc-structured-data.php
- Seresa: WooCommerce product schema (May 2026)
- VisRank: WordPress schema conflicts (Apr 2026)
- Live check of one Zid product page, 30 September 2026 (store not named).
More in this series
Back to guides