Google tells me Missing field "shippingDetails" (in "offers")

Google tells me Missing field "shippingDetails" (in "offers")

bliss-box
Shopify Partner
44 0 2

I got a message form google. 

 

Top non-critical issues‡

Missing field "shippingDetails" (in "offers")

Missing field "hasMerchantReturnPolicy" (in "offers")

 

I looked at my policy. 

 

  • Returns accepted for 14 days
  • Customer provides return shipping
  • No restocking fee
  • Final sale items: 2 collections can't be returned

 

How can I fix this?

 

 

 

Replies 4 (4)

EmmanuelFlossie
Shopify Partner
3279 243 786

The issue you are highlighting seems to be Google Search Console. If you already have a Google Merchant Center account and have added your shipping and returns policy, then you do not need to add it again in your structured data. However, if you don't like seeing optional warnings. Then update your structured data.

 

 

For example: 

 

 

<!-- Copyright FeedArmy 2023 Version 3.21 -->
<!-- FeedArmy tutorial found at https://feedarmy.com/kb/shopify-microdata-for-google-shopping/ -->

<!-- CODE SETTINGS START -->
<!-- CODE SETTINGS START -->

<!-- ALPHA2 CODE Please add your alpha2 code, you can find it here: https://help.shopify.com/en/api/custom-storefronts/storefront-api/reference/enum/countrycode -->
{%- assign fa_product_id_alpha2_code = 'US' -%}

<!-- PRODUCT IDset your product id values are default, product_id, parent_id, sku-->
{%- assign fa_product_id = 'default' -%}

<!-- RETURNS How long is your returns policy in days? -->
{%- assign fa_return_days = 28 -%}

<!-- SHIPPING How much do customer need to spend for free returns, assign your currency? -->
{% if cart.currency.iso_code == 'USD' %}
    {%- assign fa_shipping_currency = "USD" -%}
    {% if fa_product_price >= "75" %}
        {%- assign fa_shipping_price = 0.00 -%}
    {%- else -%}
        {%- assign fa_shipping_price = 4.50 -%}
    {%- endif -%}
{%- endif -%}
{%- assign fa_shipping_handling_time_min = 0 -%}
{%- assign fa_shipping_handling_time_max = 1 -%}
{%- assign fa_shipping_shipping_time_min = 2 -%}
{%- assign fa_shipping_shipping_time_max = 5 -%}

<!-- Disable / Enable shipping or returns true for enabled, false for disabled-->
{%- assign fa_returns = 'false' -%}
{%- assign fa_shipping = 'false' -%}

<!-- CODE SETTINGS END -->
<!-- CODE SETTINGS END -->

<!-- ==================================== -->
<!-- DO NOT EDIT ANYTHING BELOW THIS LINE -->

{%- if template contains 'product' -%}

{%- assign fa_current_variant = product.selected_or_first_available_variant -%}

{%- if fa_product_id == 'default' -%}
{%- capture fa_product_id_value -%}shopify_{{ fa_product_id_alpha2_code }}_{{ product.id }}_{{ fa_current_variant.id }}{%- endcapture -%}
{%- elsif fa_product_id == 'product_id' -%}
{%- capture fa_product_id_value -%}{{ fa_current_variant.id }}{%- endcapture -%}
{%- elsif fa_product_id == 'parent_id' -%}
{%- capture fa_product_id_value -%}{{product.id }}{%- endcapture -%}
{%- elsif fa_product_id == 'sku' -%}
{%- capture fa_product_id_value -%}{{ fa_current_variant.sku | escape }}{%- endcapture -%}
{%- endif -%}

