Google Search Consoles Products Enhancements Report

The New Products Enhancements Report in the Google Search Console has got a lot of folk worried about whether their product structured data is in good shape. Here we provide some tips on how to use the report as well as list the common warnings and errors it and other tools report. We explain what the issues mean and how to deal with them in your structured data.

BigCommerce Rich Results App

For our BigCommerce customers, we have also explained how our upcoming Rich Results App for Stencil handles the issues. Please Contact Us if you would like notifying when the app is available, or if you have requirements/features/ideas.

How to view the Products Report

  1. Login to your Google Search Console
  2. Select your active site
  3. Click on the "Products" menu in the sidebar
  4. Highlight the appropriate graph options to show more
  5. Select a row to see more details

The Products Enhancements Report lets you dig down to see which individual URLs contain any issues. And selecting a single URL will show you the pages HTML and where the issue occurred.

Google Search Consoles URL Inspection Tool showing the Products report

Product Reports in the URL Inspection Tool

The URL Inspection Tool also includes Product structured data information. You can get there via the normal routes (see the list) as well as from the spy glass next to the URL in the Products report. Here you can see all the products structured data properties as well as any errors or warnings. A good place to check if Google is indexing what you want.

  • URL Inspection in the Side bar
  • Search box at the top
  • In report tables where you see the spy glass

Test Live URL

The URL Inspection Tool contains a "Test Live URL" button (top right). This not only shows you how Googlebot would see your page now, but it also provides a live report on your Product's structured data.

This is a massive step forward from using the Structured Data Testing Tool:

  • It's based on Googlebot itself
  • It supports page rendering (JavaScript)
  • It uses Googlebot smartphone if you have gone mobile first
  • It provides the rendered HTML

This is something we love. It will make testing product structured data so much faster, and more accurate.

It does not support inline editing like the Structured Data Testing Tool, but you can copy its HTML into the tool so you can test on rendered structured data. This is invaluable if you generate Structured Data via JavaScript (Warning about using JavaScript).

Why do you want to use Product Structured Data

Some of Google's Rich Snippets use Structured Data on your pages. Some of the most valuable ones are Product based Review Stars, its Price, and if it is In Stock. Gaining these rich snippets makes you stand out in the search results, which increases the chance of you being noticed, and visited. Which means more sales.

Search result with product rich snippets

How To mark up a Product with Structured Data

That's too deep for this article. I suggest you read the following:

BigCommerce Notes

For Blueprint users we have our own Product markup guide. For Stencil users we are working on an app. Please Contact Us if you would like notifying when the app is available, or if you have requirements/features/ideas. If you can't wait, we also have a BigCommerce Rich Snippet package for Blueprint and Stencil.

Common issues and how to fix them

Here are some issues we often encounter when implementing and testing our product structured data. Many come from the Structured Data Testing Tool, and we have now added more from the Product Enhancement Report. We will add more as we find them. Please comment if you know any.

Including aggregateRating When There Are No Reviews Or Ratings

aggregateRating messages
Error Rating value is out of rangeUsually a number between 0-5 (not zero though). Check with your worstRating and bestRating values if present.
Error Value in property "reviewCount" must be positiveIt's quite difficult to have less than zero reviews.
Error Either "ratingCount" or "reviewCount" should be specifiedOne of these fields is required for an AggregateRating. Ratings are scores, reviews are comments.
One of ratingCount or reviewCount must be providedNeed at least one rating or review. You should not add aggregateRating if there are no ratings or reviews.
Error Missing value in field "ratingValue"Usually a number between 0-5 (not zero though). Often happens when there are no ratings.
Field ratingValue may not be emptyOften due to a product having no ratings, this should usually be a value between 0-5 (not zero)

Solution

Remove aggregateRating for all products that don't have reviews or ratings, this will typically clear these errors up.

General Notes

If using JavaScript (on the client-side) to remove aggregateRating, be aware that Google sometimes crawls without executing JavaScript, in these instances a percentage of products may appear with some of the errors listed above - see HERE for more info

BigCommerce Notes

