A

Structured data

LOW

Offer `itemCondition` is canonical when present

Each Offer either omits `itemCondition` (defaults to NewCondition) or sets it to a canonical Schema.org IRI. When you declare itemCondition, agents and Google require a canonical Schema.org IRI; free-text values get ignored.

What this check looks for

Google merchant listing treats an undeclared `itemCondition` as NewCondition, so omitting the field on a new-goods catalog is legitimate. v2 counts both omitted and validly-set Offers as passing, and flags only Offers where `itemCondition` is present but isn't one of the four canonical Schema.org ItemCondition IRIs (New / Used / Refurbished / DamagedCondition, http or https, trailing slash optional). Coverage ≥ 95% across sampled Offers passes; ≥ 70% partial; otherwise fail.

Which AI surfaces it affects

  • Google AI Mode (UCP)50
  • ChatGPT (ACP)30
  • Microsoft Copilot30
  • Perplexity20
  • Meta AI20

Weighted against the live specs — ACP 2026-04-17, UCP 2026-04-08.

How to fix it

Either omit `itemCondition` (defaults to NewCondition) or set it to a canonical IRI

Shopify

Developer
  1. If you're a new-goods catalog, you can simply not emit `itemCondition` — that's fine.
  2. If you sell refurbished/used goods, conditionally render the appropriate IRI based on a product tag.

BigCommerce

Developer
  1. In `templates/components/products/product-view.html`, only emit `itemCondition` if you have non-new goods.
  2. For mixed catalogs, conditionally render the IRI per product.

WooCommerce

A few minutes
  1. Yoast / RankMath default to omitting `itemCondition` (Google then treats as NewCondition).
  2. Use a plugin like "WooCommerce Used Products" if you sell mixed conditions.

Custom / headless

Developer
  1. Decide whether to emit `itemCondition` at all.
  2. If you do, use one of the four canonical IRIs verbatim.
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Example Hat",
  "offers": {
    "@type": "Offer",
    "price": "49.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition"
  }
}
</script>

The spec it's pinned to

  • schema.org/OfferItemCondition

    schema.org/OfferItemCondition defines New/Used/Refurbished/DamagedCondition IRIs. Google treats undeclared itemCondition as NewCondition.

  • Google merchant listing — condition required only for non-new

    Google's merchant listing recommends `condition`; new-goods catalogs may omit it (defaulted to `new`).

schema.org/OfferItemCondition

Does your store pass this check?

Run the full audit — 82 checks across five AI shopping surfaces. Most tools only check whether you get mentioned; we check whether an agent can buy from you.

Related structured data checks

← All 82 checks