Product schema, Offer schema and rich product results

Module 17: Wix eCommerce SEO Mastery | Lesson 200 of 688 | 32 min read

By Michael Andrews, Wix SEO Expert UK

Product schema markup is the structured data that tells Google exactly what your product is, how much it costs, whether it is in stock, and what customers think of it. When implemented correctly, it unlocks rich product results in Google Search: star ratings, price ranges, availability badges, and review counts displayed directly in the search listing. These rich results dramatically increase click-through rates and make your listings stand out against competitors who lack structured data.

How-to infographic showing eCommerce SEO techniques for Wix Stores including site architecture, product page optimisation, Google Shopping, product schema, category pages, and site speed
eCommerce SEO techniques tailored to Wix Stores help your products rank higher, attract more qualified traffic, and convert more visitors into customers.

What Product Schema Achieves in Search Results

Without product schema, your search listing shows a plain blue link with a title and meta description. With product schema, Google can display rich snippets that include a star rating, the number of reviews, the price, availability status, and even shipping information. Studies consistently show that rich results receive 20-40% more clicks than plain listings at the same position. For eCommerce, where every click represents a potential sale, this is an enormous competitive advantage.

Wix Stores automatically generates basic Product schema on product pages, but the default implementation is often incomplete. It may miss AggregateRating data, variant-specific offers, or detailed product attributes. By adding comprehensive JSON-LD schema manually through Wix's custom code injection or the Velo developer tools, you can ensure Google has every piece of data it needs to generate the richest possible results.

Rich Results Eligibility: Google does not guarantee rich results even when schema is correctly implemented. However, having valid, comprehensive schema is a prerequisite. Pages without schema will never show rich product results. Pages with valid schema are eligible but may or may not receive them depending on the query, competition, and Google's algorithms.

Core Product Schema Structure

The foundation of product structured data is the Product type from Schema.org. At minimum, every product page should include the product name, description, image, brand, and at least one Offer. Google strongly recommends including a unique product identifier (GTIN, MPN, or SKU) as this helps Google match your product to its knowledge graph and improves eligibility for Merchant listings in search.

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Organic Lavender Essential Oil - Pure Therapeutic Grade",
  "description": "100% pure organic lavender essential oil, steam-distilled from French lavender flowers. Therapeutic grade, ideal for aromatherapy, skincare, and relaxation. 30ml amber glass bottle with precision dropper.",
  "image": [
    "https://www.yourstore.com/product-images/lavender-oil-front.jpg",
    "https://www.yourstore.com/product-images/lavender-oil-bottle-detail.jpg",
    "https://www.yourstore.com/product-images/lavender-oil-lifestyle.jpg"
  ],
  "brand": {
    "@type": "Brand",
    "name": "YourBrand Naturals"
  },
  "sku": "LAV-OIL-30ML",
  "gtin13": "5060000000000",
  "mpn": "LAV30",
  "offers": {
    "@type": "Offer",
    "url": "https://www.yourstore.com/product-page/organic-lavender-essential-oil",
    "priceCurrency": "GBP",
    "price": "14.99",
    "priceValidUntil": "2026-12-31",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "seller": {
      "@type": "Organization",
      "name": "YourBrand Naturals"
    },
    "shippingDetails": {
      "@type": "OfferShippingDetails",
      "shippingRate": {
        "@type": "MonetaryAmount",
        "value": "3.99",
        "currency": "GBP"
      },
      "deliveryTime": {
        "@type": "ShippingDeliveryTime",
        "handlingTime": {
          "@type": "QuantitativeValue",
          "minValue": 1,
          "maxValue": 2,
          "unitCode": "DAY"
        },
        "transitTime": {
          "@type": "QuantitativeValue",
          "minValue": 2,
          "maxValue": 5,
          "unitCode": "DAY"
        }
      },
      "shippingDestination": {
        "@type": "DefinedRegion",
        "addressCountry": "GB"
      }
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "bestRating": "5",
    "ratingCount": "124"
  },
  "review": {
    "@type": "Review",
    "reviewRating": {
      "@type": "Rating",
      "ratingValue": "5",
      "bestRating": "5"
    },
    "author": {
      "@type": "Person",
      "name": "Sarah M."
    },
    "reviewBody": "Beautiful quality lavender oil with a strong, authentic scent. Perfect for my evening diffuser routine."
  }
}

