What are rich snippets?
A normal search result shows a title, a URL and a short description. A rich snippet adds facts from the page: a product’s price and availability, a star rating, breadcrumbs instead of a long URL, a recipe’s cooking time and photo.
Google builds these from structured data: a block of machine-readable facts in your page’s HTML, written in the schema.org vocabulary. Google recommends the JSON-LD format, a small script that sits in the page and does not change what visitors see.
Structured data does more than rich snippets. Search engines and AI assistants use it to understand what a page is about, which product it describes and who sells it.
Which schema types matter for a Shopify store?
Start with the types that match what your pages actually show:
| Schema type | Where it goes | What it can unlock |
|---|---|---|
| Product (with Offer) | Product pages | Price, availability, shipping and return details |
| AggregateRating / Review | Product pages, from your review app | Star ratings in product results |
| BreadcrumbList | Products, collections, blog posts | A readable path instead of the URL |
| Article / BlogPosting | Blog posts | Headline, image and date in news and article features |
| Organization | Home page | Your logo and brand details |
| LocalBusiness | Home or contact page, if you have a shop | Address and opening hours |
| Recipe | Recipe blog posts | Photo, rating, cooking time in recipe results |
| FAQPage and HowTo | Pages with real FAQs or step-by-step instructions | Structure for search engines and AI; see the note below |
Does my Shopify theme already add structured data?
Often, partly. Many themes output basic Product markup, and Shopify’s own themes use the structured_data Liquid filter for products and articles. What is usually missing: review ratings, breadcrumbs, Organization data, and markup on non-product pages.
Check before you add anything. Paste a product URL into Google’s Rich Results Test and look at which items it detects. Do the same for a collection, a blog post and your home page.
How do I add rich snippets to Shopify?
There are three ways. All of them end in the same JSON-LD in your pages.
1. Edit the theme yourself
Shopify’s structured_data filter is the quickest manual route for products:
<script type="application/ld+json">
{{ product | structured_data }}
</script>If you need more control, you can write the JSON-LD by hand. A minimal Product block looks like this:
{%- assign variant = product.selected_or_first_available_variant -%}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": {{ product.title | json }},
"image": {{ product.featured_image | image_url: width: 1200 | prepend: 'https:' | json }},
"description": {{ product.description | strip_html | json }},
"sku": {{ variant.sku | json }},
"offers": {
"@type": "Offer",
"price": {{ variant.price | divided_by: 100.0 | json }},
"priceCurrency": {{ cart.currency.iso_code | json }},
"availability": "https://schema.org/{% if product.available %}InStock{% else %}OutOfStock{% endif %}",
"url": {{ request.origin | append: product.url | json }}
}
}
</script>This works, but you own it: every theme update, new review app or new page type means more hand-written markup.
2. Hire a developer or agency
Worth it for complex catalogs or custom setups. Ask for JSON-LD (not microdata), for markup on every template, and for a plan for keeping it current when the theme changes.
3. Use an app
An app adds and maintains the markup without theme edits, and usually reads ratings from your review app. Check which schema types it covers, which review apps it supports, and whether it works with your theme’s existing markup.
How do I test my structured data?
- Rich Results Test (search.google.com/test/rich-results) shows which rich results a page is eligible for, and any errors.
- Schema Markup Validator (validator.schema.org) checks all schema.org types, including ones Google has no rich result for.
- Google Search Console, under Enhancements, lists valid items and errors across the whole store once Google has recrawled it.
Test one page per template, not just one product: product, collection, blog post, home page.
Which mistakes should I avoid?
- Duplicate Product markup. Theme and app both output Product data with different values. Keep one source.
- Markup that does not match the page. Prices, ratings and stock in the JSON-LD must be what visitors see. Google can ignore or penalise markup that does not match.
- Incomplete offers. A Product without price, currency or availability is rarely eligible for product snippets.
- Ratings without real reviews. Only mark up ratings that come from customers and are shown on the page.
- Forgetting non-product pages. Breadcrumbs, articles and your Organization data help on every page, not just products.
The short version
- Check what your theme already outputs Run a product page through Google's Rich Results Test and note which types it finds.
- Pick one way to add the missing markup Theme settings, a few lines of Liquid, or an app. Use one source per type.
- Add the markup Start with Product on product pages, then Breadcrumb, Article and Organization.
- Test every template Product, collection, blog post and home page, in the Rich Results Test and the Schema Markup Validator.
- Watch Search Console The Enhancements reports show valid items and errors as Google recrawls your store.