Google Shopping operates on two tracks: paid Product Listing Ads managed through Google Ads, and free product listings that Google surfaces in Shopping and in organic results. The free listings surface is where your on-page schema directly affects eligibility. Get the markup right and your product pages can appear in Google Shopping without spending on the feed — or as a supplement to a paid feed that reinforces data accuracy.

Product Schema: The Foundation

The Product type is the root entity for every product page. Core properties:

  • name — the product name exactly as it appears on the page; do not add marketing language not visible to the user
  • description — a plain-text description of the product; no HTML markup inside the description value
  • image — a high-resolution image URL or ImageObject; product-on-white or clean product imagery preferred for Shopping surfaces
  • brand — a Brand entity with a name property; critical for brand matching in Google’s Shopping graph
  • sku — your internal SKU; helps Google match on-page markup to Merchant Center feed entries
  • mpn — manufacturer part number; strong identifier for product disambiguation across retailers
  • gtin — global trade item number (UPC, EAN, ISBN, GTIN-8, GTIN-13, GTIN-14); the strongest product identifier available; use whenever you have it; Google can cross-reference GTINs against its product knowledge graph for additional specification data (for product research pages or data-heavy catalogs, see also dataset schema markup)

The Offer Entity: Price and Availability

Price and availability live in an Offer entity linked from the product via offers. Google requires Offer data for product rich results and Shopping eligibility. Required and strongly recommended properties:

  • price — numeric string, no currency symbol; must match the visible price on the page exactly; Google cross-checks this
  • priceCurrency — ISO 4217 currency code: ‘USD’, ‘EUR’, ‘GBP’, etc.
  • availability — full schema.org URL: https://schema.org/InStock, https://schema.org/OutOfStock, https://schema.org/PreOrder, or https://schema.org/BackOrder
  • priceValidUntil — ISO 8601 date; required if the price is a sale price with an expiry; Google suppresses listings where the priceValidUntil date has passed
  • url — the canonical product URL
  • seller — the Organization selling the item; important for marketplace pages and multi-seller scenarios
  • itemCondition — https://schema.org/NewCondition, https://schema.org/UsedCondition, or https://schema.org/RefurbishedCondition; required for Shopping eligibility on non-new items

Aggregate Reviews and Ratings

Product rich results in the SERP can show star ratings when aggregateRating is present. This is one of the highest-visibility markup enhancements available for e-commerce — star ratings in the SERP directly lift click-through rate, and pages with visible ratings consistently outperform identical pages without them at the same ranking position.

The aggregateRating entity requires: ratingValue (average score), reviewCount or ratingCount (total number of reviews or ratings), bestRating and worstRating (the scale bounds, e.g. 5 and 1).

Do not fabricate ratings. Google cross-references aggregateRating markup against actual review content visible on the page. If there are no real user reviews displayed, do not include aggregateRating. Fake rating markup is a policy violation and triggers a manual action risk, not just a quality signal issue.

Schema vs. Merchant Center Feed

For serious e-commerce operations, a Merchant Center product feed is the primary channel for Google Shopping. On-page Product schema is a secondary signal that supplements the feed — Google uses the on-page markup to verify that the feed data matches what is actually on the page. Discrepancies between the feed (what you submitted) and the on-page markup (what a user sees) cause listing suppressions. The best practice is to generate both from the same data source so they stay synchronized automatically without manual coordination.

For smaller catalogs or content-heavy product pages where a full Merchant Center setup is not justified, on-page Product schema enables organic product rich results without any feed infrastructure. This is the realistic entry point for content sites, niche retailers, and service businesses that sell specific products alongside services.

ShippingDetails

Google has expanded product rich results to include shipping information. The shippingDetails property on Offer takes an OfferShippingDetails entity specifying carrier, transit time, and shipping destination regions. ‘Free shipping’ and estimated delivery date are increasingly visible differentiators in Shopping results — Google surfaces these as part of the product card when the data is available. Retailers competing on free shipping or fast delivery have a meaningful advantage in implementing this property.

Returns Policy

The hasMerchantReturnPolicy property on Offer takes a MerchantReturnPolicy entity. Google can display return policy information in product rich results — ‘Free 30-day returns’ in the SERP is a purchase-decision signal that can differentiate listings. Include it if your return policy is competitive and you want it visible in search.

Validation and Ongoing Accuracy

Product markup needs ongoing maintenance. Price changes, stock changes, sale expiries — any of these that are not reflected in the markup create accuracy mismatches that Google flags. The Enhancements report in Search Console shows ‘price mismatch’ and ‘availability mismatch’ errors when they occur at scale. Automated markup generation from the same data that powers the site’s visible content is the only reliable solution — manual updates at product catalog scale are not realistic.

Returns Policy Markup

The hasMerchantReturnPolicy property on Offer takes a MerchantReturnPolicy entity. Key properties include returnPolicyCategory (using schema.org enum values like MerchantReturnFiniteReturnWindow or MerchantReturnUnlimitedWindow), merchantReturnDays (integer number of days), and returnMethod. Google can display return policy information as part of product rich results — ‘Free 30-day returns’ visible in the SERP is a purchase-decision signal that differentiates listings for hesitant buyers. Retailers with competitive return policies who do not markup that policy are leaving a visible differentiator on the table.

Condition and Refurbished Listings

For marketplace pages, liquidators, and refurbished goods retailers, the itemCondition property on Offer is required for Shopping eligibility. Restaurant and food businesses have their own Offer patterns via the Menu entity rather than the standard Product/Offer stack. Use the full schema.org URL values: https://schema.org/NewCondition, https://schema.org/UsedCondition, or https://schema.org/RefurbishedCondition. Google’s Merchant Center policies for condition-labeled products are strict — misrepresenting a used item as new is a policy violation that leads to account suspension. On-page markup that accurately reflects condition, consistent with what the page communicates to users, is both the technically correct and the policy-safe approach.

Product schema is a topic I cover in depth in my SEO University cohorts, particularly the e-commerce structured data module. For sites selling physical or digital products, getting this implementation right is one of the highest-ROI schema projects available. The full picture on schema returns across content types is in schema markup ROI. For a review of your product markup architecture, my schema markup consulting work includes e-commerce implementations at both single-SKU and large-catalog scale.