Either "offers", "review", or "aggregateRating" should be specified - Google Error

Damian_Rushwort
New Member
16 0 0

Hi

 

I'm getting the following error showing against all my products in the Google search console.

 

Either "offers", "review", or "aggregateRating" should be specified.

 

Anyone seen this before / know how to resolve? 

 

Damian 

Replies 268 (268)
Akshay_V
Shopify Partner
438 16 58

@SIKROX 

For that, you need to give me store admin collaborator access to check backend and app code. It has checked the link that you have attached with your queries and I found many warnings and Errors.
Reference Screenshot: 
https://prnt.sc/pmv8pu
https://prnt.sc/pmv8k6

So please let me know.

Akshay Vaghasiya | Email: hello@lavitastic.com | Skype: akshayvaghasiya84
Want to modify theme or custom changes on store hire me.
If helpful then please Like and Accept Solution.
Buy me a coffee PayPal
PetSpy
Tourist
8 0 2

Contacted Shopify Reviews App support today. I let you know if i get any updates from them.

Akshay_V
Shopify Partner
438 16 58

@PetSpy 

Sure.

Akshay Vaghasiya | Email: hello@lavitastic.com | Skype: akshayvaghasiya84
Want to modify theme or custom changes on store hire me.
If helpful then please Like and Accept Solution.
Buy me a coffee PayPal
RichardSzmidt
Visitor
1 0 0

@PetSpy  Any response from support?

 

I am having the same issue.  I believe that this is definitely an issue with the review app not generating the structured data correctly.

PetSpy
Tourist
8 0 2

Yes, I received an answer from them, but it is absolutely useless.

 

******* here from Shopify, I hope you are well today!

If you have implemented our unsupported Related Products tutorial for Shopify themes (which supports rich snippets), and checked your rich snippets using Google's Structured Data Testing Tool you may see the following error:

 

The error refers only to the related products customization, and the product's rich snippet information should still be available below the related products' snippet information. The tutorial may be amended in the future to prevent this visual error, but it is currently expected.

I pointed out to them the specific place of the error in the code of the product page and that it was caused by the Review app. Waiting for another answer.

SIKROX
Tourist
7 0 1

How do I give you admin collaborator access?

Akshay_V
Shopify Partner
438 16 58

@SIKROX 

I have sent you a request on sikrox.myshopify.com. So you can find it using the below link.

http://sikrox.myshopify.com/admin/settings/account

Akshay Vaghasiya | Email: hello@lavitastic.com | Skype: akshayvaghasiya84
Want to modify theme or custom changes on store hire me.
If helpful then please Like and Accept Solution.
Buy me a coffee PayPal
SIKROX
Tourist
7 0 1

@Akshay_V wrote:

@SIKROX 

I have sent you a request on sikrox.myshopify.com. So you can find it using the below link.

http://sikrox.myshopify.com/admin/settings/account


I gave you access. Have you had time to look into it yet?  Thank you

Akshay_V
Shopify Partner
438 16 58

@SIKROX 

Check the private message that I have sent you.

Akshay Vaghasiya | Email: hello@lavitastic.com | Skype: akshayvaghasiya84
Want to modify theme or custom changes on store hire me.
If helpful then please Like and Accept Solution.
Buy me a coffee PayPal
Akshay_V
Shopify Partner
438 16 58

@SIKROX 

I have checked your store and I found that your theme contains too many product templates and If I check each and everyone then it takes more time to fix. 

Akshay Vaghasiya | Email: hello@lavitastic.com | Skype: akshayvaghasiya84
Want to modify theme or custom changes on store hire me.
If helpful then please Like and Accept Solution.
Buy me a coffee PayPal
Tuffman084
Visitor
1 0 0

I am having the same error, "Either "offers", "review", or "aggregateRating" should be specified." In Google search console it highlights "<div itemprop='itemReviewed' itemscope itemtype='http://schema.org/Product'> <meta itemprop='name' content='Most Alive Ceramic Mug'> </div>" However, when I go into Google Structured  Data Testing Tool it highlights, "<div class='jdgm-rev-widg' data-average-rating='5.00' - Keeps going on for several lines." So both tools are giving me the error of "Either "offers", "review", or "aggregateRating" should be specified" but highlighting two separate portions of my HTML. I have tried my best on resolving the issue to no avail. Please advise on the best way to resolve the issue.

 

