TL;DR
Add Product schema (with AggregateOffer + AggregateRating) to your product pages and ProductCollection schema to your collection pages. Validate with Google's Rich Results Test. Done right, rich snippets lift click-through rates 20 - 30% without moving your ranking position at all.
If you run a Shopify store and you're not using structured data on your product and collection pages, you're leaving a measurable amount of organic traffic on the table. Not hypothetical traffic - Google Search Central data shows rich snippets improve CTR by 20 - 30%. That's clicks from rankings you already have.
This guide covers exactly which schema types to use, which fields to include, how to add them to Shopify, and how to verify they're working.
The Two Schema Types That Matter for Shopify
Most Shopify SEO content talks about schema generically. In practice, two types do the heavy lifting:
- Product + AggregateOffer + AggregateRating → goes on product pages
- ProductCollection + itemListElement → goes on collection pages
They serve different purposes and target different buyer intent stages. You need both.
Product Pages: Product Schema + AggregateOffer
What to implement
Product schema on its own tells Google a product's name, image, brand, description, and SKU. Useful, but not enough to trigger rich snippets.
Pair it with AggregateOffer and you unlock the real value: Google can display a price range in search results (e.g., "$49 - $129"), availability status, and star ratings. For a Shopify store with multiple variants - different sizes, colors, materials - AggregateOffer is the correct type to express that price spread.
Required fields (don't skip these)
name
description
image (URL)
brand
sku
offers (AggregateOffer):
lowPrice
highPrice
priceCurrency
availability → use Schema.org values: InStock, OutOfStock, PreOrder
url
aggregateRating:
ratingValue
reviewCount
Keep availability accurate. Google can penalize structured data that contradicts the live page - if your schema says InStock but the product is sold out, that's a problem.
What rich snippets this unlocks
When implemented correctly, your product listing in Google can show:
- Price or price range
- Stock status
- Star rating and review count
- Brand name
A result showing "4.7 stars · 312 reviews · $24 - $68 · In Stock" will outperform a plain title + meta description every time a shopper is scanning results side by side.
How to add it to Shopify
Option 1 - App (fastest): Apps like JSON-LD for SEO or TinyIMG inject schema automatically by pulling from your existing Shopify product fields. No custom code required, and schema stays in sync when products update or go out of stock.
Option 2 - Theme customization: Add a JSON-LD <script> block directly to product.liquid or product-template.liquid using Liquid variables to dynamically populate fields. More control, but requires comfort with Liquid + JSON syntax and manual maintenance.
For most stores, a well-configured app is the more reliable long-term choice.
Collection Pages: ProductCollection Schema
Why this is the missed opportunity
Collection pages rank for high-volume category keywords - "outdoor dining tables," "organic protein powder" - searches that carry 40 - 60% more search volume than individual product queries. Most Shopify stores implement zero structured data on collection pages.
ProductCollection schema explicitly tells Google that a page represents a grouped set of products in a category. It reinforces topical relevance and supports richer SERP presentation for category-level queries.
Key fields to include
name → collection name (e.g., "Outdoor Dining Tables")
description → summary of what the collection contains
url → canonical URL
numberOfItems → product count in the collection
itemListElement → array of ListItem entries, each pointing to a product URL
The itemListElement array is the most important piece. It creates a machine-readable map of the relationship between your collection page and every product it contains - reinforcing crawl pathways and strengthening topical authority signals.
Treat Schema as a Layered Architecture, Not Per-Page Checkboxes
The highest-impact approach connects both schema types across your store:
- Collection pages carry ProductCollection schema with
itemListElementreferences to their products - Product pages carry Product + AggregateOffer + AggregateRating
- Your internal link structure mirrors the schema relationships - collection → product
This alignment between visible page structure and structured data is what makes the difference between schema Google validates and ignores versus schema that actually changes how your pages appear in results.
Validating Your Implementation
After adding schema, check both of these:
Google's Rich Results Test (search.google.com/test/rich-results) - paste any product or collection URL to see which rich result types are detected and catch field-level errors immediately.
Google Search Console → Enhancements - monitor how many pages have valid schema, which have errors, and which rich result types are eligible. Check this after any theme update or app change; errors introduced by code changes are common and easy to miss.
Common errors to fix fast
- Missing
priceCurrencyoravailabilityfields - Price in schema doesn't match the visible page price
-
aggregateRatingpresent with noreviewCountvalue
Quick Reference
| Page Type | Schema to Use | What It Unlocks |
|---|---|---|
| Product pages | Product + AggregateOffer + AggregateRating | Star ratings, price range, availability in SERPs |
| Collection pages | ProductCollection + itemListElement | Category entity clarity, crawl structure |
One important caveat: schema doesn't rank your pages - it makes already-ranking pages more clickable. It works best alongside optimized collection page copy (300 - 500 words minimum), clean URL structure, and accurate Google Merchant Center data.
If you want a full Shopify SEO strategy built around this kind of technical work, New Seas specializes in SEO and content for ecommerce brands. Check out what they offer at newseas.co.
Top comments (0)