"},{"@type":"HowToStep","position":2,"name":"Step 2","text":"Keep availability truthful and updated (InStock, OutOfStock, PreOrder) — AI assistants penalize stale availability by dropping the listing. Only include aggregateRating if you have real, on-page reviews."},{"@type":"HowToStep","position":3,"name":"Step 3","text":"Add multiple images (front, side, in-use). Our scanner flags single-image products (product_images_single) because shopping surfaces prefer listings with several angles."},{"@type":"HowToStep","position":4,"name":"Step 4","text":"Validate at validator.schema.org, then re-scan the product page. On Shopify or WooCommerce, prefer fixing the theme/plugin template so every product page inherits the block."}]}
Critical severity

How do I add Product schema so AI shopping surfaces can list my products?

AI shopping surfaces in ChatGPT, Perplexity, and Google read Product JSON-LD to get your price, availability, and images — without it, product pages are effectively invisible to them. Add a Product block with name, image, description, brand, and a complete Offer including price, priceCurrency, and availability, then validate.

Agents affected

ChatGPT shoppingPerplexity shoppingGoogle AI OverviewsGemini

How to tell you have this problem

  • Our scanner reports "product_jsonld_missing" (critical) on product pages, or "product_offer_missing" when the Product block has no Offer.
  • Your products never appear when shoppers ask AI assistants for recommendations in your category.
  • Warnings for incomplete offers: missing priceCurrency, availability, images, or brand.

How to fix it

  1. Add one Product JSON-LD block per product page. The offers object is mandatory for AI shopping — a Product without price and availability is skipped:

    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Product",
      "name": "Trail Runner 2 — Men's",
      "image": [
        "https://www.acme.com/img/trail-runner-2-front.jpg",
        "https://www.acme.com/img/trail-runner-2-side.jpg"
      ],
      "description": "Lightweight trail-running shoe with an 8mm drop and a rock plate.",
      "sku": "TR2-M-42",
      "brand": { "@type": "Brand", "name": "ACME" },
      "offers": {
        "@type": "Offer",
        "url": "https://www.acme.com/products/trail-runner-2",
        "price": "129.00",
        "priceCurrency": "USD",
        "availability": "https://schema.org/InStock",
        "itemCondition": "https://schema.org/NewCondition"
      },
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingValue": "4.6",
        "reviewCount": "212"
      }
    }
    </script>
  2. Keep availability truthful and updated (InStock, OutOfStock, PreOrder) — AI assistants penalize stale availability by dropping the listing. Only include aggregateRating if you have real, on-page reviews.

  3. Add multiple images (front, side, in-use). Our scanner flags single-image products (product_images_single) because shopping surfaces prefer listings with several angles.

  4. Validate at validator.schema.org, then re-scan the product page. On Shopify or WooCommerce, prefer fixing the theme/plugin template so every product page inherits the block.

FAQ

Is Product schema enough to appear in ChatGPT shopping?

It is the foundation, not a guarantee. ChatGPT shopping draws on crawled product data and feeds; complete Product JSON-LD with a valid Offer is what makes your page parseable at all. Merchant Center feeds (Google/Bing) cover additional surfaces — our platform can generate those from the same data.

My prices change often. Will the schema go stale?

Render the JSON-LD server-side from the same source of truth as the visible price, so they can never diverge. A mismatch between schema price and page price is worse than either alone — it reads as unreliable data.

Do I need GTIN or MPN?

Not strictly for JSON-LD validity, but identifiers help AI systems match your product to a canonical catalog entry, which improves inclusion in comparison answers. Add gtin13 or mpn if you have them; sku at minimum.

Not sure if your site has this issue?

Run a free scan — we test this check (and 60+ others) against your live site and give you the exact paste-ready fix. No signup needed.