In Blueprint our solution has to use JavaScript to fix this, so may suffer from intermittent errors reported. Our Rich Results App for Stencil does not include aggregateRating for products that have no reviews, this is done server-side so no Google Search Console errors occur.

Including Duplicate Properties

Duplicate Properties messages
Only one aggregate rating should be marked upstructured data on the page declares 2 aggregateRating properties.

Solution

Make sure there is only one version of structured data on the page and that properties aren't duplicated. JavaScript can be used to remove unnecessary structured data but this technique can suffer from this issue. Ideally the unnecessary structured data would be removed permanently and a single source of structured data remain.

General Notes

This often occurs when a 3rd party review system that applies its own structured data, sometimes duplicating a platform's default efforts. Often these can be merged using itemref (for microdata) or matching id's (for JSON-LD), but it can be tricky when the review system is a JavaScript widget and if markup is in multiple formats.

BigCommerce Notes

We have developed solutions for Yotpo and Stamped.io. If there is the demand we will integrate more.

Not Including an Offer, Review or aggregateRating

Messages
Error Either "offers", "review", or "aggregateRating" should be specifiedThis is a requirement of Google's Product structured data.

Solution

Ensure that all Product entities have either an Offer, Review or aggregateRating. No rich results are available without these entities. However, it may still be worth marking up other product details even if you see warnings and errors like this. They are only Google Rich Result errors, but the structured data may be used for other things.

Missing Price

Missing Price messages
One of price or priceSpecification must be providedPrice is a required property of an Offer and must adhere to schema.org guidelines. priceSpecification isn't mentioned in Google's Rich Snippet guidelines but rather, their Merchant Centre guidelines.

Solution

Make sure you have a numeric value in the price property of your Offer (no currency symbol). If there isn't a price for this product, you'll need to remove the Offer (you must then have aggregateRating or Review) for the structured data to be valid.

Including the Price Currency Symbol/Token in the Price Property

Price Currency Symbol Messages
Warning Invalid price format in property "price" or The property $X is not a valid price specificationOften the currency symbol/token is included "$, £, € etc.." in the price property. This field should be numeric and not include the currency symbol.

Solution

Ensure that the price is numeric. If this is not possible server-side, JavaScript can be used to strip price of any non-numeric characters (or add a clean content attribute), this can lead to intermittent errors appearing in the Search Console reports - see HERE for more info

BigCommerce Notes