Two of many of the pages giving me this error are:

PetSpy
Tourist
8 0 2

I have good news for all of us. Here is what the support answered. I will test it today.

 

Hi *******,

Our developers have updated the application to adhere with Google's new requirements. The fix will implement when products receive their next review. A review must be added for each product:

Sample screenshot: 17-01-xuulj

McGreals
Excursionist
22 0 5

Hi @PetSpy , so you're saying the error will only be "fixed" if each and every product from our store receives a review? Uh oh!!

Matt1121
Tourist
3 0 1

This fix didnt work for our site. Have emailed support


@PetSpy wrote:

I have good news for all of us. Here is what the support answered. I will test it today.

 

Hi *******,

Our developers have updated the application to adhere with Google's new requirements. The fix will implement when products receive their next review. A review must be added for each product:

Sample screenshot: 17-01-xuulj


 

PetSpy
Tourist
8 0 2

It didn't work for us either. Contacted them again.

tim
Shopify Expert
3258 232 1178

I was asked to help with the same problem.

Here is my analysis (no solution so far)

 

The shop uses Shopify product reviews App, small inventory, small number of reviews.

Review App integrated in a usual way:

<div id="shopify-product-reviews" data-id="{{product.id}}">
  {{ product.metafields.spr.reviews }}
</div>

This evaluates to the following HTML served to visitors:
output 1)

<div class="spr-header">
    <h2 class="spr-header-title">Customer Reviews</h2>
<div class="spr-summary" itemscope itemprop="aggregateRating" itemtype="http://schema.org/AggregateRating"> <meta itemprop="itemreviewed" content="Birds Earrings"> <span class="spr-starrating spr-summary-starrating"> <meta itemprop="bestRating" content="5"> <meta itemprop="worstRating" content="1"> <meta itemprop="reviewCount" content="4"> <meta itemprop="ratingValue" content="5.0">

When you run google Structured Data Testing Tool it gets this HTML, parses it and finds no errors.

However, in your browser Shopify Product Reviews App replaces this code with the following:
output 2)

<div class="spr-header">
    <h2 class="spr-header-title">Customer Reviews</h2>
<div class="spr-summary" itemscope="" itemprop="aggregateRating" itemtype="http://schema.org/AggregateRating"> <div itemprop="itemReviewed" itemscope="" itemtype="http://schema.org/Product"> <meta itemprop="name" content="Birds Earrings"> </div> <span class="spr-starrating spr-summary-starrating"> <meta itemprop="bestRating" content="5"> <meta itemprop="worstRating" content="1"> <meta itemprop="reviewCount" content="4"> <meta itemprop="ratingValue" content="5.0">

Note the change in itemreviewed property from:

 <meta itemprop="itemreviewed" content="Birds Earrings">

to:

 <div itemprop="itemReviewed" itemscope="" itemtype="http://schema.org/Product">
     <meta itemprop="name" content="Birds Earrings">
 </div>

When Google Bot retrieves the page, it does run JavaScripts and it actually sees the different result compared with what Structured Data Testing Tool sees. If you manage to get this resulting code from your browser and paste it as a code snippet into a SDTT, it produces an error too! This explains why  SDTT does not help with this test.

 

Now, here is how I see this -- the code I marked in bold defines a new property  for the aggregateRating "object".

In the output 1) this property has no type specified, and SDTT is ok with it -- it assign it type "thing"  (though Search console may not like it).

In the output 2), this property is defined as having type "Product" which only has "name" property and this does not pass the check, therefore the error message "One of offers or review or aggregateRating should be provided."

 

As far as I understand, this itemReviewed property is not necessary if aggregateRating is nested inside the Product, this would be the best option in my opinion (at least SDTT is ok with this).

 

Now, if you have a product which has not received review for some time, your metafield will contain something similar to my first snippet. However, if new review is added, your metafielded  will be updated to look like output 2) and will fail straight away in SDTT too.

Relevant discussion at Google webmasters

 

 

