Google says "Either "offers", "review", or "aggregateRating" should be specified"

From Google Search Console: "Either “offers”, “review”, or “aggregateRating” should be specified

Missing field “name”"

I’ve seen this issue elsewhere on here 5 times or so, but haven’t found a solution that works for me. If anyone has a clue it would be greatly appreciated.

Here is code from our product page template:


  

    

      

        {% if collection.previous_product %}
          {% capture prev_url %}{{ collection.previous_product }}{% endcapture %}
          {{ 'products.general.previous_product_html' | t | link_to: prev_url }}
          {% if collection.next_product %}  |  {% endif %}
        {% endif %}

        {% if collection.next_product %}
          {% capture next_url %}{{ collection.next_product }}{% endcapture %}
          {{ 'products.general.next_product_html' | t | link_to: next_url }}
        {% endif %}
      

      {% if section.settings.product_breadcrumb %}
        
          {{ 'general.breadcrumbs.home' | t }}
            /  
          
            {% if collection %}
              {{ collection.title }}
            {% else %}
              {{ collections.all.title }}
            {% endif %}
          
            /  
          {{ product.title }}
        

      {% endif %}
    

  

  {% comment %}Check to see if sidebar should be enabled{% endcomment %}
  {% if section.blocks.size > 0 %}
    {% assign sidebar = true %}
  {% else %}
    {% assign sidebar = false %}
  {% endif %}

  {% if sidebar %}
    {% include 'sidebar' %}
    
      

  {% else %}
    

      

  {% endif %}

  

  {% capture ssw_rich_snippet %}{% render 'ssw-widget-avg-rate-rich' %}{% endcapture %}
  {% unless ssw_rich_snippet contains 'Liquid error' %}
  {{ ssw_rich_snippet }}
  {% endunless %}

     {% if section.settings.product_images_position == 'left' %}
       

         {% include 'product-images' %}
        

     {% endif %}

     

      {% assign collection_handles = product.collections | map: 'handle' %}
      {% assign variant = product.selected_or_first_available_variant %}
      # {{ product.title }}
       
       {% capture the_snippet_review_avg %}{% include 'ssw-widget-avg-rate-profile' %}{% endcapture %}
       {% unless the_snippet_review_avg contains 'Liquid error' %}
       {{ the_snippet_review_avg }}
       {% endunless %}

      {% if settings.enable_shopify_product_badges %}
        
      {% endif %}

       {% if section.settings.display_vendor %}
          

            {{ product.vendor | link_to_vendor }}
          

       {% endif %}

      {% if variant.sku != blank and section.settings.display_sku %}
        

          {{ variant.sku }}
        

      {% endif %}

      {% unless collection_handles contains 'coming-soon' %}
        

          
          
          
          
          
          {% if variant.available == false %}{{ 'products.product.sold_out' | t }}{% endif %}
          
            
              {% if variant.price > 0 %}
                {{ variant.price | money }}
              {% else %}
                {{ settings.free_price_text }}
              {% endif %}
            
          
          
            {% if variant.price < variant.compare_at_price and variant.available %}
              {{ variant.compare_at_price | money }}
            {% endif %}
          
        

        {% include 'product-notify-me' %}
      {% endunless %}

      {% if section.settings.product_description_position == "top" %}
        {% if product.description != blank %}
         
           {{ product.description | split: '' | first }}
         

       {% endif %}
      {% endif %}

      {% unless collection_handles contains 'coming-soon' %}
        {% include 'product-form' with 'product' %}
      {% endunless %}

      {% if settings.enable_shopify_review_comments and settings.review_position == "top" %}
        {{ product.metafields.spr.reviews }}

      {% endif %}

      {% if section.settings.product_description_position == "bottom" %}
        {% if product.description != blank %}
         
          {{ product.description | split: '' | first }}
         

        {% endif %}
      {% endif %}

      {% if section.settings.display_collections or section.settings.display_tags or section.settings.display_type %}
       