{%- if cart.currency.iso_code == 'GBP' or cart.currency.iso_code == 'USD' or cart.currency.iso_code == 'JPY' or cart.currency.iso_code == 'AUD' or cart.currency.iso_code == 'AED' or cart.currency.iso_code == 'CAD' or cart.currency.iso_code == 'BWP' or cart.currency.iso_code == 'BND' or cart.currency.iso_code == 'DOP' or cart.currency.iso_code == 'GTQ' or cart.currency.iso_code == 'HKD' or cart.currency.iso_code == 'INR' or cart.currency.iso_code == 'ILS' or cart.currency.iso_code == 'YEN' or cart.currency.iso_code == 'KES' or cart.currency.iso_code == 'KOR' or cart.currency.iso_code == 'LBP' or cart.currency.iso_code == 'MYR' or cart.currency.iso_code == 'MXN' or cart.currency.iso_code == 'NPR' or cart.currency.iso_code == 'NZD' or cart.currency.iso_code == 'NIO' or cart.currency.iso_code == 'NGN' or cart.currency.iso_code == 'PKR' or cart.currency.iso_code == 'CNY' or cart.currency.iso_code == 'PHP' or cart.currency.iso_code == 'SGD' or cart.currency.iso_code == 'LKR' or cart.currency.iso_code == 'CHF' or cart.currency.iso_code == 'TWD' or cart.currency.iso_code == 'TSH' or cart.currency.iso_code == 'THB' or cart.currency.iso_code == 'UGX' or cart.currency.iso_code == 'KWD' or cart.currency.iso_code == 'CLP' or cart.currency.iso_code == 'BHD' -%}
{%- assign fa_product_price = fa_current_variant.price | money_without_currency | remove:',' -%}
{%- else -%}
{%- assign fa_product_price = fa_current_variant.price | money_without_currency | remove:'.' | replace: ',', '.' -%}
{%- endif -%}

<script type="application/ld+json" data-creator_name="FeedArmy">
{
  "@context": "http://schema.org/",
  "@type": "Product",
  "@id": {{ canonical_url | json }},
  "name": "{{ product.title | strip_html | escape }}",
  "url": "{{ shop.url }}{{ product.url }}",
  "sku": "{{fa_product_id_value}}",
  {%- if product.variants.first.barcode.size >= 12 and product.variants.first.barcode.size <= 14 -%}
  "gtin": {{ product.variants.first.barcode }},
  {%- endif -%}
  "productID": "{{ product.id }}",
  "brand": {
    "@type": "Brand",
    "name": "{{ product.vendor | escape }}"
  },
  "description": {{ product.description | strip_html | json }},
  "image": "https:{{ product.featured_image.src | img_url: '1500x1500' }}",
  {%- if product.variants -%}
    "offers":
      {
        "@type" : "Offer",
        {%- if fa_returns == 'true' -%}
        "hasMerchantReturnPolicy": {
          "@type": "MerchantReturnPolicy",
          "applicableCountry": "{{ fa_product_id_alpha2_code }}",
          "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
          "merchantReturnDays": {{ fa_return_days }},
          "returnMethod": "https://schema.org/ReturnByMail",
          "returnFees": "https://schema.org/FreeReturn"
        },
        {%- endif -%}
        {%- if fa_shipping == 'true' -%}
        "shippingDetails": {
          "@type": "OfferShippingDetails",
          {% if fa_shipping_price %}
          "shippingRate": {
              "@type": "MonetaryAmount",
              "value": {{ fa_shipping_price }},
              "currency": "{{ fa_shipping_currency }}"
          },
          "weight":{
              "@type": "QuantitativeValue",
              "value" : "{{ product.variants.first.weight | weight_with_unit }}"
          },
          {%- endif -%}
          "shippingDestination": {
            "@type": "DefinedRegion",
            "addressCountry": "{{ fa_product_id_alpha2_code }}"
          },
          "deliveryTime": {
            "@type": "ShippingDeliveryTime",
            "handlingTime": {
              "@type": "QuantitativeValue",
              "minValue": {{fa_shipping_handling_time_min}},
              "maxValue": {{fa_shipping_handling_time_max}},
              "unitCode": "DAY"
            },
            "transitTime": {
              "@type": "QuantitativeValue",
              "minValue": {{fa_shipping_shipping_time_min}},
              "maxValue": {{fa_shipping_shipping_time_max}},
              "unitCode": "DAY"
            }
          }
        },
        {%- endif -%}
        "priceCurrency": "{{ cart.currency.iso_code }}",
        "price": "{{ fa_product_price }}",
        "itemCondition" : "http://schema.org/NewCondition",
        "availability" : "http://schema.org/{% if fa_current_variant.available %}InStock{% else %}OutOfStock{% endif %}",
        "url" : "{{ shop.url }}{{ fa_current_variant.url }}",
            {%- if fa_current_variant.image -%}
              {%- assign variant_image_size = fa_current_variant.image.width | append: 'x' -%}
              "image": "https:{{ fa_current_variant.image.src | img_url: variant_image_size }}",
            {%- else -%}
              "image": "https:{{ product.featured_image.src | img_url: '1500x1500' }}",
            {%- endif -%}
            {%- if fa_current_variant.title != 'Default Title' -%}
              "name" : "{{ product.title | strip_html | escape }} - {{ fa_current_variant.title | escape }}",
            {%- else -%}
              "name" : "{{ product.title | strip_html | escape }}",
            {%- endif -%}
            {%- if fa_current_variant.barcode.size >= 12 and fa_current_variant.barcode.size <= 14 -%}
              "gtin": {{ product.variants.first.barcode }},
            {%- endif -%}
			        "sku": "{{fa_product_id_value}}",
            {%- if product.description != blank -%}
            "description" : {{ product.description | strip_html | json }},
            {%- endif -%}
          "priceValidUntil": "{{ 'now' | date: '%s' | plus: 31536000 | date: '%Y-%m-%d' | uri_encode | replace:'+','%20' }}"
      }
    {%- if product.variants.size > 1 -%},
      "additionalProperty": [{
        "@type": "PropertyValue",
        "propertyID": "item_group_id",
        "value": "{{ product.id }}"
      }]
      {%- endif -%}
    {%- if product.metafields.spr.reviews -%}
    {%- assign fa_rating = product.metafields.spr.reviews | split: '"reviewCount": "' | last | split: '"' | first | plus: 0 -%}
    {%- if fa_rating > 0 -%}
    ,"aggregateRating": {
     "@type": "AggregateRating",
     "ratingValue": {{ product.metafields.spr.reviews | split: '"ratingValue": "' | last | split: '"' | first | plus: 0 }},
     "ratingCount": {{ product.metafields.spr.reviews | split: '"reviewCount": "' | last | split: '"' | first | plus: 0 }}
    }
    {%- endif -%}
    {%- endif -%}
  {%- endif -%}
}
</script>
{%- endif -%}
<!-- Copyright FeedArmy 2023 Version 3.21 -->

 

