So one of the questions I asked John Mueller in a Google Hangouts recently was –
Is it possible to have FAQ page mark-up and product review ratings simultaneously?
Or something like that. It is a genuine question as development resource has to go into getting structured data applied in complex content management systems, and that resource has a cost associated with it.
John wasn’t too sure, so told me to go and test that out which is what I have done in the post. Though I’ll briefly go into the pre-text behind some research that I’ve seen before from Brodie Clark where he had posted a screenshot before where he noted down a before and after of a page with FAQPage Schema and Product Schema:
So it looked like at some point that you could have both star ratings and FAQs showing; you can see that changed at some point – with Brodie speculating that this change occurred during the Google Review Snippet update:
In a weird way (weird because Google’s Rich Results Tool says otherwise), this sort of confirms that you can’t have both star ratings and FAQs showing in the search results at the same time.
Or does it?
If you work on or are in the hotel industry for organic search purposes, you’ll see that Booking.com has a pretty comprehensive set of structured data showing in the search results – all the way from price ranges, product ratings to FAQs:
Via Google’s Structured Data Tool you can see they have all of the structured data schema – all below in working order:
I can only assume that because Google groups the Hotel schema along with the AggregateRating, they are able to get the best of both worlds (both FAQs and star ratings) – as from what I’ve tested, you can only have one or the other – and not both – as per the screenshots from Brodie Clark above when it comes to Product schema and FAQPage mark-up.
Hotel schema:
<script type="application/ld+json"> { "aggregateRating" : { "@type" : "AggregateRating", "reviewCount" : 2229, "ratingValue" : 8.7, "bestRating" : 10 }, "@type" : "Hotel", "hasMap" : "https://maps.googleapis.com/maps/api/staticmap?markers=color:blue%7c53.4822848,-2.2581330¢er=53.4822848,-2.2581330&sensor=false&zoom=15&size=1600x1200&client=gme-booking&channel=booking-frontend&signature=fH2w7_eEb1JuZ0_W2Px9IkpmOhg=", "@context" : "http://schema.org", "url" : "https://www.booking.com/hotel/gb/the-ainscow.en-gb.html", "address" : { "addressCountry" : "UK", "addressLocality" : "Trinity Way", "streetAddress" : "Trinity Way, Manchester City Centre, Manchester, M3 5EN, United Kingdom", "@type" : "PostalAddress", "postalCode" : "M3 5EN", "addressRegion" : "Greater Manchester" }, "description" : "The Ainscow Hotel, BW Premier Collection is set next to Salford Central Railway Station and just 10 minutes’ walk from Manchester’s lively centre and the...", "name" : "The Ainscow Hotel, BW Premier Collection", "priceRange" : "Prices for upcoming dates start at £50 per night (We Price Match)", "image" : "https://r-ak.bstatic.com/images/hotel/max500/136/136869675.jpg" } </script>
Another example of it working through AutoRental schema
Off the back of this post, I put this up on Twitter and got a few good responses. Peter Mindhall, for example, found me an example of it working through AutoRental schema mark up for this particular website:
I am now testing this out to see if this has an actual impact on the original test page that I setup, so there might be tweaks or ways round to getting this to show.
<script type='application/ld+json'> { "@context": "http://schema.org/", "@type": "AutoRental", "currenciesAccepted": ["EUR","GBP","USD","AED","ARS","AUD","AZN","BDT","BGN","BHD","BRL","CAD","CHF","CLP","CNY","COP","CRC","CZK","DKK","EGP","FJD","GTQ","HKD","IDR","ILS","INR","ISK","JOD","JPY","KES","KRW","KWD","LKR","MAD","MKD","MMK","MOP","MXN","MYR","NAD","NGN","NOK","NZD","OMR","PHP","PKR","PLN","QAR","RON","RSD","RUB","SAR","SEK","SGD","THB","TRY","TWD","TZS","UAH","VND","ZAR"] , "faxNumber": "", "telephone": "(39) 02-715123", "alternateName": "Avis Europe Corporate", "mainEntityOfPage": "", "name": "AVIS", "address": "Milano Linate Aeroporto, Milan, 20090", "areaServed": "Milan", "branchCode": "", "contactPoint": "", "email": "", "globalLocationNumber": "", "geo": { "@type": "GeoCoordinates", "latitude": "45.461746", "longitude": "9.279697" }, "legalName": "AVIS", "location": { "@type": "Place", "name": "Milan Linate" } , "paymentAccepted": ["Visa", "Master Card", "Discover", "Amex"], "priceRange": "", "sameAs": "", "taxID": "", "vatID": "", "openingHours": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"], "logo" : "https://ct-supplierimage.imgix.net/car/avis.pdf?w=1024" , "image" : "https://ct-supplierimage.imgix.net/car/avis.pdf?w=1024", "url" : "https://www.italianairportguide.com/lin/avis-car-hire-milan-linate.htm" ,"aggregateRating":{"@type": "AggregateRating", "ratingValue": "5.8", "bestRating" : "10", "reviewCount": "4294","worstRating":"0"} } </script>
Testing Product Schema and FAQ Schema
So from the example Brodie shared, we know that you can’t have both these schema types showing, but I thought I’d test this out for myself – along with moving around and re-ordering where I put the mark-up within the HTML.
For this particular test I originally had FAQPage schema mark-up on one of my already existing blog pages from December 2018 – though had obviously added the schema back in June or July when FAQpage became available for use on Google as a snippet enhancement. I simply added product schema to the page and submitted the page to Google and Google decided to prioritise the product schema over the FAQPage schema:
You can see from the screenshot below that both the FAQ and Product schema validate:
However, again, only one of the schema could show at a time, which was the product schema over the FAQ schema.
I had a few theories as to why this would be the case – and my theory is that Google will process whichever of the schema mark-ups come up first in the HTML (presumably reading from top to bottom). I had positioned the product schema above the FAQ schema, hence why I believe Google displayed the star ratings over the FAQpage schema mark up.
Update [09/10/2019]: Google seems to prioritise the Product Schema regardless of position within the HTML.
Here’s effectively what I used on the page at the time when the star ratings were displaying:
Product schema:
<footer class="reviews__footer" itemscope="" itemtype="http://schema.org/Product"><meta content="datastudio" itemprop="name"> <div class="reviews__score" itemprop="aggregateRating" itemscope="" itemtype="http://schema.org/AggregateRating"><div class="reviews__information"> <div class="reviews__value" itemprop="ratingValue">4.6/5</div> <div> Based on <span itemprop="reviewCount">10</span> reviews.
FAQPage schema:
<script type="application/ld+json">{ "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{ "@type": "Question", "name": "Am I still able to pull data by day from Google Search Console? ", "acceptedAnswer": { "@type": "Answer", "text": "In short, the answer is yes. Google Data Studio gives you this ability." } }, { "@type": "Question", "name": "Can I pull data by device type?", "acceptedAnswer": { "@type": "Answer", "text": "Yes, you can add this as a breakdown dimension which will allow you to pull data over time by all three device types - Mobile, Desktop, and Tablet." } }, { "@type": "Question", "name": "Does Mr Jonathan Jones likes to play with FAQPage mark-up?", "acceptedAnswer": { "@type": "Answer", "text": "You guessed it; he does." } }, { "@type": "Question", "name": "Does FAQ page mark-up still show with pure JSON-LD?", "acceptedAnswer": { "@type": "Answer", "text": "Let's find out?" } }, { "@type": "Question", "name": "What's better - JSON-LD or Microdata format?", "acceptedAnswer": { "@type": "Answer", "text":"IMHO JSON-LD is a lot more forgiving, but at times it can play with the existing javascript on the page!"} }] }</script>
I am keen to test out the hotel schema mark-up next – seeing as that seems to work regarding ratings and FAQ in combination – though I do find it odd how Google have disabled it for one type of schema and allowed it on another. It may be due to the fact that the star ratings and FAQ combination is more logical for the hotel industry, whereas having that ability everywhere else might be considered a lot harder to manage/control.
FAQs
Is it possible to have Product schema and FAQpage schema in combination showing on Google?
- It’s now no longer possible to have product schema and FAQPage schema in combination showing on your search listing
Is it still possible for other types of schema to show star ratings + FAQPage schema?
- It’s still possible to to have hotel schema and autorental schema (w/ aggregaterating), along with FAQPage schema showing on your search listing
How does Google prioritise the schema on the page? (whether that’s FAQPage or Product schema)
Google will prioritise the schema it shows from where it is positioned in the HTML (presumably reading from top to bottom) – likely if the ‘mainEntityOfPage’ is not defined- Google will prioritise the Product Schema over the FAQPage Schema (from showing in the SERPs). A few tests I’ve done now show this – and also based on feedback I’ve received (thank you!)
Hi Jonathan
you might find this FAQPage Generator that I built to be useful when you want to quickly add FAQPage schema to a page. https://saijogeorge.com/json-ld-schema-generator/faq/
Thanks Saijo – I have used the generator you created there before and have recommended it to others. 🙂
Thanks mate 🙂
It’s likely Google chooses a ‘mainEntityOfPage’ out of 1 of the top level entities on a page if you don’t specify which of the top level entities is the ‘mainEntityOfPage’. You can read more about that here: http://www.seoskeptic.com/how-to-use-schema-org-v2-0s-mainentityofpage-property/
Thanks Jarno – very interesting read. Interesting on the point of ‘mainEntityOfPage’ – as you could still have all the other structured data on the page and specify with this what you’d like shown in the SERPs as a priority. Will have to go give a test/go.
I’ll have to see how that can be applied to JSON-LD as I used a mix of microdata and JSON-LD in the test.
I think Google is going to give regard to the schema mark up that comes first.
Yup, that’s what I’ve found in my tests. Generally, it’ll go with whatever comes first.
I tested this last week trying to get my head around it. What I found was position of the json on the page had nothing to do with what shows. In my case Google always defaulted to showing the product ratings. I have a site with pages that review an individual product. They are not agregrated ratings. What I have done in the interim is to randomize either ratings or Faq. As I want to see what works best re ctr. What I will be doing moving forward is to apply FAQ to pages where I know I rank page… Read more »
Thanks for the information Neale.
I have actually got a test going currently and it seems to be switching from one schema to the other – which is obviously quite odd. So you’re right, it may not be a rule per se on what shows up first.
Looking like google has either rolled back the change or fixed a mistake 🙂 Search for Chaos 1 Tent Review “no Quotes” My gut says it will only work on pages that have been indexed in the last x days. I noticed while loading new pages and forcing google to index them. On older pages it is still hit n miss. probably depending on when they where last indexed.
Interesting – I can see you are using a different type of review rating:
“reviewRating”:{
“@type”:”Rating”,
“ratingValue”:”4.3″,
“bestRating”:5
},
“author”:{
“@type”:”Person”,
“name”:”Neale”
Think that might be the reason why? Though I take it you’ve said you have only seen this work recently…
I’m now keen to test your setup! 🙂
Yep It started to work again around the 18th. Any chance you will be in Chiang Mai next month for the SEO conference?
Hi Neale, unfortunately not! I’m based out in London so tend to go to the local conferences hosted here in the UK. Though I wouldn’t mind a little excuse for a little trip to Thailand! 🙂
[…] Jones explored this in a recent post on his blog, which I would recommend checking […]
Kudos for such an informative post!
Another example of a website having the best of both world (Product & FAQ) – https://www.google.com/search?q=site%3Ahttps%3A%2F%2Fwww.skyscanner.net%2Froutes%2Fcsha%2Fbjsa%2Fshanghai-to-beijing.html&rlz=1C1GCEA_enSG800SG800&oq=site%3Ahttps%3A%2F%2Fwww.skyscanner.net%2Froutes%2Fcsha%2Fbjsa%2Fshanghai-to-beijing.html&aqs=chrome..69i57j69i58.814j0j4&sourceid=chrome&ie=UTF-8
Thanks Martin.
Weirdly I’m not seeing it for that page, though as you say they have both the schema mark up implemented.
I am seeing price, but no FAQs.
Hi.
What happens now? Is it still possible now? Trying hotel schema and autorental schema with rating, nothig is working
You can still combine CreativeWorkSeries/Hotel with FAQPage.