ShopTime2
Excursionist
10 0 7

I guess I'll throw my name in as having the same problems as everyone else here. 

I contacted support a couple of days ago and will let you know the response.

 

I have 17 products with the "either" error. The first linked product has the problem, the second linked product does not. The only difference being the first link was last reviewed mid October and the second link was last reviewed mid September.

 

https://www.engleberts.com/collections/wood-sunglasses/products/sandalwood-sunglasses

 

https://www.engleberts.com/collections/wood-sunglasses/products/zebrawood-sunglasses

 

So we have one poster that suggest waiting until you get another review since the supposed Shopify fix and another user says a new review will set your product up for fail. 

 

Don't mind saying I'm  a little bit frustrated and confused. I'll let you know what Shopify comes up with for me.

 

tim
Shopify Expert
3258 232 1178

Mate, here are the code snippets from your product pages:

good one:

<meta itemprop="itemReviewed" content="Zebrawood Sunglasses, Stars and Bars, Polarized">

bad one:

<div itemprop='itemReviewed' itemscope itemtype="http://schema.org/Product">
   <meta itemprop="name" content="Real Sandalwood Sunglasses, Ice Blue Polarized Lenses, Club Style">
</div>

Pretty  much matches my pattern...

 

tim
Shopify Expert
3258 232 1178

To further support my diagnosis in previous message:

for affected products Search console reports: "2 items detected: Some are invalid", which means the itemReviewed  is considered a separate product.

 

My solution is to not output the itemReviewed at all, provided that shopify review code is nested inside the main Product element.

Usually Shopify product reviews are included as follows:

 

<div id="shopify-product-reviews" data-id="{{product.id}}">
    {{ product.metafields.spr.reviews }}
</div>

Here is the code I've used instead:

 

<div id="shopify-product-reviews" data-id="{{product.id}}">
{% assign mf = product.metafields.spr.reviews | newline_to_br | split: "<br />" %}
{% for line in mf %}
   {% if line contains "meta" and line contains "itemreviewed" %}
   {% elsif line contains "div" and line contains "http://schema.org/Product" %}
     {% assign skip_div = true %}
   {% elsif skip_div %}
     {% if line contains "/div" %}
       {% assign skip_div = false %}
     {% endif %}
   {% else %}
      {{ line }} 
   {% endif-%}
{% endfor %}
</div>
<script>
  var SPRCallbacks = {
    onProductLoad: function( e ) {
      $('[itemprop="itemreviewed"]').remove();
      $('[itemprop="itemReviewed"]').remove();  
    }
  }                
</script>

What it does: the liquid code inside <div>  outputs the metafield, but removes the following elements:

<meta itemprop="itemreviewed" content="***">

and 

<div itemprop="itemReviewed" itemscope="" itemtype="http://schema.org/Product">
<meta itemprop="name" content="***"> </div>

Script part register a callback with the Shopify Product Reviews App to remove the same elements after they are output by the App.

 

This resulting HTML validates both in Structured Data Testing Tool and Search console. Note that Search console somehow does not see the updated page in "Live Test" if you've tried "Live Test" against the old code -- some caching issue.

 

I must warn that the liquid part of the solution is hackish and is a workaround until it's fixed in the App --  it's definitely better to force Shopify to properly fix this in App.

tim
Shopify Expert
3258 232 1178

On a different Shop running StampedIO App, Javascript part of my solution above does not work because StampedIO recklessly overwrites the value of the SPRCallbacks variable, and while SDTT will be ok, searchbot would not be happy with the result.

 

There is a way to fix it, still in testing stage. 

McGreals
Excursionist
22 0 5

@tim will await your marvelous fix! 😉

Grant_Harrison
Shopify Partner
8 0 8

Thanks Tim - this little snippet resolved a lot of Product errors due to Stamped / Shopify reviews code.

I'm still getting an Error in AggregateRating with missing itemReviewed field which I'm trying to resolve but an uphill battle until Shopify and Stamped fix their code

 

 

tim
Shopify Expert
3258 232 1178

Grant, which snippet you've tried -- first one or the second, with MutationObserver?

Mind sharing a link to a product with error?

 

