What the error means
Your Offer does not declare shipping cost or delivery time, so your listing cannot show a delivery estimate next to the price.
Why Google rejects it
It is a recommended field rather than a hard rejection, which is why it is easy to leave alone for months. The cost is not a disapproval, it is a listing that looks thinner than a competitor whose result shows free delivery by a named date.
How to fix it
- Set shipping rates in Merchant Center first. That covers the requirement without touching the theme and applies to every product at once.
- For page markup, add OfferShippingDetails to the Offer with shippingRate and deliveryTime.
- Only declare a rate you actually charge. A mismatch between markup and checkout is its own disapproval.
Common causes
Offer omits shippingDetails
Product markup may describe price and availability but contain no shipping details under its Offer. Google documents shippingDetails as a way to express shipping costs and delivery time on merchant listing product pages. Its absence can create a structured data warning even when shipping settings exist elsewhere.
Shipping details are attached outside the Offer
A JSON-LD block can be syntactically valid while placing OfferShippingDetails at an unsupported location. The property should be connected through the Offer's shippingDetails. Inspect the structured data tree to confirm the parser associates the region, rate, and delivery terms with the intended offer.
Rate or destination does not match checkout
Markup that says free shipping or a low rate for every destination can conflict with actual checkout rules. Regional zones, order thresholds, and product-specific shipping classes often make a single universal amount inaccurate. Compare the declared rate and destination with what a buyer in that region sees.
Delivery estimate is incomplete or unrealistic
If markup includes delivery time, handling and transit ranges need valid values and units. Copying a generic estimate can promise dates the warehouse does not meet. Check the public shipping policy and checkout estimates against the values emitted for each market.
Account settings are used instead of page markup
A Merchant Center shipping service may be configured even though the page schema does not include shippingDetails. These are distinct sources. Google can use settings from Merchant Center for shipping, while Search Console's structured data report evaluates what it finds in the page's markup.
Fix it on your platform
On Shopify
- Review shipping rates and delivery zones in Shopify admin and confirm what customers see for each target market. Do not encode one rate in schema if checkout varies by destination or order value.
- Check the published product page source for Offer and shippingDetails. Inspect the theme or schema app responsible for JSON-LD; Shopify shipping settings do not necessarily cause the theme to emit this property.
- You can maintain shipping services in Merchant Center instead of hand-coding frequently changing rates. If you also publish page markup, keep rate and delivery statements consistent with checkout and your shipping policy.
- For products with special shipping classes or restrictions, use accurate product or account-level configuration rather than applying the default product rate to every item.
On WooCommerce
- Review WooCommerce shipping zones, methods, and product shipping classes, then compare the real checkout rate for representative customer locations.
- Identify which plugin or theme emits Product and Offer schema. Configure shippingDetails in that source only if the rate and delivery terms can be maintained accurately there.
- If Merchant Center owns shipping configuration, review its shipping services and country coverage. Do not assume those settings will appear in each page's structured data report.
- Check variable products and products with different shipping classes separately. Make sure one Offer does not report a rate or delivery estimate that belongs to another variant.
On other platforms
- In Wix, BigCommerce, or Squarespace, compare the platform's shipping zones and product-level shipping settings with the schema generated by its theme or commerce app.
- If page schema cannot represent changing rates reliably, maintain shipping policies in Merchant Center and keep the storefront shipping page and checkout accurate.
- On custom sites, put OfferShippingDetails under the relevant Offer and include a defined destination, monetary amount and currency when applicable. Add handling and transit time only when you can support those estimates.
- Test markets, free-shipping thresholds, and product exceptions. Avoid presenting an all-country shipping amount when checkout charges differ by region.
How to confirm it is fixed
- Select products and shipping destinations with different rate conditions. Compare the public policy, checkout amount and delivery estimate with Merchant Center configuration and page markup.
- Use Rich Results Test on a live product URL. Confirm Google detects OfferShippingDetails beneath the correct Offer and parses its destination and rate.
- Check the Merchant listings report for the exact warning and allow a recrawl after updates. Structured data validation does not itself update Merchant Center account shipping services.
- Run the structured data check on representative pages to inspect shippingDetails in fetched Product markup.
- Revisit a logged-out checkout using the same country and product to verify the rate and delivery language remain accurate.
A worked example
Hypothetical case: a home decor shop configures free shipping in Merchant Center for orders over a threshold, but its product JSON-LD says every item ships free to every US address. Search Console flags incomplete or inconsistent shipping details on the merchant listing. The owner tests checkout with a low-cost item and a high-cost furniture item, then separates the account shipping service from the page schema. They remove the blanket free rate from the Offer markup and publish only the destination and rate the product can actually receive, leaving threshold logic in the account configuration. They validate the updated page and check the report after recrawling.
Questions
Is shippingDetails required for Product schema?
Can I set shipping in Merchant Center instead of adding shippingDetails?
Where does shippingDetails go in Product JSON-LD?
Why does Google show a shipping warning when my Merchant Center rates are set?
Should I put free shipping in schema if checkout has a threshold?
Shipwork reports whether your Offer carries shippingDetails, alongside every other missing product field. Free, no account, no signup. Paste your store address.
Check my store for Missing field ‘shippingDetails’Go deeper: Product schema, fully explained
See the check: Structured data, inspected
Other errors like this