Missing microdata for condition
Missing microdata for condition means the product page did not give Google structured data it can use for the condition of the item. Google’s automatic updates for condition, price, and availability read schema.org `itemCondition`, `price`, `priceCurrency`, and `availability` from the HTML the server returns. The setup guide is Set up structured data for Merchant Center. Condition values in the feed are `new`, `refurbished`, and `used`, in English, per the product data specification. The mapping from `itemCondition` is described in Allow Merchant Center to update product information automatically.
Shopify themes usually add a Product and an Offer as JSON-LD. That block is what the crawler uses. Microdata (`itemtype` Offer with `itemprop` attributes) is the other form. If neither is present, Google cannot read condition from the page.
Shopify causes
A custom theme or page builder removed the product JSON-LD. Dawn includes a Product offer by default. A section rewrite, a headless theme, or a page builder that replaces the product form often deletes the script.
The JSON-LD is present but invalid. A trailing comma or a broken quote makes the block unreadable. Fix the JSON before you add a second copy.
The offer has price and availability but no itemCondition. Automatic updates for condition need `itemCondition` on the offer, such as `https://schema.org/NewCondition`. A refurbished or used product needs the matching schema.org value, and the feed condition has to be the same fact.
The markup is injected only with JavaScript. Google’s Merchant Center structured-data guide says the markup has to be in the HTML returned by the server. A script that adds the offer after load is not enough for that crawler.
What to change
- View source on the product URL and confirm a Product offer is in the HTML, not only after the page hydrates.
- Add `itemCondition` to the offer. Most Shopify catalogs are `https://schema.org/NewCondition`. Use the used or refurbished value only when that is what you submit as condition.
- Keep `price`, `priceCurrency`, and `availability` on the same offer, for the variant in the URL.
- If you use microdata instead of JSON-LD, set `itemprop="itemCondition"` as well as price, priceCurrency, and availability.
- Validate the JSON-LD. A parse error is treated as missing markup.
How PageCop detects it
When a product URL returns a page with no Product JSON-LD and no Offer microdata, the app files missing structured data. Invalid JSON-LD is reported separately, with the parse error. The Merchant Center name on that issue is the missing-or-invalid structured data wording. Use this guide when Google’s email says Missing microdata for condition: the markup Google needs for condition is the same offer block the app looks for. The app does not read the condition value stored in Merchant Center, and it does not submit `itemCondition` for you.
FAQ
Is microdata required if JSON-LD is valid?
No. Google accepts schema.org markup in the forms it documents. One valid Product offer in the server HTML is enough. Do not add a second, conflicting offer.
My products are all new. Do I still add itemCondition?
Yes, if you rely on automatic item updates for condition. Google’s setup guide lists condition among the values the crawler reads. A missing offer still fails price and availability checks even when every product is new.