What Structured Data Is and Why GMC Cares
Shopify structured data for Google Merchant Center serves a critical role: it lets Google verify that your product feed matches your actual website. When Google crawls your product pages, it reads the structured data (Schema.org markup) embedded in your HTML to confirm prices, availability, product names, and images. If your structured data is missing, incomplete, or contradicts your feed, products get disapproved.
Structured data also powers rich results in Google Search — those enhanced product listings that show price, availability, review stars, and images directly in search results. Stores with correct structured data get significantly higher click-through rates from organic search, which compounds the value of your Google Shopping investment.
In 2026, Google has tightened its requirements for structured data accuracy. Merchant Center now cross-references your Product schema against your feed data, and mismatches trigger automatic disapprovals. Getting this right is no longer optional.
What Shopify Themes Include by Default
Most modern Shopify themes include some structured data out of the box, but the coverage varies significantly between themes.
Default Shopify Structured Data
Shopify's Dawn theme (and most themes built after 2023) automatically output:
- Product schema on product pages — includes
name,image,description,sku,offers(price and availability) - BreadcrumbList schema — shows the navigation path (Home > Collection > Product)
- Organization schema on the homepage — includes your store name
- WebSite schema with
SearchAction— enables sitelinks search box in Google
What Is Usually Missing
Even with a modern theme, these are commonly absent or incorrect:
- AggregateRating — Review stars. Only present if you use a reviews app that injects rating schema.
- Brand — Many themes do not output the
brandproperty, even though Shopify has a Vendor field. - GTIN/MPN — Product identifiers are not included in schema by default, even if you have barcodes entered.
- Multiple offers for variants — Some themes output a single
Offerfor the default variant instead of multipleOfferobjects for each variant with different prices. - Availability values — Some themes hardcode
InStockinstead of dynamically checking inventory.
How to Check Your Current Structured Data
- Open any product page on your store
- Right-click and select View Page Source
- Search for
application/ld+json— this is where structured data lives - Copy the JSON-LD block and paste it into Google's Rich Results Test
- Review the results for errors and warnings
Adding and Fixing Product Schema
Product schema is the most important structured data type for Google Merchant Center. Every product page must include it with accurate, complete information.
Required Product Schema Properties
| Property | Description | Maps to GMC |
|---|---|---|
name | Product title | Title attribute |
image | Product image URL(s) | Image link |
description | Product description | Description attribute |
sku | Your internal SKU | ID attribute |
brand.name | Brand or manufacturer | Brand attribute |
offers.price | Current selling price | Price attribute |
offers.priceCurrency | Currency code (USD, EUR) | Price currency |
offers.availability | Stock status | Availability attribute |
offers.url | Product page URL | Link attribute |
Recommended Additional Properties
gtinorgtin13/gtin12— GTIN/UPC/EAN barcodempn— Manufacturer Part NumberaggregateRating— Review rating (requires a reviews app)review— Individual reviewsoffers.shippingDetails— Shipping cost and delivery timeoffers.hasMerchantReturnPolicy— Links to your return policy
How to Add Missing Properties in Shopify
Option 1: Edit theme code directly
If you are comfortable with Liquid and JSON-LD:
- Go to Online Store > Themes > Edit code
- Find the product template or section that outputs structured data (usually
main-product.liquidor astructured-data.liquidsnippet) - Add missing properties to the JSON-LD block
- Use Shopify Liquid variables:
product.vendorfor brand,variant.barcodefor GTIN,variant.skufor SKU
Option 2: Use a structured data app
Apps like JSON-LD for SEO, Schema Plus, or Smart SEO automatically generate comprehensive Product schema from your Shopify product data. These apps handle variant-level offers, review integration, and dynamic availability correctly.
Option 3: Use Google Tag Manager
Inject JSON-LD via GTM custom HTML tags. This keeps your theme code clean but adds a JavaScript dependency — Google can usually still read GTM-injected structured data, but server-rendered JSON-LD is more reliable.
BreadcrumbList Schema
BreadcrumbList schema helps Google understand your site structure and displays breadcrumb navigation in search results. Most Shopify themes include this, but it often breaks when collections have nested categories.
What Correct BreadcrumbList Looks Like
{
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://yourstore.com" },
{ "@type": "ListItem", "position": 2, "name": "Dresses", "item": "https://yourstore.com/collections/dresses" },
{ "@type": "ListItem", "position": 3, "name": "Linen Midi Dress" }
]
}
Common Issues
- Missing
itemURL on intermediate breadcrumbs - Breadcrumb trail does not match the actual navigation structure of your store
- Hardcoded collection names that do not update when you rename collections
Organization Schema
Organization schema on your homepage establishes your business identity for Google. It should include your store name, logo, URL, and social media profiles.
Recommended Properties
name— Your business nameurl— Your store URLlogo— URL to your logo imagecontactPoint— Customer service contact (email, phone)sameAs— Array of your social media profile URLs (Instagram, Facebook, Twitter)address— Your business address (especially important for local businesses)
Most Shopify themes output basic Organization schema. To enhance it, edit the theme.liquid layout file or use a structured data app.
Testing and Validating Structured Data
Always validate your structured data after making changes. Use multiple tools because each catches different issues.
Testing Tools
-
Google Rich Results Test (https://search.google.com/test/rich-results) — The primary tool. Shows which rich results your page is eligible for and flags errors that prevent them.
-
Schema Markup Validator (https://validator.schema.org) — Validates against the full Schema.org specification. Catches issues that Rich Results Test misses, like incorrect property types.
-
Google Search Console — Go to Enhancements > Products to see structured data errors across your entire site, not just individual pages.
-
Merchant Center Diagnostics — Go to Products > Diagnostics to see if structured data mismatches are causing product disapprovals.
Validation Checklist
- Every product page has Product schema with
name,image,offers.price,offers.availability - Price in structured data matches the price displayed on the page
- Availability in structured data matches the actual stock status
- No errors or warnings in Rich Results Test
- Brand name in schema matches the brand in your product feed
- Currency code matches your target market
For a complete checklist of theme-level compliance requirements, see our Shopify theme compliance checklist.
Common Structured Data Errors and Fixes
These are the structured data errors that most frequently cause GMC product disapprovals on Shopify stores.
Error: "Price in structured data does not match feed price"
Cause: Your Product schema outputs the compare-at price instead of the selling price, or it outputs a price without tax while your feed includes tax.
Fix: Verify your theme outputs variant.price (the actual selling price) not variant.compare_at_price. For tax-inclusive markets, ensure the schema price includes tax.
Error: "Availability mismatch between structured data and feed"
Cause: Your theme hardcodes InStock in the schema regardless of actual inventory, or the schema uses a non-standard availability value.
Fix: Use dynamic availability: {% if variant.available %}InStock{% else %}OutOfStock{% endif %}. Valid values are: InStock, OutOfStock, PreOrder, BackOrder.
Error: "Missing field 'image' in structured data"
Cause: The product has no images uploaded, or the schema references an image variable that is empty for some products.
Fix: Ensure every product has at least one image. Add a conditional check in your schema: only output the image property if product.featured_image exists.
Error: "Invalid value for field 'price'"
Cause: Price outputs as a formatted string ("$29.99") instead of a number (29.99), or includes the currency symbol in the price field instead of using priceCurrency.
Fix: Use {{ variant.price | money_without_currency }} or {{ variant.price | divided_by: 100.0 }} depending on your theme's price formatting, and set priceCurrency separately.
For broader feed error diagnostics and fixes, see our feed errors guide. For product feed optimization including title and description best practices, see our Shopify product feed optimization guide.