Skip to content

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.

In a camping shop, a worker checks a blank selling-page screen beneath KEEP PRODUCT OFFERS AND SHIPPING ACCURATE and labels for merchant markup, currency and shipping destinations.
By AI Priority Map Editorial

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.

PageReader can buy from this shop?Markup review
Product detailYesTest merchant listing fields
Editorial comparisonNoCheck product snippet guidance instead
Category overviewLists different productsUse 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.

FieldMerchant listing statusWhat to publish
Product.nameRequiredThe product's name2
Product.imageRequiredA crawlable image of that product2
Product.offersRequiredA nested Offer from the seller, not an AggregateOffer2
Offer.price with priceCurrencyRequired alternativeThe active price and its three-letter currency code2
Offer.priceSpecification.price with priceSpecification.priceCurrencyRequired alternativeThe active price and currency nested in priceSpecification instead2
Offer.availabilityRecommendedThe 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 caseWhat to inspectEvidence in the shop
Local pickupWhether pickup is offeredCheckout option and location
Continental deliveryCost and expected timeCheckout estimate for a sample address
Alaska or HawaiiSeparate destination termsCheckout 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?
Use the merchant listing route for a page on which customers can buy the product from the shop.[1] An editorial page describing someone else's item has a different purpose. Start with the page's actual transaction: identify the purchasable item, its live offer and the fulfilment terms shown to the buyer. Then test the page against Google's merchant listing documentation rather than assuming every product mention is a selling page.
Which price and currency belong in an Offer?
The Offer should represent the price and currency that the buyer can actually see for the purchasable item.[2] A shop should compare the marked-up value with its visible product page and checkout after each price change. Keep shipping charges separate from the item's price. For a US store quoting dollars, a test should also confirm that the currency code and the displayed monetary amount refer to the same offer.
What currency should shippingRate use?
Google specifies a three-letter ISO 4217 currency code for shippingRate.currency.[2] The shop should test the code alongside the shipping cost shown to the buyer for the relevant destination. A number without the correct currency can misstate the actual charge. If a store varies its delivery charge by region, it should check the currency and amount for every represented shipping case rather than copying one rate into all of them.
Can a store use one shipping rate for every destination?
Only when that one rate truthfully describes the destinations and terms offered. OfferShippingDetails is a type for shipping destination information.[3] A store with different delivery costs for Alaska, Hawaii and the continental United States should represent those cases separately, then compare each with the options at checkout. The source does not establish the store's actual rates; its checkout and carrier terms supply those figures.
How should stock changes affect product schema?
The markup should track the offer a customer can purchase at that moment. When inventory changes, the shop should compare the visible stock state, the purchasable page and the structured data before relying on the listing.[2] An outdated availability value can describe an offer that no longer exists. A small store can use a sample item from each stock state as a repeatable check after the next inventory update.
Does valid Product markup guarantee a merchant listing?
No. The markup can make a selling page eligible for Google's merchant listing features, but it does not promise display.[1][2] Validation establishes that a particular page supplies interpretable fields; it does not confirm that the price, stock and shipping terms stay correct tomorrow. The store needs a change check tied to its catalogue and purchase flow. The buyer-facing page remains the practical reference for each offer.

Sources

  1. 1.Intro to Product Structured Data on Google | Google Search Central | Documentation | Google for Developers — Google Search Central · 2026
  2. 2.How To Add Merchant Listing Structured Data | Google Search Central | Documentation | Google for Developers — Google Search Central · 2026
  3. 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.

Start your audit

You receive your AI Opportunity Report and Implementation Brief — tailored to your business and delivered immediately.