Accepting credit cards, warehouses, and shipping and fulfilling orders
Any one help how to solve this issue from merchant center?
I just got the same problem. I think it is to do with merchant centre?
Yes, same thing here too. Any ideas anyone?
You'll likely have to add or edit structured data in your product.liquid code. More information here - https://developers.google.com/search/docs/appearance/structured-data/product
This fixed the issue for me.
Where did you put the code off the link you posted? I tried to add it to the product.json page, I even tried custom meta fields.
The place to add this will be in product.liquid under 'offers'.
The liquid file outputs information about the product being viewed, no matter which product is being viewed. Google looks through this data to understand the variables about each product and if a variable is missing or doesn't translate exactly between Shopify and Google, you get the error.
The error message Missing Field "ShippingDetails" (In "Offers") is literally telling us that in the product.liquid file, under 'offers' there are no shipping details defined.
Please send me a private message if you'd like more help.
I don't seem to have a product.liquid but I do have a main-product.liquid so I assumed it was in there.
I added the following code in the offers code and google is still saying there's a problem when I hit validate fix.
<script type="application/ld+json">
{
"@context": "http://schema.org/",
"@type": "Product",
"name": {{ product.title | json }},
"url": {{ request.origin | append: product.url | json }},
{% if seo_media -%}
"image": [
{{ seo_media | image_url: width: 1920 | prepend: "https:" | json }}
],
{%- endif %}
"description": {{ product.description | strip_html | json }},
{% if product.selected_or_first_available_variant.sku != blank -%}
"sku": {{ product.selected_or_first_available_variant.sku | json }},
{%- endif %}
"brand": {
"@type": "Brand",
"name": {{ product.vendor | json }}
},
"offers": [
{%- for variant in product.variants -%}
{
"@type" : "Offer",
{%- if variant.sku != blank -%}
"sku": {{ variant.sku | json }},
{%- endif -%}
{%- if variant.barcode.size == 12 -%}
"gtin12": {{ variant.barcode }},
{%- endif -%}
{%- if variant.barcode.size == 13 -%}
"gtin13": {{ variant.barcode }},
{%- endif -%}
{%- if variant.barcode.size == 14 -%}
"gtin14": {{ variant.barcode }},
{%- endif -%}
"availability" : "http://schema.org/{% if variant.available %}InStock{% else %}OutOfStock{% endif %}",
"price" : {{ variant.price | divided_by: 100.00 | json }},
"priceCurrency" : {{ cart.currency.iso_code | json }},
"url" : {{ request.origin | append: variant.url | json }},
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": "0",
"currency": "GBP"
},
"shippingDestination": [
{
"@type": "DefinedRegion",
"addressCountry": "UK",
"addressRegion": ["UK"]
}
]
},
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"applicableCountry": "UK",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 14,
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/ReturnFeesCustomerResponsibility"
}
}{% unless forloop.last %},{% endunless %}
{%- endfor -%}
]
}
</script>
The only thing I have changed is the Shipping details and returns policy.
Anyone still needing help with this issue please private message me. Thanks!
Hi,
I'm having the same issue for about a month now...cant fix it.
Can you please help me?
Thanks in advance!
I'm not really sure how to send this message to you privately, so I'm just gonna reply here and hope that you contact me directly if needed. 😅
I received these google errors and would love some assistance in fixing 2 of the 3 (Just waiting on validation for the "brand" fix):
As I mentioned, I updated the brand to "Brand", however I'm not 100% sure on what code and where I'm supposed to insert the additional code. Would you be able to help me out? Thank you in advance
<script type="application/ld+json">
{
"@context": "http://schema.org/",
"@type": "Product",
"name": {{ product.title | json }},
"url": {{ request.origin | append: product.url | json }},
{% if seo_media -%}
"image": [
{{ seo_media | image_url: width: 1920 | prepend: "https:" | json }}
],
{%- endif %}
"description": {{ product.description | strip_html | json }},
{%- if current_variant.sku != blank -%}
"sku": {{ current_variant.sku | json }},
{%- endif -%}
"brand": {
"@type": "Brand",
"name": {{ product.vendor | json }}
},
"offers": [
{%- for variant in product.variants -%}
{
"@type" : "Offer",
{%- if variant.sku != blank -%}
"sku": {{ variant.sku | json }},
{%- endif -%}
{%- if variant.barcode.size == 12 -%}
"gtin12": {{ variant.barcode }},
{%- endif -%}
{%- if variant.barcode.size == 13 -%}
"gtin13": {{ variant.barcode }},
{%- endif -%}
{%- if variant.barcode.size == 14 -%}
"gtin14": {{ variant.barcode }},
{%- endif -%}
"availability" : "http://schema.org/{% if variant.available %}InStock{% else %}OutOfStock{% endif %}",
"price" : {{ variant.price | divided_by: 100.00 | json }},
"priceCurrency" : {{ cart.currency.iso_code | json }},
"priceValidUntil": "{{ 'now' | date: '%s' | plus: seconds_price_valid | date: '%Y-%m-%d' }}",
"url" : {{ request.origin | append: variant.url | json }}
}{% unless forloop.last %},{% endunless %}
{%- endfor -%}
]
}
</script>
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
}
}
Sorry, but how it this supposed to work on the product page?
As far as the crawler is concerned - the cart.total_price will always be 0
Am i missing something?
Hi there! 👋
I've dealt with the "Missing field 'shippingDetails'" issue before, and I can help you resolve it. This error typically occurs when the shippingDetails field isn't properly included in your product's structured data.
To fix this, you'll need to add the structured data code to your product JSON file where your schema.org data is located:
I've written an article that provides more details on how to address this specific problem. If you'd like to check it out, you can find it here:
Starting a B2B store is a big undertaking that requires careful planning and execution. W...
By JasonH Sep 23, 2024By investing 30 minutes of your time, you can unlock the potential for increased sales,...
By Jacqui Sep 11, 2024We appreciate the diverse ways you participate in and engage with the Shopify Communi...
By JasonH Sep 9, 2024