Get in touch with Emmanuel: a Google Shopping Specialist, Google Ads Diamond Product Expert, and also a a Google Product Expert Education 2021 & Tailwind 2023 Award winner.
Need Google Merchant Center or Google Shopping support?.

ilanadavis
Shopify Partner
222 29 74

You see these non-critical issues in Search Console because there isn't a way in Shopify for your shipping and returns information to be automatically included in the structured data.

 

Google will automatically pull the shipping and returns information from Merchant Center.

 

Search Console however doesn't talk to Merchant Center so you end up receiving emails saying the fields are missing.

 

So if you have these set up in Merchant Center, you can ignore the non-critical issues in Search Console.

 

You can configure the delivery information in Merchant Center using this doc or there is a setting in the Google Sales channel to automatically pull it from Shopify.
You can configure the returns information in Merchant Center using this doc.

Ilana Davis, Shopify Superhero
JSON-LD for SEO, adds structured data to your theme, getting you more organic traffic with Rich Results.
Linking Llama, link complementary, comparable, or related products to improve SEO & UX.

SofiiaAst
Shopify Partner
49 1 2

Hello!

You can add  shippingDetails and Return Policy using the "SA SEO JSON‑LD Schema markup" easilly

Sofiia Astanina, Shopify app developer
Try SA SEO JSON‑LD Schema markup from Shopify app store

TechSEOSolution
New Member
6 0 0

Hi there! 👋

I've encountered and resolved these exact issues before. The errors you're seeing in Google Search Console, "Missing field 'hasMerchantReturnPolicy'" and "Missing field 'shippingDetails'", usually happen when these fields aren't properly defined in the structured data (schema) on your product pages.

To fix this, you need to add the corresponding structured data code to your product JSON file.

 

If you'd like more detailed guidance or step-by-step instructions, feel free to check out the articles I've written on these topics:

 

These articles should provide all the information you need to fix these issues and ensure your product pages are fully optimized for Google.

 

Here are some screenshots showing this issue fixed.

 

shiipingdetails issue solved.pnghasmerchantreturnpolicy issue solved.jpegmissing field shipping details has been solved.jpegmissing field has merchant return policy issues has been solved.jpegMissing field shipping details.jpgMissing field hasMerchantReturnPolicy in offers.jpg

Tech SEO Solutions