7 schema markup for e-commerce websites

When you’re running an e-commerce website, getting your products to stand out in search results can make a huge difference. That’s where schema markup comes in.

Scheme markup helps search engines understand your content better —and when they do, your listings can show up with rich results like prices, star rating, stock availability, and more.

These enhancements make your product pages more eye-catching, build trust right in the search results, and can even drive more clicks.

In this guide, I will break down the most useful types of schema markup for eCommerce sites, explain what each one does, and show you how to implement them.

Product schema

Product schema tells search engines that a specific page is about a product. It enables rich snippets like price, availability, brand, and user ratings to appear in search results.

You can use the Product schema on individual product pages. 

What properties to include in Product schema

  • @type: “Product”
  • name: Product name
  • image: Product image URL(s)
  • description: Short product description
  • sku: Stock Keeping Unit or internal ID
  • brand: The product’s brand (as a nested object)
  • offers: Pricing and availability (nested Offer schema)
  • aggregateRating and review (optional, but valuable)

Product schema example

{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "Wireless Noise Cancelling Headphones",
  "image": [
    "https://example.com/photos/headphones.jpg"
  ],
  "description": "High-quality wireless headphones with active noise cancelling.",
  "sku": "12345",
  "brand": {
    "@type": "Brand",
    "name": "AudioPro"
  },
  "offers": {
    "@type": "Offer",
    "priceCurrency": "USD",
    "price": "199.99",
    "itemCondition": "https://schema.org/NewCondition",
    "availability": "https://schema.org/InStock",
    "url": "https://example.com/product/headphones"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.5",
    "reviewCount": "27"
  },
  "review": {
    "@type": "Review",
    "author": {
      "@type": "Person",
      "name": "Jane Doe"
    },
    "reviewRating": {
      "@type": "Rating",
      "ratingValue": "5"
    },
    "reviewBody": "Excellent sound quality and very comfortable."
  }
}

Offer schema

Offer schema provides specific details about the sale of a product, such as the price, currency, condition, and availability. It is typically nested within the Product schema.

What properties to include in offer schema

  • @type: “Offer”
  • price: The current selling price
  • priceCurrency: ISO currency code (e.g., “USD”)
  • availability: Stock status (e.g., InStock, OutOfStock)
  • itemCondition: Product condition (NewCondition, UsedCondition, etc.)

Offer schema example

  "offers": {
    "@type": "Offer",
    "priceCurrency": "USD",
    "price": "199.99",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "url": "https://example.com/product/headphones"
  }

🔖 See also: How to Mark Up a Product with Regular and Discounted Prices

Review and aggregateRating schema

This schema adds user reviews and average ratings to your product snippets in search results. It boosts credibility and helps buyers make faster decisions. Similar to offer schema, it is usually nested within the Product schema. 

Make sure reviews are genuine and match the visible content on the page, or you risk being penalized by Google.

What properties to include

  • aggregateRating (nested in Product):
    • @type: “AggregateRating”
    • ratingValue: Average score (e.g., “4.6”)
    • reviewCount: Total number of reviews
  • review (optional but helpful):
    • @type: “Review”
    • author: Person who wrote the review
    • reviewRating: Numeric rating

reviewBody: Summary or full text of the review

Review and aggregateRating example

  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.5",
    "reviewCount": "27"
  },
  "review": {
    "@type": "Review",
    "author": {
      "@type": "Person",
      "name": "Jane Doe"
    },
    "reviewRating": {
      "@type": "Rating",
      "ratingValue": "5"
    },
    "reviewBody": "Excellent sound quality and very comfortable."
  }

Breadcrumb schema shows the page’s position in your site hierarchy in search results and helps users understand where they’re going.

Ecommerce sites often have complex category structures. Breadcrumbs clarify navigation paths, improve internal linking, and help Google crawl your site more efficiently.

For example, Home > Electronics > Headphones not only helps shoppers see where they are within your site but also allows them to easily navigate back to higher-level categories. This improves the user experience—especially on mobile—and reduces bounce rates by encouraging exploration of related products. 

Note:
You can start from the first category or meaningful navigation level in the breadcrumb schema, and skip the homepage (root domain)

What properties to include in breadcrumb schema

  • @type: “BreadcrumbList”
  • itemListElement: An array of ListItem objects, each containing:
    • @type: “ListItem”
    • position: Order in the path (1 = top level)
    • name: Label for that page
    • item: URL of the page
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Electronics",
      "item": "https://example.com/electronics"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Headphones",
      "item": "https://example.com/electronics/headphones"
    }
  ]
}

Organization Schema

Organization schema helps associate your ecommerce brand with contact details, social profiles, and more in Google’s Knowledge Panel.

You can add Organization or OnlineStore schema to your homepage or About us page. 

What properties to include in Organization schema

  • @type: “Organization” or “OnlineStore”
  • name: Your company name
  • @id: A unique identifier URL for your organization (helps link with other structured data on your site)
  • url: Your homepage
  • logo: URL of your logo image
  • contactPoint: Phone number, email or customer service info
  • sameAs: Links to social profiles (Facebook, Instagram, LinkedIn, etc.)
  • hasMerchantReturnPolicy: Specify the return policy of your store

