Google Merchant Center Structured Data Mismatch: How to Fix It


Google Merchant Center Structured Data Mismatch: How to Fix It

Your product page says:

$49 — In stock

Your product feed says:

$49 — In stock

Everything appears correct.

But hidden inside the page's structured data, Google may be reading:

$59 — Out of stock

To a shopper, the page looks completely normal.

To a machine, your store is telling three different stories.

This is why Google Merchant Center problems are not always visible from the storefront.

Structured data can contain machine-readable information about:

  • product name

  • price

  • currency

  • availability

  • condition

  • SKU

  • GTIN

  • brand

  • images

  • and individual offers or variants

When those values stop matching what customers actually see, you can create product-data inconsistencies even when the page itself appears correct.

Here are eight areas worth checking.


What Is Product Structured Data?

Structured data is machine-readable information embedded in a webpage.

For ecommerce product pages, it commonly uses Schema.org vocabulary such as:

Product

and:

Offer

A simplified example might look like this:

Product

Product name: Classic Hoodie

↓

Offer

Price: 49.00
Currency: USD
Availability: InStock

A shopper does not normally see this information directly.

Google and other systems can read it to better understand what the page represents.

That makes structured data useful.

But it also creates another place where product information can become outdated or inconsistent.

Your storefront may say one thing while the markup underneath says another.


1. Check Whether Product Structured Data Exists

Start with the most basic question:

Does the product page contain usable Product structured data at all?

A normal ecommerce product page may contain:

Product

with a nested:

Offer

The Product object describes the product itself.

The Offer object describes the commercial offer, such as:

  • price

  • currency

  • availability

  • condition

  • seller information

If a page has no useful product markup, Google may have fewer machine-readable signals to work with.

That does not automatically mean the product is invalid.

But if your store is using structured data, it should be implemented accurately and consistently.

Do not assume your ecommerce platform automatically gets everything right.

Themes, plugins, custom code and app integrations can all affect what markup is actually generated.


2. Compare Structured-Data Price With the Visible Price

Price is one of the first values to compare.

Imagine the customer sees:

$49.00

Your product feed contains:

$49.00

But your structured data still contains:

"price": "59.00"

Now you have:

Product feed

$49

Visible page

$49

Structured data

$59

The storefront looks correct.

The feed also looks correct.

But the machine-readable offer is stale.

This commonly happens after:

  • a permanent price change

  • a promotion

  • a sale ending

  • theme changes

  • app changes

  • cached page data

  • delayed synchronization

When checking a Merchant Center price issue, do not stop after comparing the feed with the visible page.

Compare all three:

Feed price

↓

Visible price

↓

Structured-data price

They should describe the same current offer.


3. Check the Currency

A price without the correct currency can also create ambiguity.

For example:

Visible product page:

$49 USD

Product data:

49 USD

Structured data:

"price": "49"

but the currency is missing or wrong.

Or:

"priceCurrency": "GBP"

Now the numerical value matches.

The offer does not.

When price is represented in structured data, check both:

price

and:

priceCurrency

Do not assume matching numbers mean matching offers.

For example:

49 USD ≠ 49 GBP

For stores serving several countries or currencies, this becomes even more important.

A currency switcher, localization app or geographic pricing system may cause different visitors to see different values.

You need to understand which offer Google can actually retrieve from the URL submitted with the product.


4. Compare Structured-Data Availability With the Real Stock Status

Availability is another major source of mismatch.

Your product page may display:

In stock

while your structured data says:

OutOfStock

Or the reverse.

For example:

Product feed

in_stock

Product page

In stock

Structured data

OutOfStock

A normal shopper sees nothing wrong.

A machine receives conflicting inventory information.

Typical machine-readable availability values can represent conditions such as:

  • InStock

  • OutOfStock

  • BackOrder

  • PreOrder

  • LimitedAvailability

  • Discontinued

The exact mapping matters.

You should not use:

InStock

for a product that is really on preorder simply because customers are allowed to place an order.

Likewise, do not leave:

OutOfStock

in your markup after inventory has returned.

Check the actual buying experience, not just the label.


5. Check Whether the Structured Data Represents the Correct Variant

Variants make structured data much more complicated.

Imagine your product page sells:

Blue / Medium

$49
In stock

Black / Large

$59
Out of stock

Your submitted product data describes:

Blue / Medium — $49 — In stock

The page also opens with:

Blue / Medium

Everything appears correct.

But the structured data describes:

Black / Large — $59 — Out of stock

Now the mismatch is not really a simple price problem.

It is not really an availability problem either.

It is a variant mapping problem inside the structured data.

For stores with variants, compare:

Submitted variant

↓

Landing-page selection

↓

SKU / GTIN

↓

Structured-data offer

↓

Price

↓

Availability

These should all point to the same purchasable offer.


6. Check SKU, GTIN and Other Product Identifiers