The code I've shared is based on an assumption that page uses schema.org microdata and reviews element is directly inside the Product  itemscope.
I understand that not all shops may fit this and I guess Shopify wanted to support as much use cases as possible, but looks like it's not really an option  anymore?

Grant_Harrison
Shopify Partner
8 0 8
<div id="shopify-product-reviews" data-id="{{product.id}}">
{% assign mf = product.metafields.spr.reviews | newline_to_br | split: "<br />" %}
{% for line in mf %}
   {% if line contains "meta" and line contains "itemreviewed" %}
   {% elsif line contains "div" and line contains "http://schema.org/Product" %}
     {% assign skip_div = true %}
   {% elsif skip_div %}
     {% if line contains "/div" %}
       {% assign skip_div = false %}
     {% endif %}
   {% else %}
      {{ line }} 
   {% endif-%}
{% endfor %}
</div>
<script>
  var SPRCallbacks = {
    onProductLoad: function( e ) {
      $('[itemprop="itemreviewed"]').remove();
      $('[itemprop="itemReviewed"]').remove();  
    }
  }                
</script>

The one above Tim.

https://www.twolips.vip/products/bumpps-sebum-control-serum

tim
Shopify Expert
3258 232 1178

Ah, I see.

The code works as expected but the problem is that your structured data is output in JSON-LD format and  that solution is not for you, as I mentioned above.

 

(Though you have 2 JSON-LD records for product, one output by Smart SEO and another by FeedArmy 🙂

 

In your case, I guess it's better to remove the itemtype="http://schema.org/AggregateRating" and metas from the SPR elements, as Smart SEO pulls in this data anyway (and FeedArmy too).

The code can be like this I guess:

 

<div id="shopify-product-reviews" data-id="{{product.id}}">
{% assign mf = product.metafields.spr.reviews | newline_to_br | split: "<br />" %}
{% for line in mf %}
   {% if line contains "<meta" %}
{% elsif line contains 'itemtype="http://schema.org/AggregateRating"' %}
{{ line | remove: 'itemtype="http://schema.org/AggregateRating"' }} {% elsif line contains "div" and line contains "http://schema.org/Product" %} {% assign skip_div = true %} {% elsif skip_div %} {% if line contains "/div" %} {% assign skip_div = false %} {% endif %} {% else %} {{ line }} {% endif-%} {% endfor %} </div> <script> var SPRCallbacks = { onProductLoad: function( e ) { $('.spr-summary').attr('itemType','').find('meta').remove() } } </script>

 

 

Grant_Harrison
Shopify Partner
8 0 8

Thanks Tim for your valuable contributions.

 

Yes removed the Feedarmy script as I was just testing this output Vs the Smart SEO app - have implemented your updated script and new tests show no Errors.

Aircon-land
Tourist
3 0 3

@tim Hi Tim , thanks for your solution 

<div id="shopify-product-reviews" data-id="{{product.id}}">
{% assign mf = product.metafields.spr.reviews | newline_to_br | split: "<br />" %}
{% for line in mf %}
   {% if line contains "meta" and line contains "itemreviewed" %}
   {% elsif line contains "div" and line contains "http://schema.org/Product" %}
     {% assign skip_div = true %}
   {% elsif skip_div %}
     {% if line contains "/div" %}
       {% assign skip_div = false %}
     {% endif %}
   {% else %}
      {{ line }} 
   {% endif-%}
{% endfor %}
</div>
<script>
  var SPRCallbacks = {
    onProductLoad: function( e ) {
      $('[itemprop="itemreviewed"]').remove();
      $('[itemprop="itemReviewed"]').remove();  
    }
  }                
</script>

I tried this code, but now I have this error "Missing field 'name'" from Google. 

Any suggestions?

 

Tom_and_Juli
Explorer
52 0 15

I think this would be the way to do it for me. - I'm not using any SEO app like 'Smart SEO'. 

Still not sure if my theme (Boost) uses json-ld but think not as I can see the <div class="spr-summary" itemscope itemprop="aggregateRating" itemtype="http://schema.org/AggregateRating"> line in google's structured data testing tool.

 

Where in the (Shopify) code do I perform the adjustment? I don't see anything related in the product-template.liquid...

 

 


@tim wrote:

Ah, I see.

The code works as expected but the problem is that your structured data is output in JSON-LD format and  that solution is not for you, as I mentioned above.

 

(Though you have 2 JSON-LD records for product, one output by Smart SEO and another by FeedArmy 🙂

 

In your case, I guess it's better to remove the itemtype="http://schema.org/AggregateRating" and metas from the SPR elements, as Smart SEO pulls in this data anyway (and FeedArmy too).

The code can be like this I guess:

 

<div id="shopify-product-reviews" data-id="{{product.id}}">
{% assign mf = product.metafields.spr.reviews | newline_to_br | split: "<br />" %}
{% for line in mf %}
   {% if line contains "<meta" %}
{% elsif line contains 'itemtype="http://schema.org/AggregateRating"' %}
{{ line | remove: 'itemtype="http://schema.org/AggregateRating"' }} {% elsif line contains "div" and line contains "http://schema.org/Product" %} {% assign skip_div = true %} {% elsif skip_div %} {% if line contains "/div" %} {% assign skip_div = false %} {% endif %} {% else %} {{ line }} {% endif-%} {% endfor %} </div> <script> var SPRCallbacks = { onProductLoad: function( e ) { $('.spr-summary').attr('itemType','').find('meta').remove() } } </script>

 

 


 

tim
Shopify Expert
3258 232 1178

SmartSEO actually uses code similar to what I've shared.

The code you see in SDTT is output by reviews App and not an indication of what your theme does.

Boost seems to be using JSON-LD, can't tell where it's output (probably in product.liquid template) -- look for 

<script type="application/ld+json">

to find out.

 

To add review data to your JSON-LD, use the code snippet from my latest reply, plus you'd need to remove microdata formatting from SPR html. To do so:

1) remove {{ product.metafields.spr.reviews }} from the code you used to add reviews:

<div id="shopify-product-reviews" data-id="{{product.id}}">{{ product.metafields.spr.reviews }}</div>

So it becomes an empty div.

2)  Use the following code to remove microdata from the reviews html added by javascript

