---
title: "Schema.org for E-commerce: Complete Guide to Structured Data"
description: "How to implement Schema.org Product, Offer, and AggregateRating in your online store. Learn about rich results and increase CTR in Google search results."
date: 2025-11-05
updated: 2025-01-11
category: SEO
tags: ["Schema.org", "Structured Data", "E-commerce", "SEO", "Rich Results", "JSON-LD"]
url: https://uper.pl/en/blog/schema-org-ecommerce/
---

# Schema.org for E-commerce: Complete Guide to Structured Data

**Structured data** is one of the most effective ways to stand out in Google search results. For online stores, proper Schema.org implementation can significantly increase CTR through **rich results** - enhanced results displaying prices, ratings, and product availability.

## What is Schema.org Structured Data?

**Schema.org** is a joint initiative by Google, Microsoft, Yahoo, and Yandex that defines a standard vocabulary for describing content on web pages. This helps search engines better understand the context of your pages.

### Implementation Formats

Structured data can be implemented in three formats:

1. **JSON-LD** (recommended by Google)
2. **Microdata** (embedded in HTML)
3. **RDFa** (HTML5 extension)

Google officially recommends **JSON-LD** because:
- It's separated from HTML code
- Easier to implement and maintain
- Less prone to errors
- Supports dynamic generation

```html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Product Name"
}
</script>
```

## Product Schema - E-commerce Foundation

**Product** is the main Schema.org type for product pages. It allows you to describe all key product information.

### Minimal Implementation

```json
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Premium Men's Polo Shirt",
  "image": "https://example.com/images/polo-shirt.jpg",
  "description": "Elegant polo shirt made from organic cotton. Available in sizes S-XXL.",
  "sku": "POLO-001",
  "brand": {
    "@type": "Brand",
    "name": "Premium Fashion"
  },
  "offers": {
    "@type": "Offer",
    "price": "49.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}
```

### Full Implementation with All Fields

```json
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Premium Men's Polo Shirt",
  "image": [
    "https://example.com/images/polo-shirt-front.jpg",
    "https://example.com/images/polo-shirt-back.jpg",
    "https://example.com/images/polo-shirt-detail.jpg"
  ],
  "description": "Elegant polo shirt made from organic cotton. Available in sizes S-XXL. Perfect for everyday wear and office.",
  "sku": "POLO-001",
  "mpn": "925872",
  "gtin13": "5901234123457",
  "brand": {
    "@type": "Brand",
    "name": "Premium Fashion"
  },
  "manufacturer": {
    "@type": "Organization",
    "name": "Premium Fashion Inc."
  },
  "category": "Clothing > Men > Polo Shirts",
  "color": "Navy Blue",
  "material": "100% organic cotton",
  "size": "M",
  "audience": {
    "@type": "PeopleAudience",
    "suggestedGender": "male"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/premium-polo-shirt",
    "price": "49.99",
    "priceCurrency": "USD",
    "priceValidUntil": "2026-12-31",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "seller": {
      "@type": "Organization",
      "name": "Premium Fashion Store"
    },
    "shippingDetails": {
      "@type": "OfferShippingDetails",
      "shippingRate": {
        "@type": "MonetaryAmount",
        "value": "5.00",
        "currency": "USD"
      },
      "shippingDestination": {
        "@type": "DefinedRegion",
        "addressCountry": "US"
      },
      "deliveryTime": {
        "@type": "ShippingDeliveryTime",
        "handlingTime": {
          "@type": "QuantitativeValue",
          "minValue": 0,
          "maxValue": 1,
          "unitCode": "DAY"
        },
        "transitTime": {
          "@type": "QuantitativeValue",
          "minValue": 1,
          "maxValue": 3,
          "unitCode": "DAY"
        }
      }
    },
    "hasMerchantReturnPolicy": {
      "@type": "MerchantReturnPolicy",
      "applicableCountry": "US",
      "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
      "merchantReturnDays": 30,
      "returnMethod": "https://schema.org/ReturnByMail",
      "returnFees": "https://schema.org/FreeReturn"
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "156",
    "bestRating": "5",
    "worstRating": "1"
  },
  "review": [
    {
      "@type": "Review",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": "5",
        "bestRating": "5"
      },
      "author": {
        "@type": "Person",
        "name": "John Smith"
      },
      "datePublished": "2025-10-15",
      "reviewBody": "Great material quality, perfect fit. Highly recommended!"
    }
  ]
}
```

