Google Search Console: "Improve Item Appearance" Issues

Google Search Console identified 5 issues with my site’s item appearance:

  1. Missing field “hasMerchantReturn Policy” in (“offers”)
  2. Missing field “shippingDetails” (in “offers”)
  3. Missing field “priceValidUntil” (in “offers”)
  4. Missing field “aggregateRating”
  5. Missing field “review”

How can I fix them? Thanks in advance!

My website: sheetandprompt.com (sells digital products only)

Hello @iveray ,

Google Search Console is flagging some missing fields in your product structured data – specifically within the “offers” section and for reviews/ratings. Since you’re selling digital products, some of these fields might not be relevant. Here’s what you can do:

  1. Review Your JSON-LD Markup:
    Check where your theme outputs the structured data (often in the header or product template). You might see a block of JSON-LD for your products.

  2. Adjust or Remove Unnecessary Fields:

    • hasMerchantReturnPolicy: Even for digital products, you can include a URL to your return/refund policy.
    • shippingDetails: For digital products, you might not have shipping. You can either remove this property or set it to indicate that shipping isn’t applicable (e.g., mark it as ineligible).
    • priceValidUntil: If you don’t have a specific expiry date for your pricing, you can set a far-future date or remove this property.
    • aggregateRating and review: If you don’t have any reviews or ratings, it’s better to remove these fields rather than leave them empty.
  3. Test Your Markup:
    Use Google’s Rich Results Test or Structured Data Testing Tool to validate your updated JSON-LD and make sure all required fields are either populated or removed if not applicable.

By cleaning up your structured data to accurately reflect your digital products, you should resolve these issues and help Google understand your content better.

Hope that helps clear things up!

Best,
Tracy from Kudosi Reviews

Hi @irene-vintage , thank you for your advice! Since I have zero coding background, can you explain how exactly I can do everything you mentioned in steps #1 and #2?

For instance, where can I “include a URL to your return/refund policy”?

Hello @iveray ,

Here’s a breakdown step-by-step for you.

1. Find Where Your Structured Data Is- Log in to Shopify Admin:

Go to Online Store > Themes.

  • Access the Code Editor:
    Click on Actions > Edit Code for your active theme.
  • Search for JSON-LD Markup:
    Use the search bar in the code editor (usually a “find” feature) and type in application/ld+json. This should help you locate the file (often in theme.liquid or a snippet like structured-data.liquid) where your structured data is added.

2. Adjust Your Structured Data

Since your site sells digital products, some fields like shipping details might not apply, and you might not have reviews or ratings yet.

  • Adding a URL for Your Return/Refund Policy:
    If you have a return or refund policy page (say, at https://sheetandprompt.com/pages/return-policy), you can add a line like this inside your “offers” section of your JSON-LD:

    “hasMerchantReturnPolicy”: { “@type”: “MerchantReturnPolicy”, “url”: “https://sheetandprompt.com/pages/return-policy” }

    This tells Google where customers can find your policy.

  • Handling Shipping Details:
    For digital products, shipping isn’t applicable. You can remove the “shippingDetails” field entirely from your structured data, or set it to something that indicates no shipping is required.

  • Price Validity:
    If you don’t have an expiry date for your price, you can either remove the “priceValidUntil” field or set it to a far-future date (e.g., “priceValidUntil”: “2099-12-31”).

  • Aggregate Rating and Reviews:
    If you haven’t collected reviews, it’s best to remove the “aggregateRating” and “review” fields altogether, because empty fields can cause errors.

3. Save and Test- Save Your Changes:

Once you’ve made the edits, click Save in the code editor.

  • Test Your Markup:
    Use Google’s Rich Results Test or Structured Data Testing Tool to check your pages. This will show you if the errors are resolved.

To sum up, by editing the JSON-LD markup:

  • Include your return policy URL (if you have one) by adding a hasMerchantReturnPolicy line.
  • Remove or adjust fields that don’t apply to digital products (like shipping, price expiration, reviews).
  • Test your changes to ensure everything looks good to Google.

Let me know if you run into any other issues or need more details.

Best,
Tracy from Kudosi Reviews

@irene-vintage – I’m having trouble finding the code file mentioned in the third bullet of your first point. Do you mind looking at my website/code to pinpoint the correct file name?

Here’s a detailed step-by-step approach to resolve the issue:

Missing Field “hasMerchantReturnPolicy” (in “offers”)

Even for digital products, you can include a return policy.

Here’s how to do it:

Navigate to Settings > Policies in your Shopify admin. Add your return policy details and save.

Incorporate Return Policy into Structured Data:

Go to Online Store > Themes in your Shopify admin. Click Actions > Edit Code for your active theme.

Locate the file where your product structured data (JSON-LD) is defined, commonly in product-template.liquid.

Within the JSON-LD script, add:

“hasMerchantReturnPolicy”: {

@type”: “MerchantReturnPolicy”,

“url”: “{{ shop.url }}/policies/refun-policy”

}

Replace {{ shop.url }}/policies/refun-policy with the actual URL of your return policy page.

Missing Field “shippingDetails” (in “offers”)

Add Shipping Details to Structured Data:

In the same JSON-LD script, include:

“shippingDetails”: {

@type”: “OfferShippingDetails”,

“shippingRate”: {

@type”: “MonetaryAmount”,

“value”: “0.00”,

“currency”: “USD”

},

“shippingDestination”: {

@type”: “DefinedRegion”,

“addressCountry”: “US”

},

“deliveryTime”: {

@type”: “ShippingDeliveryTime”,

“handlingTime”: {

@type”: “QuantitativeValue”,

“minValue”: 0,

“maxValue”: 0,

“unitCode”: “HOUR”

},

“transitTime”: {

@type”: “QuantitativeValue”,

“minValue”: 0,

“maxValue”: 0,

“unitCode”: “HOUR”

}

}

}

This means that there are no shipping costs or times associated with your products.

Missing Field “priceValidUntil” (in “offers”)

Set a Default Validity Date:

In your JSON-LD script, add:

“priceValidUntil”: “{{ ‘now’ | date: ‘%Y-%m-%d’ | date: ‘%Y’ | plus: 1 }}-12-31”

This sets the price validity until the end of the next calendar year.

Missing Field “aggregateRating”

This pertains to the average rating of your products based on customer reviews:

Implement a Review System: Integrate a review app from the Shopify App Store to collect customer feedback.

Add Aggregate Rating to Structured Data:
Once reviews are collected, modify your JSON-LD script to include:

“aggregateRating”: {

@type”: “AggregateRating”,

“ratingValue”: “{{ product.metafields.spr.reviews | split: ‘"ratingValue": "’ | last | split: ‘"’ | first }}”,

“reviewCount”: “{{ product.metafields.spr.reviews | split: ‘"reviewCount": "’ | last | split: ‘"’ | first }}”

}

Ensure this data dynamically reflects your product reviews.

Missing Field “review”

Include Individual Reviews in Structured Data:

After collecting reviews, add to your JSON-LD script:

“review”: [

{

@type”: “Review”,

“author”: {

@type”: “Person”,

“name”: “{{ review.author }}”

},

“datePublished”: “{{ review.date }}”,

“description”: “{{ review.content }}”,

“name”: “{{ review.title }}”,

“reviewRating”: {

@type”: “Rating”,

“bestRating”: “5”,

“ratingValue”: “{{ review.rating }}”,

“worstRating”: “1”

}

}

// Repeat for additional reviews

]

Ensure this section dynamically includes actual customer reviews.

If you’re uncomfortable in editing the code, choose apps from shopify app store that can complete the task for you. These apps include Easy edits, coderift, and more.