<script>
  // --tim: make Shopify Product Reviews remove all properties from their microdata markup as we use JSON-LD
  var SPRCallbacks = {
    onProductLoad: function( e ) {
      $('[itemprop="itemreviewed"]').remove();
      $('[itemprop="itemReviewed"]').remove();  
      $('.spr-container [itemprop]').removeAttr('itemtype').removeAttr('itemprop');
    },
    onReviewsLoad: function( e) {
     // debugger;
      $('.spr-container [itemprop]').removeAttr('itemtype').removeAttr('itemprop');
    }
  }                
</script>  

 

Tom_and_Juli
Explorer
52 0 15

I do see  <script type="application/json" data-product-json> on multiple places.

 

...I think the fix is too complicated for me + I'm not sure if I want it be done anyway. I'm afraid a future update would require again to 'adjust things back' or something like that.

 

I guess when they finally do update the app (I'm sending 'em an e-mail prompting them to do so) I will have to re-post my customer's reviews...

 

Thanks for all the help. If I absolutely need this I'll message you.

 

Tom

tim
Shopify Expert
3258 232 1178

Well, 

it does not have to be hard-coded -- it's possible to add a checkbox to theme configuration, like "Apply Tim's fix for Product reviews" 🙂

So you can always revert to original code by unchecking it.

 

I would not expect the fix quickly -- as I said, it's complicated.

However, even when fixed,  it may take weeks (rather months) for Google to validate the fix, unfortunately and your products will be penalised  untlil it's finished...

One shop where I've applied my fix about a month ago -- validation is "looking good", but still 10 pending out of 21!

AlexBudders
New Member
6 0 0

Hey, i'm having a very similar issue but I don't use the apps this post is mentioning.  Can someone look at the post I just made and help out if time is permitting?


Thanks in advance

Tom_and_Juli
Explorer
52 0 15

Oh, are you referring to this? https://help.shopify.com/en/themes/development/theme-editor/settings-schema

 

Interesting, I didn't know such thing was available.

 


@tim wrote:

Well, 