## Offer Schema - Prices and Availability

**Offer** describes a product's sales offer. It's nested within Product or can exist independently.

### Availability Statuses

```json
"availability": "https://schema.org/InStock"           // In Stock
"availability": "https://schema.org/OutOfStock"        // Out of Stock
"availability": "https://schema.org/PreOrder"          // Pre-order
"availability": "https://schema.org/BackOrder"         // Back Order
"availability": "https://schema.org/Discontinued"      // Discontinued
"availability": "https://schema.org/LimitedAvailability" // Limited Availability
```

### Product Conditions

```json
"itemCondition": "https://schema.org/NewCondition"         // New
"itemCondition": "https://schema.org/UsedCondition"        // Used
"itemCondition": "https://schema.org/RefurbishedCondition" // Refurbished
"itemCondition": "https://schema.org/DamagedCondition"     // Damaged
```

### Product Variants (AggregateOffer)

When a product has multiple variants with different prices:

```json
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Runner Pro Sports Shoes",
  "offers": {
    "@type": "AggregateOffer",
    "lowPrice": "99.00",
    "highPrice": "129.00",
    "priceCurrency": "USD",
    "offerCount": "5",
    "availability": "https://schema.org/InStock"
  }
}
```

## AggregateRating - Ratings and Reviews

**AggregateRating** summarizes product ratings. It's a key element for rich results with star ratings.

### Basic Implementation

```json
{
  "@type": "AggregateRating",
  "ratingValue": "4.5",
  "reviewCount": "89",
  "bestRating": "5",
  "worstRating": "1"
}
```

### With Full Reviews

```json
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Pro Wireless Headphones",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "reviewCount": "234",
    "bestRating": "5",
    "worstRating": "1"
  },
  "review": [
    {
      "@type": "Review",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": "5",
        "bestRating": "5"
      },
      "author": {
        "@type": "Person",
        "name": "Anna Johnson"
      },
      "datePublished": "2025-11-20",
      "reviewBody": "Best headphones I've ever had. Excellent sound isolation."
    },
    {
      "@type": "Review",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": "4",
        "bestRating": "5"
      },
      "author": {
        "@type": "Person",
        "name": "Peter Williams"
      },
      "datePublished": "2025-11-18",
      "reviewBody": "Very good, but the case could be smaller."
    }
  ]
}
```

## BreadcrumbList - Navigation Path

