Google uses structured data on your product pages to verify that what you show in your feed matches what you show to users. When that structured data has errors, your products may lose rich result features in Google Search, and consistent mismatches between structured data and your feed can contribute to account-level issues. This guide covers the most common structured data errors and how to fix them.
Scan Your Site for Structured Data Issues (Free)Product structured data is machine-readable markup on your product pages that tells Google what type of content is on the page: the product name, price, availability, currency, and other attributes. Google uses the schema.org/Product vocabulary and accepts it in three formats:
<script type="application/ld+json"> block in the page head or bodyGoogle strongly recommends JSON-LD because it is easier to implement and maintain. If you are on Shopify or WooCommerce, both platforms generate product structured data automatically, but the output is sometimes incomplete or misformatted.
There are three places to check:
search.google.com/test/rich-results): tests individual pages for errors and missing propertiesGoogle requires specific properties for product rich results. If any are missing, the page does not qualify for price/availability rich results.
| Required Property | Example Value | Notes |
|---|---|---|
name | "Blue Running Shoes" | Product name, not brand |
offers.price | "49.99" | Must be a number, not "49,99" or "$49.99" |
offers.priceCurrency | "USD" | ISO 4217 format (3 letters) |
offers.availability | "https://schema.org/InStock" | Full schema.org URL required |
"availability": "InStock" instead of "availability": "https://schema.org/InStock". Google requires the full schema.org URL for availability values.
If your structured data shows a price of €49.99 but the visible price on the page is €59.99, Google flags this as a mismatch. This can happen when:
The fix: make sure your structured data is generated dynamically from the same data source as the displayed price. Most modern e-commerce platforms do this automatically, but check that your theme or custom code has not overridden the default behavior.
Similar to price mismatches: your structured data says InStock but the product is out of stock on the page, or vice versa. Google crawls your pages periodically and compares the structured data availability to what the page actually shows.
Update your structured data when availability changes. For high-volume catalogs, this typically means server-side rendering of the structured data rather than static markup.
Common price format errors:
"49,99" — must be "49.99""$49.99" — must be "49.99" with priceCurrency set separately"50" for a product that should be "50.00" (this is usually fine, but check your output)Valid offers.availability values:
https://schema.org/InStockhttps://schema.org/OutOfStockhttps://schema.org/PreOrderhttps://schema.org/BackOrderhttps://schema.org/Discontinuedhttps://schema.org/LimitedAvailabilityDo not use shortened versions like "InStock" or "schema:InStock". Google requires the full URL.
If you add Product schema markup to category pages, blog posts, or other non-product pages, Google may flag these as errors or use them incorrectly. Product structured data belongs only on individual product pages where a specific item can be purchased.
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Blue Running Shoes",
"image": "https://example.com/images/blue-running-shoes.jpg",
"description": "Lightweight running shoes for road and trail.",
"brand": {
"@type": "Brand",
"name": "BrandName"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/products/blue-running-shoes",
"priceCurrency": "USD",
"price": "49.99",
"priceValidUntil": "2027-01-01",
"availability": "https://schema.org/InStock"
}
}
</script>
Google does not have a simple hierarchy here. It uses both sources and compares them. Your product feed is the primary source for Shopping Ads and free listings. Structured data on product pages is used for organic rich results (price, availability, reviews showing in non-Shopping Google Search results) and as a verification layer.
Shopify generates Product structured data automatically from your product data. Common Shopify structured data issues:
@type: Product blocks on the page.If your store also sells via a marketplace like TikTok Shop or Etsy, those platforms generate their own product pages with structured data that can conflict with your Merchant Center feed. See the TikTok Shop suspension guide and Etsy seller suspension guide for platform-specific data consistency requirements.
Scan Your Shopify Store for Structured Data IssuesErrors in the product schema markup on your pages that prevent Google from reading product data correctly for rich results. Most common causes: missing required properties, price mismatches, and wrong availability format.
Not directly, but price or availability mismatches between your structured data and your feed or page can contribute to misrepresentation flags, which do lead to suspension. Keep all data sources consistent.
Test with the Rich Results Test, add missing required properties (price, priceCurrency, availability), use the full schema.org URL for availability values, and ensure the price in structured data matches the displayed page price.