Our Rich Results App only includes the numeric price. Both Blueprint and Stencil have variables that contain only the numeric price (Blueprint: %%GLOBAL_RawProductPrice%%, Stencil: {{product.price.with_tax.value}} or {{product.price.without_tax.value}}.

Missing Price Currency Property

Missing Price Currency Messages
Warning Missing field "priceCurrency"Required field in "Offer", the currency used in three-letter ISO 4217 format.

Solution

Ensure the priceCurrency property is included in the Offer, e.g. USD, AUD, GBP etc.

General Notes

If changing currencies based on user's location, be aware that Google always crawls from the United States so will likely crawl and display your prices in USD. This can also cause issues with the Google Merchant Centre as what the Merchant Centre bot sees (content and structured data) must match up with the values in the product feeds you are using.

Missing the Brand Name

Missing Brand Messages
Missing: nameOften a result of a product not being associated with a Brand. We remove the brand property in these cases.
Warning Missing field "brand"Optional field, if you can, this field should be associated with the product's brand name.

Solution

If there is no brand associated with a product, ensure the brand property is not present. If not possible to do server-side, JavaScript can be used to remove the incomplete brand property however this may cause intermittent errors in the Search Console reports - more info

General Notes

Often people add http://schema.org/Brand here or an entity type "Thing" (as per Google's example). We find it best to keep it simple and just enter a brand property with text as per Google's guidlines (not example). This works best with the old Structured Data report in the Google Search Console as it shows in the brand column of the table.

Other Warnings/Errors

Note that many errors and warnings are Google specific, and often related to Rich Snippet requirements. The general specification is much more lenient.

Messages
The X field is recommended. Please provide a value if available.Often where X is priceRange, priceValidUntil, url (for Offer), brand, gtin8, gtin12, gtin13, gtin14, mpn, isbn properties - Not all of these properties need to be specified so most of these warning can be ignored. We suspect some may be to help the Merchant Centre in the future.
InStock (The property availability is not recognized by Google for an object of type Product.)availability is a property of an Offer, not a Product
A value for the X field is requiredSometimes this is due to a required field left out, other times it is a deficiency of the SDTT, an example of this is for a non-AMP BlogPosting where the error occurs for publisher however it is not a required (or even recommended) property.
Invalid itemCondition and availability propertiesThere are a strict set of values these can be. Often theme developers make up the values or don't test all cases.
A value for the item field is required. or The value provided for item.id must be a valid URLOften the last ListItem in a BreadcrumbList due to the markup including the current page item which is incorrect.
Multiple reviews should be accompanied by an aggregate ratingBy definition, multiple review ratings mean there is, or should be, an AggregateRating
The property priceSpecification is not recognized by Google for an object of type Productprice is a property of an offer, not a Product
Missing: authorOften a result of a review having no author (a required property), we add "Anonymous" as the author if this occurs.
Warning Missing field "sku"Optional field, if you have a valid unique sku add it here
Warning Missing field "priceValidUntil"Optional field, not particularly helpful for most BigCommerce customers
Warning Missing field "url"Optional field, usually reported in "Offer" entity
Warning Missing product IDWe're looking into this at the moment, not in Google's specs, likely something to do with Facebook or Merchant Centre requirements.
Warning Missing field "aggregateRating"If you don't have rating/reviews, then this isn't applicable
Warning Missing field "review"While not required, if you have reviews, they can be added here. Marking up your reviews may help Google to trust you more.
Warning Missing field "description"Optional field, the product description is added here. We recommend adding it.
Warning Missing field "image"Actually required field for product, 1 or more Image URL's
Warning Missing field "availability" Required field of "Offer", InStock, OutOfStock schema entities
Warning Missing field "gtin8, gtin12, gtin13, gtin14, mpn, isbn"Optional fields, various types of identifiers. May be related to the Google Merchant Centre
Warning Missing field "lowPrice"An AggregateOffer needs to define its lowPrice and priceCurrency to comply with Googles requirements for a Shopping aggregator page

Intermittent Errors in Search Console caused by JavaScript Modifications after Page Loaded

Creating Structured Data is always best done before the page is sent to the user i.e. server-side. Sometimes, due to platform restrictions, this is impossible and modifications to the structured data must be done via JavaScript after the page has been loaded. Good examples of this are where a product has no associated brand, review or the format of properties such as price, currency or dates are incorrect and need correction. In most cases, Google executes the JavaScript (renders the page) and the structured data is seen correctly. There are a few instances where Google does not "see" these changes:

  • Google performs an un-rendered page crawl and indexing without executing JavaScript
  • A JavaScript error on the page causes your structured data not to be modified
  • JavaScript uses features not supported by Googlebot
  • Page loads too slowly and the JavaScript is not executed by the time Google analyses the structured data

In the case of Google performing un-rendered crawls you will see intermittent and/or transient errors appearing in your Google Search Console Reports. Rendering takes up more Google resources so they often do an initial un-rendered index and come back later (even weeks later) to complete the crawl. In this period Google will not see any JavaScript based fixes. Google talked about the crawl process and rendering at Google I/O in 2018 (More info).

Depending on the severity and scope of the issue, you may want to ignore these or fix them by shifting all structured data code server-side.

Don't add Structured Data via the Google Tag Manager (GTM)

Agencies and SEOs quite often use the Google Tag Manager to modify websites, including adding structured data. John Mueller from Google has said several times that this extra complication should be avoided, and I'm sure it's partly to do with the above issue.

Rich Results Performance Report

One last tip before I go. The Rich Results Performance Report is a great way to monitor how well your structured data is doing at getting those rich results to show up in search results. This is hoping you see a nice upward trend after our advice.

Google Search Consoles Rich Results Performance Report