Price and availability are not the only useful signals.

Identifiers help machines determine which exact product or offer they are looking at.

Depending on the product, those identifiers may include:

  • SKU

  • GTIN

  • MPN

  • brand

  • product ID

Imagine this situation:

Landing page:

Model X — 256 GB

Product feed:

Model X — 256 GB

Structured data SKU:

MODEL-X-128

Now the visible content and feed describe the 256 GB version.

But the structured data may identify the 128 GB version.

That can make other values difficult to interpret.

An important principle is:

Do not make identifiers merely look complete.

Make them accurate.

If your product does not legitimately have a particular identifier, do not invent one just to fill a field.


7. Check Whether JavaScript Is Generating the Markup Too Late

Many modern ecommerce sites depend heavily on JavaScript.

That is not automatically a problem.

But there is a difference between:

product information already present when the HTML arrives

and:

product information created later after JavaScript executes

For product information that changes rapidly, such as:

  • price

  • availability

  • selected offers

delayed or dynamically generated markup can introduce additional complexity.

A browser may eventually display the correct value.

But crawlers may not always process the page in exactly the same way or at the same time.

A stronger implementation is to make the essential product information available as reliably and early as possible.

This is particularly important when price and stock change frequently.


8. Check Whether Old Markup Survived a Website Update

This is an easy problem to miss.

Suppose you install a new ecommerce theme.

The new theme generates correct Product structured data.

But an older SEO plugin is still running.

Now your HTML may contain:

Product markup A

and:

Product markup B

Both describe the same product.

But they contain different values.

For example:

Markup A

Price: $49
Availability: InStock

Markup B

Price: $59
Availability: OutOfStock

Which one is correct?

A human shopper will never see the conflict.

But a crawler can encounter both.

Duplicate or conflicting structured data may come from:

  • old plugins

  • new themes

  • tag managers

  • custom scripts

  • ecommerce apps

  • page builders

  • legacy templates

  • third-party review or SEO tools

When a product page looks correct but structured-data results seem strange, inspect whether more than one system is generating Product markup.


A Simple Structured Data Checklist

Before changing your whole product feed, check these eight areas:

1. Product object

Does the page contain valid product information?

2. Offer object

Is the commercial offer represented clearly?

3. Price

Does the structured-data price match the current customer-facing price?

4. Currency

Does priceCurrency match the actual offer?

5. Availability

Does machine-readable inventory match what a customer can actually buy?

6. Variant

Does the structured data describe the exact selected variant?

7. Identifiers

Do SKU, GTIN, brand and other identifiers point to the correct product?

8. Duplicate markup

Are multiple apps, themes or scripts generating conflicting Product data?

If these signals agree, you have a much cleaner product-data chain.

If they do not, fixing only the feed may not solve the underlying problem.


Example: Everything Looks Correct Until You Inspect the Markup

Imagine a merchant sells a desk lamp.

Visible page

Price: $39
Availability: In stock

Product feed

Price: $39
Availability: In stock

The merchant assumes everything is synchronized.

But structured data contains:

Price: $49
Availability: Out of stock

Why?

Two weeks earlier, the merchant changed both price and inventory.

The storefront updated immediately.

The feed updated during its next synchronization.

But an old plugin continued generating stale structured data.

This means the actual chain looks like:

Feed → correct

Visible page → correct

Structured data → wrong

Changing the feed again would accomplish nothing.

The source that needs fixing is the markup generator.


Example: A Structured Data Problem That Looks Like a Price Mismatch

Suppose your store shows:

$79

Your product feed also says:

$79

But Merchant Center continues to detect inconsistent pricing.

Before rewriting the feed, inspect the markup.

You discover:

"price": "99.00"

The $99 value comes from an old regular price that was never updated inside the structured data.

The problem is not necessarily your current product feed.

The problem is that the page gives Google two prices:

Visible price = $79

Machine-readable price = $99

That is why troubleshooting should follow the whole data chain.


Example: A Structured Data Problem That Looks Like an Availability Mismatch

Consider another product.

Feed

In stock

Visible page

In stock

Checkout

Purchasable

Structured data

OutOfStock

A merchant might repeatedly resend the feed.

But the feed already contains the correct status.

The real issue is that the page's structured data never updated when inventory returned.

Again:

Fix the incorrect source, not whichever warning you happen to see first.


Example: A Structured Data Problem That Is Actually a Variant Problem

Suppose a jacket has:

Blue / Medium

$89
In stock

Black / Large

$99
Out of stock

The landing page opens:

Blue / Medium

The feed describes:

Blue / Medium

But the Product markup refers to:

Black / Large

Now the structured-data mismatch creates both:

  • a price conflict

  • an availability conflict

Yet the real cause is:

the wrong variant is represented in the machine-readable offer.

This is why product-data problems often overlap.

