Schema Markup Errors: How to Find and Fix Structured Data Issues in Your Ecommerce Store
Structured data errors in Google Search Console don't always suppress rich results — but some do. This guide maps which schema errors actually matter, how to find them without expensive tools, and the fixes that recover rich snippets and search visibility.
Google Search Console's "Enhancements" section is a graveyard of unactioned schema errors for most ecommerce stores. The warnings pile up, developers assume they're non-critical, and nobody touches them until a rich result disappears. By then the damage — lost product stars, lost price snippets, lost FAQ accordions — can take weeks to recover.
This guide is practical: which errors actually suppress rich results, how to find all your schema issues without enterprise tooling, and the specific fixes for the most common ecommerce structured data problems.
How Google Categorizes Schema Issues
GSC separates schema issues into two severity levels:
- Errors: missing required fields or invalid values. These suppress rich results for affected pages. If a Product schema is missing
nameoroffers, Google won't show stars or pricing in search results for those pages. - Warnings: missing recommended fields. These don't suppress rich results today, but they reduce the richness of what Google shows and reduce eligibility for newer rich result types as Google expands them.
The key insight: not all warnings become errors, and not all errors suppress the same rich result. A missing reviewCount (recommended but not required) doesn't kill your star rating in search. A missing priceCurrency (required for Merchant Listing rich results) does suppress the price display.
Which Errors Actually Matter for Ecommerce
Priority 1 — these directly suppress rich results:
Product schema missing required offer fields. Google's Product rich result requires: name, and at least one Offer with price and priceCurrency. The most common error: stores include a Product schema block but put the price only in the visible page HTML without mirroring it in JSON-LD. GSC reports this as "Missing field 'price'" and stops showing price snippets for those pages.
Mismatched availability values. The availability field in Offer schema must use Schema.org vocabulary: https://schema.org/InStock, https://schema.org/OutOfStock, https://schema.org/PreOrder. Common errors: using "in stock" (string literal), "yes", or true (boolean). Google's validator flags these as invalid value warnings that become errors for Merchant Listing eligibility.
Review schema missing ratingValue or ratingCount. AggregateRating requires ratingValue (numeric, 0.1–5.0 range unless you specify ratingScale) and reviewCount or ratingCount. Missing either field removes star ratings from search results for those pages. Common Shopify issue: review apps that populate JSON-LD only after JavaScript hydration — Google's crawler may index the pre-JS version without ratings.
FAQPage schema with duplicate questions. If the same FAQ question appears in the JSON-LD twice (a common copy-paste error), Google flags it as a duplicate markup error and may suppress the FAQ rich result entirely for that page.
BreadcrumbList with broken position sequence. BreadcrumbList must have sequential integer position values starting at 1 (1, 2, 3...). If any position is skipped or repeated (common when breadcrumb components are merged from multiple sources), Google's validator flags an error and breadcrumb trail may not appear in search results.
Priority 2 — these limit rich result richness without full suppression:
Product schema missing image. Strongly recommended; without it, Google product snippets show without image. For competitive categories, product images in search drive significantly higher CTR.
Product schema missing brand. Recommended for Merchant Listing. Without a brand, Google's Shopping graph may not associate your product correctly with brand queries.
Offer missing url. Recommended. Without it, Google's product URL discovery for Shopping surfaces is less reliable.
How to Find Schema Errors Without Enterprise Tools
Method 1: Google Search Console. Go to Search Console → Enhancements → Products (and any other enhancement types active on your site). GSC shows which pages have errors and the specific missing or invalid field. Sort by error count. Note: GSC samples pages, so the count shown is a floor estimate — your actual error rate may be higher.
Method 2: Google's Rich Results Test. Paste any product URL into Google's Rich Results Test tool. It shows exactly what structured data Google parses from the page, which fields it finds, and which required/recommended fields are missing. Run your top 20 product pages through this manually — it takes 20 minutes and surfaces issues GSC might aggregate.
Method 3: Schema.org Validator. The schema.org validator (validator.schema.org) is more strict than Google's tool — it catches errors that Google might accept but will eventually penalize. Useful for catching invalid property values and type mismatches.
Method 4: Automated crawl via StoreVitals. Our scanner checks structured data on every crawled page and surfaces missing required fields, invalid availability values, and canonical conflicts in the "Structured data" pillar score. Faster than manual review for stores with large catalogs.
The Most Common Fixes by Platform
Shopify:
- Product JSON-LD is rendered in most themes via the product.json-ld.liquid snippet (or equivalent in newer Online Store 2.0 themes). Find it in Theme Editor → Edit Code → Snippets.
- To fix missing priceCurrency: ensure the snippet includes
"priceCurrency": {{ product.price_min | money_without_currency | json }}— actually, use{{ shop.currency | json }}for priceCurrency, not a money filter. - To fix availability: ensure your snippet maps Shopify's inventory status to the correct Schema.org URL. Available means
"https://schema.org/InStock"; out of stock means"https://schema.org/OutOfStock". Don't use shorthand. - For review schema: if using Judge.me, Okendo, or Yotpo, check whether the app injects review JSON-LD server-side or client-side. Server-side is required for Google to reliably see it. App settings usually have a toggle for "structured data injection" — enable it.
WooCommerce:
- Yoast SEO (with its WooCommerce addon) or Rank Math handles product schema. Check Yoast → SEO → Search Appearance → Schema → Products and ensure "Rich Results" is enabled.
- WooCommerce's native Product schema (via its own
wc-structured-data.js) injects some structured data but may miss fields that Yoast covers. Running both can create duplicate schema — audit with the Rich Results Test to ensure only one clean Product block appears. - For WooCommerce variable products, ensure each variation's Offer block includes priceCurrency and availability. Variable products are a frequent source of missing field errors because the variant price range logic doesn't always populate schema correctly.
Custom/Headless:
- Audit your JSON-LD template against the current Schema.org Product specification. Common staleness: using deprecated properties (like
offersas a single object instead of an array, or the olditemConditionshorthand strings). - For dynamically rendered products (React/Next.js client-side components), ensure JSON-LD is rendered server-side as a
<script type="application/ld+json">tag in the initial HTML response, not injected by client-side JavaScript after hydration. Next.js: put the script tag in the page component's<head>section via the next/head pattern or Next.js 13+ Metadata API.
The Recovery Timeline
After fixing schema errors, GSC typically registers the fix within 2-4 weeks as Googlebot recrawls affected pages. Rich results usually recover within 3-6 weeks. If a page has been suppressed for months, the recovery may take longer — Google's classifiers are conservative about re-enabling rich results for pages with a history of errors. The fix is still worth doing; the timeline is just longer than most teams expect.
What StoreVitals Detects
Every StoreVitals scan runs structured data validation on crawled pages. We surface:
- Missing required Product/Offer fields (name, price, priceCurrency, availability)
- Invalid availability value format
- Missing AggregateRating fields on pages with review content
- Breadcrumb position sequence errors
- Duplicate JSON-LD blocks (two Product schemas on one page)
- Schema on pages with mismatched canonical (schema says URL X, canonical says URL Y)
Run a free scan and check your "Structured data" score in the SEO pillar. Scores under 80 typically indicate at least one error class that's suppressing rich results.