it does not have to be hard-coded -- it's possible to add a checkbox to theme configuration, like "Apply Tim's fix for Product reviews" 🙂

So you can always revert to original code by unchecking it.

 

I would not expect the fix quickly -- as I said, it's complicated.

However, even when fixed,  it may take weeks (rather months) for Google to validate the fix, unfortunately and your products will be penalised  untlil it's finished...

One shop where I've applied my fix about a month ago -- validation is "looking good", but still 10 pending out of 21!



was available.

alpy
Visitor
2 0 1
“priceValidUntil”, “aggregateRating”, “review”, “brand”, “url”, “sku”, “No global identifier provided” and “description”.
This is frustrating because except for “sku” and “global identifier” all other fields are filled in my product pages. Why is google search finding errors? Can someone help please? I am using Impulse theme. Store url is jeogem.com. Thanks.. 😕
Akshay_V
Shopify Partner
438 16 58

@alpy 

I have tested one product from the given link and I found that product meta has a total 28 warning error because it loads three times and some value they not able to get because it is not specified. It is a coding issue so if you want to solve it then please contact me on my email address because for this case I need to talk with you.

Reference Screenshot: 
https://prnt.sc/qb2oce
https://prnt.sc/qb2oh5
https://prnt.sc/qb2qhm

You can contact me on:
akshayvaghasiya84@gmail.com

Akshay Vaghasiya | Email: hello@lavitastic.com | Skype: akshayvaghasiya84
Want to modify theme or custom changes on store hire me.
If helpful then please Like and Accept Solution.
Buy me a coffee PayPal
bobbyn
Shopify Partner
4 0 1

Been seeing this issue for a client of mine and at closer inspection, when running to code through Google's structured data validation tool: https://search.google.com/structured-data/testing-tool/u/0/

 

Unsure if anyone else has proposed a recent'ish solution for these errors (in the 11+ pages for this thread), but here is my 2 cents...

 

When I see what Shopify is outputting, it's clear they are in a circular logic.  Our custom theme has "Product", for which "Aggregate Ratings" is a property of.  But then they make the mistake of adding "Item Reviewed".  Where "Product" is a property of... and... then we start the loop again...

 

In other words, this is what Shopify Outputs:

  • Aggregate Ratings
      • Offers (Missing... throws the error)
      • Aggregate Ratings
        • ...etc
    • Item Reviewed

The actual reference is https://schema.org/Product

 

So the structure should be:

  • Product
    • Offers
    • Name
    • Image
    • Description
    • Aggregate Ratings
    • etc...

I changed our customized theme to properly reflect this, but the hack/temporary workaround involved changing the default output.  The offending code from Shopify is (and note the inconsistency with single and double quotes):

 

  <div itemprop='itemReviewed' itemscope itemtype="http://schema.org/Product">
    <meta itemprop="name" content="<YOUR PRODUCT NAME/TITLE>">
  </div>

"http://schema.org/Product" should NOT be inside "aggregateRating".  That's a beginner's mistake.  How did this pass Code Review?

 

 