Understanding the Offer Schema in Detail

The Offer nested within your Product schema is where pricing, availability, and purchase conditions are defined. Google uses this data to display the price and availability status in rich results. Every Offer must include at minimum: price, priceCurrency, and availability. Without these three fields, Google will not generate price-related rich snippets. The priceValidUntil field is strongly recommended as it tells Google when to re-check your price data.

The availability property uses Schema.org enumerated values. The most common are InStock, OutOfStock, PreOrder, and BackOrder. Getting this right is essential because Google can penalise sites that show "in stock" in schema but "out of stock" on the page. Wix automatically syncs inventory status with its default schema, but if you are adding custom schema, ensure your availability values match your actual inventory status dynamically.

Handling Product Variants in Schema

When a product has multiple variants (different sizes, colours, or configurations with different prices), you should not list just one price in your schema. Instead, use an AggregateOffer or multiple Offer objects to represent the full range. Google recommends using multiple Offers when each variant has a distinct price, and AggregateOffer when you want to show a price range. The approach you choose affects how the price appears in search results.

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Organic Essential Oil Gift Set",
  "description": "Curated collection of pure organic essential oils in multiple set sizes.",
  "image": "https://www.yourstore.com/product-images/essential-oil-gift-set.jpg",
  "brand": {
    "@type": "Brand",
    "name": "YourBrand Naturals"
  },
  "offers": [
    {
      "@type": "Offer",
      "name": "3-Oil Starter Set",
      "price": "29.99",
      "priceCurrency": "GBP",
      "availability": "https://schema.org/InStock",
      "sku": "GIFT-SET-3"
    },
    {
      "@type": "Offer",
      "name": "6-Oil Collection Set",
      "price": "49.99",
      "priceCurrency": "GBP",
      "availability": "https://schema.org/InStock",
      "sku": "GIFT-SET-6"
    },
    {
      "@type": "Offer",
      "name": "12-Oil Complete Set",
      "price": "89.99",
      "priceCurrency": "GBP",
      "availability": "https://schema.org/InStock",
      "sku": "GIFT-SET-12"
    }
  ]
}

AggregateRating Schema: Displaying Star Ratings

The AggregateRating property is what generates those coveted star ratings beneath your listing in Google Search. It summarises all customer reviews into a single rating value and count. To be eligible for star rating rich results, you need a minimum of one review, though Google is more likely to display stars when you have a meaningful number of reviews, typically five or more. The ratingValue should be the average score, and ratingCount should reflect the total number of ratings submitted.

Warning: Google has strict policies on review schema. You must only include AggregateRating data based on genuine customer reviews collected on your own product pages. Do not fabricate ratings, import reviews from other sites, or inflate scores. Google actively detects fake review schema and can issue manual actions that remove all rich results from your entire domain.

Adding Custom Product Schema to Wix

How to add JSON-LD product schema to Wix Store pages

Dynamic Schema with Wix Velo: For stores with more than 20 products, manually adding schema to each page is impractical. Use Wix Velo to create a reusable schema template that dynamically pulls the product name, price, SKU, image URL, and review data from your Wix Stores database. This ensures schema is always in sync with your actual product data and automatically updates when you change prices or receive new reviews.

Testing and Validating Your Product Schema

Before your schema can generate rich results, it must be valid and error-free. Google provides two testing tools: the Rich Results Test (which shows you exactly what rich results your page is eligible for) and the Schema Markup Validator (which checks for syntax errors). Always test with both tools after implementation. The Rich Results Test is more important because it shows Google's actual interpretation of your schema, while the Validator catches technical syntax issues.


Complete How-To Guide: Implementing Product Schema on Your Wix Store

This guide walks you through adding comprehensive Product and Offer schema to your Wix Store product pages to earn rich product results in Google.

How to add Product schema to your Wix Store for rich search results

Review Velocity: The fastest way to earn rich review snippets is to set up automated review request emails in Wix Automations. Send a review request 7 days after order fulfilment when customers have had time to try the product.

This lesson on Product schema, Offer schema and rich product results is part of Module 17: Wix eCommerce SEO Mastery in The Most Comprehensive Complete Wix SEO Course in the World (2026 Edition). Created by Michael Andrews, the UK's No.1 Wix SEO Expert with 14 years of hands-on experience, 750+ completed Wix SEO projects and 425+ verified five-star reviews.