Organization schema example

{
  "@context": "https://schema.org",
  "@type": "OnlineStore",
  "@id": "https://example.com/#organization",
  "name": "MyShop Online",
  "url": "https://example.com",
  "logo": "https://example.com/images/logo.png",
  "sameAs": [
    "https://www.facebook.com/myshop",
    "https://www.instagram.com/myshop",
    "https://www.linkedin.com/company/myshop"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+1-800-555-1234",
    "contactType": "Customer Service",
    "areaServed": "US",
    "availableLanguage": ["English", "Spanish"]
  },
  "hasMerchantReturnPolicy": {
    "@type": "MerchantReturnPolicy",
    "applicableCountry": "US",
    "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
    "merchantReturnDays": 30,
    "returnMethod": "https://schema.org/ReturnByMail",
    "returnFees": "https://schema.org/FreeReturn"
  }
}

FAQ schema

While Google no longer supports FAQ rich results for most websites (except for authoritative sources like health and government sites), the schema is still valuable because it helps search engines understand the structure and intent of your content.

E-commerce sites often include FAQs on product or category pages to answer common customer questions—like shipping times, return policies, compatibility, or product setup.

Marking up these sections with FAQPage schema helps improve context, entity relationships, and indexing—even if it doesn’t directly appear as a rich result anymore.

Keep in mind – answer questions that are genuinely relevant for your customers and don’t add questions just solely for SEO.

What properties to include in FAQ schema

  • @type: “FAQPage”
  • mainEntity: An array of Question objects
    • @type: “Question”
    • name: The question text
    • acceptedAnswer: An Answer object that includes:
      • @type: “Answer”
      • text: The answer content

FAQ schema example

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is the return policy?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "You can return the product within 30 days of purchase."
      }
    }
  ]
}

The Carousel (beta) structured data allows ecommerce category or collection pages to appear as a visual carousel in Google Search. This gives your collection page the chance to showcase multiple products – each with its own image, name, and link – in a swipeable, card-style layout directly in the search results.

This schema is currently in beta and only supported for users in the European Economic Area (EEA). Also, make sure each product URL contains valid Product schema on its own page

What properties to include

  • @context: “https://schema.org”
  • @type: “ItemList”
  • itemListElement: An array of ListItem objects:
    • @type: “ListItem”
    • position: Numerical order in the carousel
    • name: Product name
    • url: Link to a product page that includes valid Product structured data
    • Offer or AggregateOffer (with prices)
    • AggregateRating (optional, but strongly recommended)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "item": {
        "@type": "Product",
        "name": "Noise Cancelling Bluetooth Headphones",
        "image": [
          "https://example.com/images/headphones-1x1.jpg",
          "https://example.com/images/headphones-4x3.jpg",
          "https://example.com/images/headphones-16x9.jpg"
        ],
        "offers": {
          "@type": "AggregateOffer",
          "lowPrice": 149.99,
          "highPrice": 199.99,
          "priceCurrency": "EUR"
        },
        "aggregateRating": {
          "@type": "AggregateRating",
          "ratingValue": 4.6,
          "reviewCount": 215
        },
        "url": "https://example.com/electronics/headphones/bluetooth-noise-cancelling"
      }
    },
    {
      "@type": "ListItem",
      "position": 2,
      "item": {
        "@type": "Product",
        "name": "Wireless In-Ear Headphones",
        "image": [
          "https://example.com/images/in-ear-1x1.jpg",
          "https://example.com/images/in-ear-4x3.jpg",
          "https://example.com/images/in-ear-16x9.jpg"
        ],
        "offers": {
          "@type": "Offer",
          "price": 89.00,
          "priceCurrency": "EUR"
        },
        "aggregateRating": {
          "@type": "AggregateRating",
          "ratingValue": 4.3,
          "reviewCount": 95
        },
        "url": "https://example.com/electronics/headphones/in-ear-wireless"
      }
    },
    {
      "@type": "ListItem",
      "position": 3,
      "item": {
        "@type": "Product",
        "name": "Over-Ear Studio Headphones",
        "image": [
          "https://example.com/images/studio-1x1.jpg",
          "https://example.com/images/studio-4x3.jpg",
          "https://example.com/images/studio-16x9.jpg"
        ],
        "offers": {
          "@type": "Offer",
          "price": 129.00,
          "priceCurrency": "EUR"
        },
        "aggregateRating": {
          "@type": "AggregateRating",
          "ratingValue": 4.8,
          "reviewCount": 380
        },
        "url": "https://example.com/electronics/headphones/studio-over-ear"
      }
    }
  ]
}
</script>

Adding schema markup to your e-commerce website can give you competitive advantages in search results. The more accurately you describe your content to search engines, the more likely you are to earn high-quality traffic from search.

If you’re just getting started, prioritize Product, Offer, and Review schema for your product pages, then expand with breadcrumbs, FAQs, and organization data as your implementation matures.

Aubrey Yung

Aubrey Yung

Aubrey is an SEO Manager with 6+ years of B2B and B2C marketing experience. Outside of work, she loves traveling and learning languages.