At any rate... once I identified the issue, I did two string replaces (so that when Shopify changes this, it won't break the code):

 

Locate where the output happens:

{{ product.metafields.spr.reviews }}

and change it to:

              {{ product.metafields.spr.reviews | replace: ' itemscope itemtype="http://schema.org/Product"', '' | replace: " itemprop='itemReviewed'", "" | replace: 'itemprop="name"', ''}}

 

Since there is no itemprop="review" for each review (because reviews are currently called as an AJAX call, which Googlebots does not make, we also get a warning for "The review field is recommended. Please provide a value if available.".



For accessing the Product Reviews themselves to do a proper output for the bots, I am still unsure how to get these as they are not accessible via API...  so.. still working on that...

Hobby-shop
Tourist
8 0 0

We are working too on SPR callbacks, but not news at the time. Follow your progress and will report about our

Hotcakes
Tourist
3 0 1

I've tried applying your code but GSC refuses to let me validate the fix.  I sure hope Shopify gets on to this sooner than later, but sometimes it feels like support is not their strong suit 😞

RicardLN
Visitor
2 0 0

Hi! I'm trying to update the Chema code on my homepage, my store is running on Impulse theme. How can I find the file that contains the home page Schema? I have looked into theme.liquid, header.liquid, and most other generic files, no luck so far...

 

RicardLN
Visitor
2 0 0

Hi Alpy! I'm also running on Impulse, and I'm trying to update the homepage's Schema. Do you know what file contains the code? I have looked into theme.liquid, header.liquid, and most other generic files, no luck so far...

 

EmmanuelFlossie
Shopify Partner
2953 221 710

The best option for you is to contact the Theme developer. As each theme is different not all suggestions are the same.

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?.
London_Decal
Visitor
2 0 1

We're the store that Tim helped on resolving this issue a few weeks back. It's taken a while for Google to crawl the URLs and validate the fix, but they've now all cleared with no errors.

 

I had a basic understanding of what the issue was, but am not experienced enough with coding to be able to fix it. Tim was a great help and explained what he was doing at every stage - if there's anyone else reading through this thread to seek help with this issue, I'd do yourself a favour, save time and hassle, and get Tim on it!

 

Screenshot below from Google Search Console, showing the errors creeping in. Tim worked his magic early November, and eventually the errors have all cleared once Google has re-crawled the links and verified the new coding.

Screenshot 2019-12-15 18.47.59.png

 

Tillmannk
Excursionist
10 0 3

Works great. Thanks Tim.

London_Decal
Visitor
2 0 1

Hi tim - just dropped you an email regarding this, we're looking for a bit of support in trying to resolve the issue on our store. Is this something you could help with?

SIKROX
Tourist
7 0 1
Ok. What would you suggest I do?

wandrr
Shopify Partner
17 0 6

Hi Damian. I actually recently contacted Shopify support about this issue. Shopify has already implemented a fix that now adheres to Google's new product schema requirements. 

 

1) Any new products you add to the store will have the fix automatically implemented (adds aggregateRating)

2) Any other products can be fixed easily: simply add a new review to each product experiencing the error. This works for both shopify's default review system as well as third-party apps like judge.me. 

 

After you have added new reviews to your affected products, submit for validation on google search console. 

 

Please note: It may take up to 30 days for google to validate. Also, the structured data test tends to lag behind, potentially still showing errors since this is a relatively new type of error.

 

Hope this helps! 

Head of Development at a Ecom Agency. Paradoxes are the beauty of humanity.
kristawr12
Visitor
1 0 0

How can we add a review to a product with no reviews?

tim
Shopify Expert
3258 232 1178

If your product has no reviews, than it's a warning only, nothing wrong with it.

Here the situation is different -- product has reviews, but the markup is done in a wrong way -- this is an error and should not be ignored.

 

@McGreals -- here is the updated javascript code, using mutationObserver to find when reviews are loaded. Use if assigning SPRCallbacks does not work for you because an App (like StampedIO) overwrites it:

            function watchSPR(mutations, observer) {
              for (m in mutations) {
                var mutation = mutations[m];
                if( mutation.type == "childList" && mutation.addedNodes.length ) {
                  // console.log(mutation.addedNodes);
                  var $m = $(mutation.addedNodes);
                  if( $m.find('.spr-header').length ) {
                    $('[itemprop="itemreviewed"]').remove();
                    $('[itemprop="itemReviewed"]').remove();
                    console.log('SPR Patched');                 
                    
                    setTimeout( function() {
                      observer.disconnect();
                      console.log('Detaching from SPR');
                    }, 1000);
                  } 
                }
              };
            }

            observer.observe(
              document.getElementById('shopify-product-reviews'), 
              {
                childList: true,
                subtree: true
              }
            );

 

Carolay_CO
Excursionist
24 0 4

Shopify was supposed to be for non-coders. If Shopify can't provide a website that can get error-free Google Search Console I might as well switch to WooCommerce. 

Hotcakes
Tourist
3 0 1

@Carolay_CO wrote:

Shopify was supposed to be for non-coders. If Shopify can't provide a website that can get error-free Google Search Console I might as well switch to WooCommerce. 



I can't recommend that.  Having only been experimenting with both platforms since last year, I can say without hesitation that dealing with WordPress is a cluster f* of epic proportions.  Particularly if you think you can get by without coding.