AEO fundamentals
Product schema (JSON-LD) for AI shopping: the fields that matter
You do not need every schema.org property. The required Product/Offer fields, recommended ones that help assistants compare products, and availability values.
By the ShopToAI team, updated Oct 20, 2026
Structured data is the single biggest lever for getting a product read by AI assistants and Google's shopping surfaces. But you do not need every property under the sun. A handful carry almost all the weight. This is the practical list, split into what is required and what is worth adding.
The markup we are talking about is a Product block in JSON-LD, with a nested Offer, placed on each product page. Assistants and search engines read it to know what you sell, for how much, and whether it is in stock.
The fields that are required
Google will not treat a product as a merchant listing without these. Get them right first.
| Field | Notes |
|---|---|
| name | The product title. |
| image | One or more image URLs. Multiple, high-resolution is better. |
| offers | A nested Offer object where you are the seller. |
| offers.price | The current price. For a merchant listing it must be greater than zero. |
| offers.priceCurrency | Three-letter ISO 4217 code, like EUR or USD. |
That is the floor. A page with only these is eligible; a page missing any of them usually is not.
The fields worth adding
These are recommended, not required, but they are what separates a product an assistant recommends from one it skips. They help it match your item to a shopper's question and trust the result.
| Field | Why it matters |
|---|---|
| brand | The Brand name. Assistants match on it constantly. |
| gtin (or gtin8/12/13/14) | The global identifier. Use the most specific one you have. Never invent it. |
| mpn | Manufacturer part number, when there is no GTIN. |
| sku | Your own identifier. No whitespace. |
| offers.availability | In stock or not, in a value a machine trusts (see below). |
| aggregateRating and review | Ratings and reviews, if you genuinely have them. |
| offers.shippingDetails | Shipping cost and speed. |
| offers.hasMerchantReturnPolicy | Your return policy. This one is quietly important (see below). |
Availability: use a real value, not free text
Availability must be one of the fixed schema.org values. Use the one that fits:
- InStock
- OutOfStock
- BackOrder
- PreOrder
- Discontinued
- LimitedAvailability
- SoldOut
Writing "usually ships in 2 days" in this field does nothing. The machine wants one of the values above.
Why return policy and shipping matter
ChatGPT builds its shopping answers from what it reads on retail pages and from product feeds merchants submit to OpenAI. When several stores sell the same item, availability, price and who the maker or main seller is can all matter. A clear return policy and shipping terms are facts a shopper wants, and hasMerchantReturnPolicy and shippingDetails put them where a machine can read them. Google's merchant listing documentation recommends both.
One source of truth
More markup is not better if it contradicts itself. A common failure is two Product blocks on the same page, one from your theme or WooCommerce core and one from an SEO plugin, disagreeing on price or availability. An assistant that sees conflict backs off. Pick one source for your Product schema and mute the rest.
Check a sample of your products for free, then connect your store to see the gaps listed product by product. Check your store. If you are on WooCommerce, the full setup is here: How to optimize a WooCommerce catalog for AI shopping assistants.
Common questions
What are the absolute minimum fields?
name, image, and an offers object with price and priceCurrency. Google will not treat a product as a merchant listing without those, so start there before adding the rest.
What if I don't have a GTIN?
Use mpn and brand instead, and never invent a GTIN. A made-up identifier is worse than none, because it can be checked and found wrong.
Does more structured data always help?
No. Two conflicting Product blocks on one page hurt you, because an assistant that sees contradictory price or availability backs off. Keep one source of truth and mute duplicates.