skip to content →
warningSEO RULE · R40

Merchant listing structured data: price, currency and shipping for product pages

A product page is eligible for Google merchant listings (price and availability in Search) only when its Product JSON-LD includes an Offer with a price and a currency. Shipping, return policy, price validity and availability are recommended on top and make the listing richer.

A product page is eligible for Google merchant listings (price and availability in Search) only when its Product JSON-LD includes an Offer with a price and a currency. Shipping, return policy, price validity and availability are recommended on top and make the listing richer. This check reads the JSON-LD on pages that already declare a schema. org Product. It flags a product with no offers block, or whose offers lack price or priceCurrency (required), as a warning.

Last updated·part of the 55-rule library

What it is

This check reads the JSON-LD on pages that already declare a schema.org Product. It flags a product with no offers block, or whose offers lack price or priceCurrency (required), as a warning. It flags missing shippingDetails, hasMerchantReturnPolicy, priceValidUntil or availability (recommended) as info. Pages without a Product are never checked.

Why it matters

Without a priced Offer, Google cannot show your price or stock status in Search, and the product misses merchant listing and product rich results. The recommended fields add shipping cost, delivery time and return terms to the listing and clear the matching warnings in the Search Console Merchant listings report.

How to fix it

  1. Add a priced Offer to every Product. Inside the Product JSON-LD, add "offers": an Offer with price, priceCurrency (an ISO 4217 code such as USD), availability and url. The issue includes a paste-ready snippet.
  2. Add the recommended fields that apply. Add shippingDetails (OfferShippingDetails: rate, destination, handling and transit time), hasMerchantReturnPolicy and priceValidUntil to the Offer. Return policy and price validity may also sit on the Product.
  3. Skip shipping for digital products. shippingDetails applies to physical goods only. For downloads, leave it out. Shipping can also be defined once at the Organization level and referenced from each Offer.
  4. Keep the markup in sync with the page. The price, currency and availability in the JSON-LD must match what the page shows. Generate them from the same product data, then validate with the Rich Results Test and re-scan.

Common false positives

Pages with no Product entity are never flagged, so blog posts and category pages stay silent. A missing recommended field is info only: the listing stays eligible without it.

Authoritative sources