---

      {% endif %}

       
         {% if section.settings.display_collections %}
           

             {{ 'products.product.collections' | t }}:
             
              {% for col in product.collections %}
                {{ col.title }}{% unless forloop.last %},{% endunless %}
              {% endfor %}
            
          

         {% endif %}

         {% if section.settings.display_tags %}
            

              {% for tag in product.tags %}
                {% if forloop.first %}
                  {{ 'products.product.tags' | t }}:
                {% endif %}

                {% unless tag contains 'meta-' %}
                  
                    {{ tag }}{% unless forloop.last %},{% endunless %}
                  
                {% endunless %}
              {% endfor %}
            

         {% endif %}

        {% if section.settings.display_type %}
           

             {{ 'products.product.product_types' | t }}:
             {{ product.type | link_to_type }}
           

        {% endif %}
       

        {% comment %} 
        {% include "social-buttons" with "product" %}
        {% endcomment %}
        
        {% capture the_snippet_share %}
        {% include 'ssw-widget-share-links' with 1 %}
        {% endcapture %}
        {% unless the_snippet_share contains 'Liquid error' %}
        {{ the_snippet_share }}
        {% endunless %}
        
        

---

        
        {% capture the_snippet_comment %}{% include 'ssw-widget-comment' %}{% endcapture %}
        {% unless the_snippet_comment contains 'Liquid error' %}
            {{ the_snippet_comment }}
        {% endunless %}
    

      
    

    {% if section.settings.product_images_position == 'right' %}
      
        {% include 'product-images' %}
      

    {% endif %}
  

  {% if product.description contains ""  %}
    

    

      

        {{ product.description | split: '' | last }}
      

    

  {% endif %}
  

  {% if settings.enable_shopify_review_comments and settings.review_position == "bottom" %}
    {{ product.metafields.spr.reviews }}

  {% endif %}
      
      {% capture the_snippet_reviews %}{% include 'socialshopwave-widget-recommends' with 1 %}{% endcapture %}
      {% unless the_snippet_reviews contains 'Liquid error' %}
      {{ the_snippet_reviews }}
      {% endunless %}

  {% if section.settings.display_related_products %}
    {% capture limit %}{{ section.settings.products_per_row | plus: 1 }}{% endcapture %}

    {% if collection and collection.all_products_count > 1 %}
      {% assign col = collection.handle %}
    {% else %}
      {% assign col = product.collections.last.handle %}
    {% endif %}

    {% for tag in product.tags %}
      {% if tag contains 'meta-related-collection-' %}
        {% assign related_collection_handle = tag | remove: 'meta-related-collection-' %}
        {% if collections[related_collection_handle].all_products_count > 0 %}
          {% assign col = related_collection_handle %}
          {% assign collection = collections[col] %}
          {% capture limit %}{{ collection.products_count | plus: 1 }}{% endcapture %}
        {% endif %}
      {% endif %}
    {% endfor %}

    {% if col and collections[col].all_products_count > 0 %}
      {% if collections[col].all_products_count != 1 or collections[col].products.first.id != product.id %}
        

        

        #### {{ 'products.product.related_items' | t }}

        {% assign skip_product = product %}
        {% assign products = collections[col].products %}
        {% assign products_per_row = section.settings.products_per_row %}
        {% include 'product-loop', sidebar: sidebar %}
      {% endif %}
    {% endif %}
  {% endif %}

{% include "easydisqus" %}

{% schema %}

What’s does this bit output?

{% capture ssw_rich_snippet %}{% render 'ssw-widget-avg-rate-rich' %}{% endcapture %}
  {% unless ssw_rich_snippet contains 'Liquid error' %}
  {{ ssw_rich_snippet }}
  {% endunless %}

Based on a skim read of the Liquid, I would have expected aggregate rating to be output there. So could be worth starting in this area? I googled “ssw-widget” and it seems related to SocialShopWave app for reviews? What happens when no reviews present for a given product on that app? Is the app installed? Is that where you are wanting to pull reivew data from?