Missing field "shippingDetails" (in "offers")

Topic summary

Main issue: Google flags “Missing field ‘shippingDetails’ (in ‘offers’)” on Shopify product pages, sometimes alongside “hasMerchantReturnPolicy” and an invalid “brand” type.

Cause: Product JSON-LD lacks required schema fields. Theme files differ by store; the Product schema may live in product.liquid, main-product.liquid, or microdata-schema.liquid.

Fixes discussed:

  • Add shippingDetails under offers per Google’s Product schema guidelines, including shippingRate (MonetaryAmount + currency) and deliveryTime (BusinessDays, dayOfWeek, cutoffTime).
  • Add hasMerchantReturnPolicy with your return window.
  • Set brand to the “Brand” type (not “Organization”).

Implementation notes: Ensure edits are in the file that outputs product structured data. One approach used cart.total_price to set shippingRate, but a user noted crawlers see cart as 0; prefer fixed or rule-based values that mirror published shipping policy.

Outcomes: Several users report validation passing after adding the fields; screenshots provided. Others still experiencing errors asked for direct help. The thread remains partially unresolved.

Resources: Google Product structured data docs and an external how-to article were shared. Code snippets are central to the fixes.

Summarized with AI on December 20. AI used: gpt-5.

It was a bit of a search for me, but for my template the json-ld was specified in

microdata-schema.liquid

I ended up adding the following to the script

“shippingDetails”: {
@type”: “ShippingDetails”,
“shippingRate”: {
@type”: “MonetaryAmount”,
“value”: “{% if cart.total_price < 2000 %}3.99{% else %}0{% endif %}”, // 2000 is in cents, which is equivalent to 20 euros
“currency”: “{{ cart.currency.iso_code }}”
},
“deliveryTime”: {
@type”: “ShippingDeliveryTime”,
“businessDays”: {
@type”: “BusinessDays”,
“dayOfWeek”: [
http://schema.org/Monday”,
http://schema.org/Tuesday”,
http://schema.org/Wednesday”,
http://schema.org/Thursday”,
http://schema.org/Friday
// Add or remove days as per your shipping days
],
“cutoffTime”: “15:00:00Z” // Adjust based on your operations
}
}