Product Schema: Offer and Shipping Fields for Online Stores
Product schema for selling pages: align Offer price and stock with checkout, describe real shipping regions, and check changes against merchant data.

Quick Answer: Product schema on an October 2026 selling page needs merchant listing markup with Product name, image and a nested Offer. State the active price and currency; availability is recommended.2 Show actual stock, shipping destinations, rates and delivery times, including regional differences. Recheck the page, markup and merchant data after changes.2,3
Summary in a mind map
Product Schema: Offer and Shipping Fields for Online Stores │ ├─ Choose the page │ ├─ Merchant listing: customer can buy here │ ├─ Editorial mention: use snippet guidance │ └─ Match the exact item and variant │ ├─ Verify the offer │ ├─ Price matches the purchase page │ ├─ Currency describes the displayed amount │ └─ Stock state matches the item sold │ ├─ Describe delivery │ ├─ Shipping destination is explicit │ ├─ Cost and time reflect checkout │ └─ Test regional differences separately │ └─ Recheck after changes ├─ Compare page, markup and merchant data ├─ Sample checkout by destination └─ Record each mismatch and its owner
Choose the selling page
Product schema begins with the page's job. Google's product structured data guide directs merchant listing markup to pages where customers can purchase products from the seller.1 For a camping shop, the tent page with a purchase action is the candidate. A guide to choosing tents has another purpose even if it mentions the same tent. The shop should avoid treating every article and product card as an identical offer.
Identify the exact item before writing markup. A catalogue may have several sizes, colours or bundles. The page, offer and checkout should point to the same purchasable choice. If the shop cannot identify that choice from the rendered page, a crawler may face the same ambiguity. The first task is therefore a page review, followed by the fields. This also keeps the broader discussion of AI search visibility separate from the merchant listing's concrete transaction.
| Page | Reader can buy from this shop? | Markup review |
|---|---|---|
| Product detail | Yes | Test merchant listing fields |
| Editorial comparison | No | Check product snippet guidance instead |
| Category overview | Lists different products | Use individual product or variant pages; Google focuses on a single product or its variants2 |
Check Product and Offer fields
Google's merchant listing documentation sets out the Product and Offer fields used for a seller's listing.2 The store should map each field to a visible source in its catalogue: item identity, current price, currency, stock state and purchase URL. A field should not be filled because a plugin has a default value. It should be filled because the shop can trace that value to the current offer.
| Field | Merchant listing status | What to publish |
|---|---|---|
Product.name | Required | The product's name2 |
Product.image | Required | A crawlable image of that product2 |
Product.offers | Required | A nested Offer from the seller, not an AggregateOffer2 |
Offer.price with priceCurrency | Required alternative | The active price and its three-letter currency code2 |
Offer.priceSpecification.price with priceSpecification.priceCurrency | Required alternative | The active price and currency nested in priceSpecification instead2 |
Offer.availability | Recommended | The current stock state, such as InStock or OutOfStock2 |
The two price rows are alternatives. The shop need not supply both. If both encode an active price, Google uses offers.price.2 Start with the required name, image, nested Offer and one complete price-and-currency route. Add availability when it truthfully reflects the current offer.2
For a small operator, a simple field register is enough to expose gaps. Record the field name, catalogue source, page display and person who updates it. This is an editorial control for the shop, not an extra Google requirement. It prevents a developer from repairing a markup error while the underlying selling page stays wrong. A merchant listing is useful only if a buyer finds the same offer after following the link.
Match price and stock
The price in Offer markup should describe the price presented on the purchase page.2 A store may change a weekend sale, a variant price or a stock flag through its commerce system. Each change creates a second place to inspect: the rendered page and the structured data generated from it. A correct value in one place does not repair a stale value in the other.
Test an ordinary in-stock product, an unavailable item and a newly discounted item. Compare the buyer's visible price and stock message with what the markup exposes. Then follow the purchase path to see whether the same variant and amount reach checkout. This is a repeatable sample test, not a claim that Google requires those exact three cases. It gives the shop a way to catch a broken feed or template before it affects an entire catalogue.
Describe shipping terms
OfferShippingDetails is Schema.org's type for shipping destination information.3 Google's merchant listing documentation describes shipping details, including shippingRate.currency, for a merchant offer.2 The code for that currency uses three ISO 4217 letters.2 For the Boise shop, the meaningful question is what a customer actually pays to receive a tent at an address in the offered region.
When the product needs offer-level shipping terms, nest shippingDetails inside Offer. Each OfferShippingDetails entry identifies a shippingDestination with addressCountry. Use addressRegion for a narrower area. Its shippingRate gives value or maxValue and currency. Its deliveryTime can contain handlingTime and transitTime.2 Offer-level details cover exceptions to a global policy or businesses without a standard policy.2
Shipping cost and delivery time should come from the shop's fulfilment terms rather than from a number chosen for markup. A free pickup option is a different transaction from paid delivery. The store should decide whether it offers both, then describe only the cases that the purchase flow supports. The markup does not set the policy; it publishes the policy already on the page.
| Shipping case | What to inspect | Evidence in the shop |
|---|---|---|
| Local pickup | Whether pickup is offered | Checkout option and location |
| Continental delivery | Cost and expected time | Checkout estimate for a sample address |
| Alaska or Hawaii | Separate destination terms | Checkout estimate for each region |
Split regional shipping
Alaska, Hawaii and the continental United States may have different delivery terms for bulky camping equipment. That is a test scenario, not a general claim about every store's carrier prices. If this shop's checkout differs across those destinations, one undifferentiated shipping entry would conceal the difference. OfferShippingDetails can represent destination information.3 The shop should compare each represented destination with a real address in its checkout.
Suppose checkout quotes different tent delivery rates for Alaska, Hawaii and the continental states. Publish separate Offer.shippingDetails entries for these cases. Set shippingDestination.addressCountry to US. Use addressRegion to identify the states covered by each rate. Set shippingRate.value to the observed checkout amount and shippingRate.currency to USD. Give each entry a deliveryTime matching the handling and transit ranges promised at checkout.2 Without a region, Google reads the destination as the whole country. That would misrepresent a rate excluding Alaska or Hawaii.2
The audit sheet can hold three sample addresses and the observed cost and delivery promise for each. When a carrier or shipping rule changes, rerun the same addresses. This avoids guessing a regional surcharge. It also makes a missing destination visible: a rule that works for a mainland address says nothing about an address the store may or may not serve elsewhere.
Check merchant data after changes
Markup and any Merchant Center data are two representations of the same selling offer. After a price or availability change, compare both with the live product page. Google's merchant listing documentation provides the field reference for that comparison.2 The store should record the tested URL, variant, time, rendered value and outcome. If an update queue delays one representation, the test should record the mismatch and its owner.
A validation result is a syntax check for the tested page. The shop still needs a factual check at checkout. The useful order is page, markup, merchant data, then a sampled purchase path. If the shop's site uses a content system, identify whether one product record drives all three. If separate systems own them, the handoff and update timing should be written down before another sale begins.
What this cannot decide
Neither the schema type nor Google's guidance supplies this store's shipping charges, dispatch time or inventory truth.2,3 Those belong to the store's current operations. Structured data cannot fix a stale price, unsupported delivery claim or product variant that the checkout rejects. Nor can the presence of valid fields guarantee that a search result will display a merchant feature. The shop can establish eligibility and consistency; display remains an observed outcome.
What to do next
Choose one high-volume product, compare its current page and checkout with its Product, Offer and shipping fields, then repeat for a regional destination. Save the field register and the addresses tested. For a separate look at how answer systems present the business, consider AI Answer Audit. The brand mention check, AI recommendation question and generative engine overview address adjacent visibility questions.
In words, the tree branches like this: if a buyer cannot purchase on the page, review the editorial product guidance. If the page sells the item, compare its Offer fields with the live page. Then split the shipping check by each actual destination and stop when checkout and published terms disagree.
Frequently Asked Questions
When should a shop use merchant listing markup?
Which price and currency belong in an Offer?
What currency should shippingRate use?
Can a store use one shipping rate for every destination?
How should stock changes affect product schema?
Does valid Product markup guarantee a merchant listing?
Sources
- 1.Intro to Product Structured Data on Google | Google Search Central | Documentation | Google for Developers — Google Search Central · 2026
- 2.How To Add Merchant Listing Structured Data | Google Search Central | Documentation | Google for Developers — Google Search Central · 2026
- 3.OfferShippingDetails - Schema.org Type — Schema.org · 2026
Want this run on your business?
AI Foundation Audit — a structured assessment of your AI footprint: integration risks, governance gaps, ROI opportunities. Delivered as a comprehensive report you can act on.
You receive your AI Opportunity Report and Implementation Brief — tailored to your business and delivered immediately.