Product and Offer relationship
Product identifies the item; Offer describes how it can be purchased. Keep product identity fields such as brand and SKU on Product and commercial fields on Offer.
Required commercial context
A useful Offer normally contains price, priceCurrency and a URL. Availability should reflect the state visible on the page.
Seller
seller can identify the Organization offering the product, especially on marketplace or reseller pages.
Condition
itemCondition can distinguish new, used or refurbished inventory when that condition is actually shown to users.
Shipping context
When shipping data is available, OfferShippingDetails can describe shipping destinations, rates and delivery timing.
Multiple offers
Use an array of Offer objects or AggregateOffer only when the page truly exposes multiple offers.
Keep data fresh
Offer data changes frequently. Price and availability should be updated together with the visible page and indexing signals such as IndexNow when appropriate.
Frequently asked questions
Can structured data always be improved to 100% automatically?
Only when the required data actually exists in the JSON-LD or on the page.
Should every possible Schema.org property be added?
No. A smaller set of accurate properties is better than irrelevant values.