Price, availability, variants and structured data should not always be diagnosed independently.


How to Test Product Structured Data

You do not have to read raw HTML manually every time.

Google provides tools that can help inspect how product structured data is interpreted.

Two useful options are:

Google Rich Results Test

and:

Google Search Console

These tools can help identify:

  • detected Product markup

  • Offer information

  • missing properties

  • invalid values

  • warnings

  • structured-data errors

However, there is an important distinction:

“Valid structured data” does not automatically mean “correct product data.”

For example, this markup may be technically valid:

Price: $59

But if the customer-facing page says:

$49

the markup can still be wrong for that product.

So you should test two things:

Technical validity

Can the structured data be parsed?

and:

Data consistency

Does it actually match the product customers see?

You need both.


Does Structured Data Replace a Product Feed?

No.

Structured data and submitted product data perform related but different jobs.

Structured data helps machines understand the information available directly on your website.

Your Merchant Center product source contains the product information you actively submit.

Google can use structured data in several ways, including helping keep certain product information current.

But that does not mean you should allow your primary product data to become stale.

A good operating principle is:

Product feed = maintained source

Landing page = customer reality

Structured data = machine-readable representation of that reality

All three should agree.


What About Automatic Item Updates?

Structured data can also support Google's automatic item updates.

These updates can help when certain submitted information becomes temporarily outdated.

For example, Google may use website signals to help update information such as:

  • price

  • availability

  • condition

This is useful as a safety mechanism.

But it is not a replacement for maintaining accurate product data.

If your:

  • structured data is stale

  • landing page is ambiguous

  • wrong variant opens

  • feed is consistently outdated

automatic updates do not remove the underlying data-quality problem.

Think of them as:

a safety net

not:

your synchronization system.


Your Product Page Should Tell One Story

A strong product-data setup should look something like this:

Product feed

Blue Hoodie
Medium
$49
In stock

Landing page

Blue Hoodie
Medium
$49
In stock

Structured data

Blue Hoodie
Medium
$49
InStock

Checkout

Blue Hoodie
Medium
$49
Purchasable

Now every system describes the same offer.

Compare that with:

Product feed

Blue / Medium / $49 / In stock

Landing page

Blue / Medium / $49 / In stock

Structured data

Black / Large / $59 / Out of stock

Checkout

Blue / Medium / $49 / Purchasable

The customer experience may still look fine.

The machine-readable evidence does not.

That is the type of inconsistency worth finding.


Start With Three Product Pages

You do not necessarily need to inspect your entire catalog first.

Choose three representative products.

For example:

Product 1

A simple product with one offer.

Product 2

A product with several variants.

Product 3

A product that recently changed price or inventory.

For each one, compare:

Visible product information

↓

Selected variant

↓

Price

↓

Availability

↓

Structured data

↓

Product identifiers

If all three tell the same story, that is useful evidence.

If several conflicts appear in only three pages, a broader product-data audit may be justified.


Check Three Product Pages for Free

Mingche provides a free Product Page Check for three distinct product URLs from the same store.

The check reviews publicly accessible product-page signals including:

  • price

  • availability

  • variants

  • structured data

You do not need to upload your entire product catalog for this initial check.

The goal is to identify visible and machine-readable inconsistencies using a small sample before deciding whether a broader audit is necessary.

Start the Free Product Page Check →

Open the free product-page check


When a Full Audit Makes More Sense

A broader audit becomes more useful when:

  • many products contain structured-data warnings

  • prices change frequently

  • inventory changes frequently

  • your store has complex variants

  • multiple apps generate Product schema

  • Merchant Center repeatedly reports price or availability inconsistencies

  • your feed and website come from different systems

  • you cannot determine which value Google is reading

  • a three-product sample already reveals several inconsistencies

The goal is not to add more schema simply because more data seems better.

The goal is:

accurate, consistent and maintainable product data.


Final Takeaway

A product page can look perfect to a shopper while sending incorrect information to machines.

That is why Merchant Center troubleshooting should not stop at what you can see in the browser.

Check the entire chain:

Product feed

↓

Landing page

↓

Exact variant

↓

Structured data

↓

Price and currency

↓

Availability

↓

Identifiers

↓

Checkout

The strongest setup is not the one with the most markup.

It is the one where every system describes the same real offer.

If your feed says:

Blue / Medium / $49 / In stock

your page, schema and checkout should tell the same story.

Find the source that disagrees.

Fix that source.

Then verify the entire chain again.


Disclaimer

Mingche is an independent product-data readiness service and is not affiliated with or endorsed by Google.

Product-data auditing or correction does not guarantee Google approval, inclusion, ranking, traffic or sales. Google independently determines Merchant Center eligibility and policy compliance.

Comments

Popular posts from this blog

Before you upload a product feed: check the row, the variant and the page

Before importing a repaired product CSV, ask for the change log