If you run a Shopify store and you're not thinking about schema markup, you're leaving money on the table. Product rich results — the ones that show price, availability, star ratings, and stock status directly in Google — consistently outperform plain blue links. For ecommerce, that difference in click-through rate translates directly to revenue.
The good news: Shopify does include some schema markup by default. The bad news: it's usually incomplete, and incomplete structured data means you're missing out on the rich results that actually drive clicks.
This guide covers three ways to add proper schema markup to your Shopify store, from the simplest to the most hands-on.
What Shopify includes by default
Most Shopify themes ship with basic structured data built into their Liquid templates. Typically, you'll get:
- Product schema on product pages (name, price, availability)
- BreadcrumbList for navigation trails
That sounds decent until you look at what's actually missing:
- AggregateRating — even if you have a reviews app installed, the theme's schema often doesn't pull in the rating data
- FAQPage — product pages with FAQ sections get no structured data for those questions
- Organization — your brand entity is usually absent entirely
- WebSite with SearchAction — the sitelinks search box needs this, and themes rarely include it
- Article — if you run a Shopify blog, posts typically lack proper Article schema
The result: Google can see your products exist, but you're not eligible for the full range of rich results. You get a basic listing when you could be getting star ratings, FAQ dropdowns, and enhanced product cards.
To check what schema markup your Shopify store currently has, paste any product URL into Google's Rich Results Test. You'll likely see Product markup but with warnings about missing fields.
Option 1: Schema Pilot — automated Shopify structured data
If you want comprehensive schema markup on your Shopify store without touching code or installing apps, Schema Pilot is the fastest route.
Here's how it works:
- Sign up and add your Shopify store URL — Schema Pilot's AI scanner crawls your product pages, collection pages, about page, blog posts, and any other content it finds.
- AI generates the right schema types automatically — it detects what's on each page and builds the appropriate JSON-LD. Product pages get full Product schema with offers and availability. Your about page gets Organization markup. Blog posts get Article schema. FAQ sections get FAQPage markup.
- Deploy with one embed script — add a single script tag to your
theme.liquidfile. That's it. No app installs, no per-product configuration. - Auto-rescanning keeps it current — as you add products, change prices, or update inventory, Schema Pilot rescans and updates your Shopify structured data automatically.
The free plan covers 1 site and 30 pages, which is enough to see the impact on a smaller store. Paid plans scale up for larger catalogs.
What makes this approach particularly good for Shopify is that it works alongside your theme's existing schema without creating duplicates. The embed script is smart enough to handle what's already there.
Stop writing schema markup by hand
Schema Pilot scans your pages, generates valid JSON-LD, and serves it automatically. No code changes required.
Option 2: Shopify apps for structured data
The Shopify App Store has several dedicated schema markup apps. The most popular ones:
JSON-LD for SEO (by Jetrails)
The most established option. Automatically generates JSON-LD for products, collections, articles, and breadcrumbs. Handles the basics well and has been around long enough to be reliable.
Pros: Set-and-forget for standard Product schema. Solid reviews support. Cons: Limited schema types. Monthly cost on top of your Shopify plan. Configuration can be rigid.
Smart SEO
Broader SEO app that includes JSON-LD generation alongside meta tags and alt text. Covers Product, Article, Organization, and BreadcrumbList.
Pros: All-in-one SEO tool. Good if you need meta tag management too. Cons: Schema is just one feature among many, so depth is limited. Can be overkill if you only need structured data.
Schema Plus for SEO
Focused specifically on Shopify JSON-LD generation. Supports Product, Organization, WebSite, BreadcrumbList, and more.
Pros: Schema-focused, so the implementation tends to be more thorough. Cons: Another monthly subscription. May conflict with theme-level schema.
The biggest risk with Shopify schema apps is duplicate structured data. If your theme already outputs Product schema and your app also outputs Product schema, Google sees two conflicting Product entities on the same page. This can prevent rich results entirely. Always check with the Rich Results Test after installing an app.
The app trade-offs
Shopify apps are a reasonable middle ground, but they come with recurring costs (typically $5-20/month), and you're locked into whatever schema types the app supports. If you need FAQPage schema on product pages or custom schema for specific page types, most apps can't handle that.
Option 3: Manual JSON-LD in Liquid templates
If you're comfortable editing Shopify theme files, you can add Shopify JSON-LD directly in your Liquid templates. This gives you full control but requires ongoing maintenance.
Adding Product schema to product.liquid
Here's a complete Product schema example using Liquid variables:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "{{ product.title | escape }}",
"description": "{{ product.description | strip_html | escape }}",
"image": "https:{{ product.featured_image | image_url: width: 1200 }}",
"sku": "{{ product.selected_or_first_available_variant.sku | escape }}",
"brand": {
"@type": "Brand",
"name": "{{ product.vendor | escape }}"
},
"offers": {
"@type": "Offer",
"url": "{{ canonical_url }}",
"priceCurrency": "{{ cart.currency.iso_code }}",
"price": "{{ product.selected_or_first_available_variant.price | divided_by: 100.0 }}",
"availability": "{% if product.available %}https://schema.org/InStock{% else %}https://schema.org/OutOfStock{% endif %}"
}
}
</script>
Adding Organization schema to theme.liquid
Place this in your theme.liquid file so it appears on every page:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "{{ shop.name | escape }}",
"url": "{{ shop.url }}",
"logo": "https:{{ settings.logo | image_url: width: 600 }}"
}
</script>
Adding AggregateRating
If you use a reviews app (Judge.me, Loox, Stamped, etc.), you'll need to pull the rating data into your schema. This is where manual implementation gets tricky — each reviews app stores data differently:
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "124"
}
The challenge is dynamically populating those values from your reviews app. Some apps expose Liquid variables, others use metafields, and some have no clean way to access the data in Liquid at all.
If you go the manual route, start with Product and Organization schema. These give you the biggest return. Add FAQPage and Article schema later once you've confirmed the basics are working correctly.
Free Product Schema Generator
Goods and services with offers and reviews. Generate valid JSON-LD in seconds.
Essential schema types for Shopify stores
Here's what a fully optimized Shopify store should have in terms of structured data:
| Schema Type | Where | Why |
|---|---|---|
| Product | Product pages | Price, availability, ratings in search results |
| Organization | Sitewide (theme.liquid) | Brand entity recognition, knowledge panel eligibility |
| BreadcrumbList | All pages | Clean navigation trails in search results |
| FAQPage | Product pages with FAQs | FAQ dropdowns in search — massive SERP real estate |
| Article | Blog posts | Top Stories eligibility, better indexing |
| WebSite | Homepage | Sitelinks search box in branded searches |
Most Shopify stores only have the first two (partially). Adding the rest is where you gain a real competitive edge with Shopify structured data, because most of your competitors haven't done it either.
Free FAQ Page Schema Generator
Frequently asked questions on webpages. Generate valid JSON-LD in seconds.
How to test your Shopify schema markup
Before and after making any changes, test thoroughly:
- Google Rich Results Test — paste individual product URLs and check for valid rich results. Look for green checkmarks on Product, BreadcrumbList, and any other types you've added.
- Google Search Console — the Enhancements section shows aggregate schema markup errors across your entire site. Check this regularly.
- Schema Markup Validator (schema.org) — more lenient than Google's tool but useful for catching structural errors.
When testing, pay special attention to:
- Duplicate schema types — two Product blocks on the same page is the most common Shopify issue
- Missing required fields — Google's requirements change periodically; a schema that worked last year might have new warnings
- Mismatched data — make sure the price in your schema matches the price on the page
Common Shopify schema markup mistakes
After seeing hundreds of Shopify stores, these are the mistakes that come up repeatedly:
1. Duplicate Product schema
This is the number one issue. Your theme outputs Product schema. You install an app that also outputs Product schema. Now Google sees two conflicting Product entities and may ignore both. Always audit existing schema before adding new sources.
2. Missing AggregateRating
You have hundreds of five-star reviews, but your schema markup doesn't include rating data. Those star ratings in search results are one of the biggest CTR drivers in ecommerce — leaving them out is a significant missed opportunity.
3. Stale prices and availability
If you're using manual Shopify JSON-LD and you change prices or a product goes out of stock, your schema might still show the old data. Google does not like schema that contradicts visible page content. This can get your rich results revoked entirely.
4. No Organization schema
Your brand has no structured entity in Google's eyes. Organization schema takes two minutes to add and helps Google connect your brand across search features.
5. Ignoring collection pages
Shopify collection pages are high-value landing pages for category keywords, but they're almost never marked up with schema. A CollectionPage or ItemList schema can help Google understand these pages better.
6. No WebSite schema on the homepage
The WebSite schema with a SearchAction property is what triggers the sitelinks search box for branded queries. It's free SERP real estate and takes minimal effort to implement.
Wrapping up
Schema markup for Shopify doesn't need to be complicated, but it does need to be done right. Incomplete or conflicting structured data is worse than none at all.
If you want the simplest path: use Schema Pilot to scan your store, generate all the right schema types, and deploy via a single script. No apps to manage, no Liquid templates to maintain, and your Shopify structured data stays current as your catalog changes.
Whatever route you choose, test with the Rich Results Test, watch for duplicates, and make sure your schema actually reflects what's on the page. Get this right, and you'll see richer search listings, better click-through rates, and more traffic landing on your product pages.