**BreadcrumbList** helps Google understand site structure and displays the path in search results.

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://example.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Men's Clothing",
      "item": "https://example.com/mens-clothing/"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Polo Shirts",
      "item": "https://example.com/mens-clothing/polo-shirts/"
    },
    {
      "@type": "ListItem",
      "position": 4,
      "name": "Premium Polo Shirt"
    }
  ]
}
```

## Organization and LocalBusiness

For company and about pages:

```json
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Premium Fashion Inc.",
  "url": "https://example.com",
  "logo": "https://example.com/logo.png",
  "sameAs": [
    "https://www.facebook.com/premiumfashion",
    "https://www.instagram.com/premiumfashion",
    "https://www.linkedin.com/company/premiumfashion"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+1-555-123-4567",
    "contactType": "customer service",
    "availableLanguage": ["English", "Spanish"]
  }
}
```

If you have a physical store, use **LocalBusiness**:

```json
{
  "@context": "https://schema.org",
  "@type": "Store",
  "name": "Premium Fashion - Retail Store",
  "image": "https://example.com/store.jpg",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main Street",
    "addressLocality": "New York",
    "postalCode": "10001",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 40.7128,
    "longitude": -74.0060
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "10:00",
      "closes": "20:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday",
      "opens": "10:00",
      "closes": "18:00"
    }
  ],
  "telephone": "+1-555-123-4567"
}
```

## Implementation in Popular Platforms

### WooCommerce

WooCommerce has built-in structured data, but it's worth extending with a plugin:
- **Rank Math SEO** - full control over Schema
- **Yoast SEO** - basic structured data
- **Schema Pro** - advanced options

### Shopify

Shopify automatically generates basic Product data. Extensions:
- Edit `product.liquid` file
- Apps from App Store (JSON-LD for SEO)

### PrestaShop

```php
// In product template
{literal}
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "{/literal}{$product.name|escape:'htmlall':'UTF-8'}{literal}",
  "image": "{/literal}{$product.cover.large.url}{literal}",
  "description": "{/literal}{$product.description_short|strip_tags|escape:'htmlall':'UTF-8'}{literal}",
  "sku": "{/literal}{$product.reference}{literal}",
  "offers": {
    "@type": "Offer",
    "price": "{/literal}{$product.price_amount}{literal}",
    "priceCurrency": "USD",
    "availability": "https://schema.org/{/literal}{if $product.quantity > 0}InStock{else}OutOfStock{/if}{literal}"
  }
}
</script>
{/literal}
```

### Custom (JavaScript/Astro/Next.js)

```javascript
// Generating JSON-LD in JavaScript
function generateProductSchema(product) {
  return {
    "@context": "https://schema.org",
    "@type": "Product",
    "name": product.name,
    "image": product.images,
    "description": product.description,
    "sku": product.sku,
    "brand": {
      "@type": "Brand",
      "name": product.brand
    },
    "offers": {
      "@type": "Offer",
      "price": product.price.toFixed(2),
      "priceCurrency": "USD",
      "availability": product.inStock
        ? "https://schema.org/InStock"
        : "https://schema.org/OutOfStock",
      "itemCondition": "https://schema.org/NewCondition"
    },
    ...(product.rating && {
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingValue": product.rating.average.toFixed(1),
        "reviewCount": product.rating.count.toString()
      }
    })
  };
}

// Inject into HTML
const schema = generateProductSchema(productData);
document.head.insertAdjacentHTML(
  'beforeend',
  `<script type="application/ld+json">${JSON.stringify(schema)}</script>`
);
```

## Testing and Validation

### Google Tools

1. **Rich Results Test** - Official Google tool
   [https://search.google.com/test/rich-results](https://search.google.com/test/rich-results)

2. **Schema Markup Validator** - Detailed validation
   [https://validator.schema.org/](https://validator.schema.org/)

3. **Google Search Console** - "Enhancements" report shows structured data errors

### Common Validation Errors

1. **Missing required fields** - e.g., `offers` without `price`
2. **Invalid values** - e.g., `availability` without full URL
3. **Wrong data types** - e.g., `price` as number instead of string
4. **Missing context** - forgotten `@context`

## Best Practices

### 1. Data Accuracy

Structured data MUST match the visible content on the page. Google penalizes discrepancies.

### 2. One Implementation Per Page

Avoid duplicating the same Schema type on a single page.

### 3. Update Data Dynamically

Prices, availability, and ratings should be updated in real-time.

### 4. Test Before Deployment

Always validate Schema before publishing to production.

### 5. Monitor in Search Console

Regularly check the "Enhancements" report in [Google Search Console](/en/blog/google-search-console/).

## Summary

**Schema.org** structured data is a must-have for every online store. Proper implementation:

- Increases CTR through rich results (stars, prices, availability)
- Helps Google better understand your products
- Can improve search result rankings
- Facilitates Google Shopping integration

Start with a basic **Product** implementation with **Offer**, then expand to **AggregateRating**, **Review**, and shipping details. Remember to test regularly and monitor in Search Console.

## Sources

1. **Google Search Central - Structured data markup**
[https://developers.google.com/search/docs/appearance/structured-data](https://developers.google.com/search/docs/appearance/structured-data)

2. **Schema.org - Product**
[https://schema.org/Product](https://schema.org/Product)

3. **Google Search Central - Product structured data**
[https://developers.google.com/search/docs/appearance/structured-data/product](https://developers.google.com/search/docs/appearance/structured-data/product)

4. **Google Rich Results Test**
[https://search.google.com/test/rich-results](https://search.google.com/test/rich-results)

5. **Schema.org - Offer**
[https://schema.org/Offer](https://schema.org/Offer)

6. **Google Search Central - Review snippet**
[https://developers.google.com/search/docs/appearance/structured-data/review-snippet](https://developers.google.com/search/docs/appearance/structured-data/review-snippet)
