SEO finding
The price in the structured data differs from the price on the page
SEO Error Severity: High
Part of the audit Structured data says something the page does not. Finding id: seo.priceMismatchJsonLd.
What it costs you
Search engines and shopping listings take the price from the markup. A different price on the page gets the product disapproved in shopping results, or shows a price you do not honour.
What to do
Make the markup read the same field as the visible price, for the variant that is selected when the page loads.
What it checks
- Price in data differs from page
How to fix it
Let Shopify's structured_data filter print the product markup
- Search the theme for application/ld+json to find where the product markup is printed.
- If the theme builds the JSON by hand, replace it with the structured_data filter. Shopify documents that it outputs a Product, or a ProductGroup for a product with variants.
- If two blocks print product markup, remove one of the two.
How to check: Run this rule again on the page.
Keep one source of product markup in WooCommerce
- View the page source and search for application/ld+json. WooCommerce prints product data as JSON-LD itself.
- If you find a second Product block, find what prints it and keep one of the two.
- If the theme or a custom plugin changes WooCommerce's own markup, check what it does to the price.
- Clear page caches.
How to check: Run this rule again on the page.
Print the markup from the same price field as the page
- Find where the JSON-LD is generated and which field it reads.
- Point it at the field the visible price uses.
- Clear page caches.
How to check: Run this rule again on the page.
A real case
A shop owner found products flagged because the price sent to Google was 23.00 GBP while the page showed 20.00 GBP, and the rich results test showed nothing wrong.
Thresholds
| Name | Default | Meaning |
|---|---|---|
price_selector | [itemprop='price'], [data-price], .price | CSS selector for the price a visitor sees. Set it per site when the default finds nothing or finds too much. |
How to verify by hand
The merchant feed, or the rich-result and merchant warnings in Search Console for the same URL.
What this relies on
The visible price is current; the markup is generated from a stale field or from a different variant.