Five causes of a visible-price vs JSON-LD mismatch
Before editing a feed, establish which value belongs to the currently selected product variant. Compare the rendered price, the matching Product/Offer markup, and one local feed row.
Merchant Match Preflight is an independent preflight tool. A finding does not guarantee approval or identify Merchant Center account state.
Start with identity, then compare price.
Price comparison is meaningful only after the selected variant and structured Offer can be associated confidently.
The visible sale price changed, but the active structured price did not
Themes often render the current discounted price from storefront state while JSON-LD still exposes a stale direct Offer.price or active UnitPriceSpecification.
The selected variant and structured Offer are different
A color or size selection can change the visible price while the page keeps a parent or default-variant Offer in structured data.
More than one Offer exists and none is deterministically primary
Multiple currencies or variants can be valid, but the current page state still needs an Offer that can be associated with the selected product.
Currency is inherited or normalized differently
The visible symbol, page metadata, structured priceCurrency, and feed currency can resolve to different ISO currency values.
Cached markup and live storefront state are out of sync
A theme, app, or cache layer can update the rendered price before the embedded structured block is regenerated.
One page, one selected variant, one exact conflict.
The public fixture is fictional and deliberately exposes a visible price of USD 79 while Product structured data exposes USD 89.
Visible and structured prices differ
Update the matching structured Offer to the current visible price, then rescan the same selected variant.
- Install the current release from the Chrome Web Store.
- Open the public fictional product fixture.
- Scan the current page to reproduce R02.
- Import the sample feed row to add the availability comparison.