Google JSON Review Snippet not validating - json

I'm using the following JSON to produce a review snippet:
<script type="application/ld+json">
{
"#context": "https://schema.org/",
"#type": "Review",
"name": "Great service from the start.",
"author": {
"#type": "Person",
"name": "Chris Tonich"
},
"reviewBody": "Very thorough...would highly recommend!",
"aggregateRating": {
"#type": "AggregateRating",
"ratingValue": "4.9",
"bestRating": "5",
"ratingCount": "110",
"itemReviewed": {
"#type": "Product",
"image": "https://www.homeintegrity.com.au/wp-content/uploads/2020/12/hi-new-logo2.jpg",
"name": "Pre-Purchase Building Inspections",
"priceRange": "$$",
"telephone": "08 8375 8130",
"address" :{
"#type": "PostalAddress",
"streetAddress": "PO Box 163",
"addressLocality": "Scarborough",
"addressRegion": "WA",
"postalCode": "6019",
"addressCountry": "AU"
}
}
}
}
</script>
The Google Rich Snippet Test says:
Why am I receiving the error when the Review contains aggregateRating which contains itemReviewed?
Why does it say I rated a Review rather than an Item?
Help appreciated.

Your structure is not according to the schema found on https://schema.org/
A Review must contain a field itemReviewed (or be embedded in the object, which is reviewed). (see examples at https://schema.org/Review)
A Review on the other hand must not contain an AggregateRating (see https://schema.org/AggregateRating), because an AggreateRating may only be a sub-node of a Brand, CreativeWork, Event, Offer, Organization, Place, Product, or Service. Note that these types may contain a Review too.
Your structure roughly is as follows:
Review "Great service from the start."
Author "Chris Tonich"
Aggregate rating "4.9"
Product "Pre-Purchase Building Inspections"
Address "6019 - ..."
What you probably want is something along the lines of:
LocalBusiness "Pre-Purchase Building Inspections"
Address "6019 - ..."
Review "Great service from the start."
Author "Chris Tonich"
Aggregate rating "4.9"

Related

Reservation (LodgingReservation) - Calendar showing different name/address (correct in GMail SmartCard)

We are using the Hotel Reservation Schema and all the information is showing correctly in the Gmail SmartCard view (top of email), however looking at the generated Calendar event, the name and address for the stay shown is not correct.
The Email Markup Tester Tool validates correctly.
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "LodgingReservation",
"reservationNumber": "12345",
"reservationStatus": "http://schema.org/Confirmed",
"underName": {
"#type": "Person",
"name": "Test Person"
},
"reservationFor": {
"#type": "LodgingBusiness",
"name": "The Property Name",
"address": {
"#type": "PostalAddress",
"streetAddress": "123 Fake Street",
"addressLocality": "Property City",
"addressRegion": "NC",
"postalCode": "28469",
"addressCountry": "US"
},
"telephone": "866-555-5555"
},
"checkinDate": "2022-09-24T16:00:00-08:00",
"checkoutDate": "2022-09-27T11:00:00-08:00",
"modifiedTime": "2022-09-19 09:09:04",
"modifyReservationUrl": "hxxps://valid.link.to.lodging.property"
}
</script>
Is there other markup that is needed in the email so the event that was automatically created from the email has the correct information (while maintaining it as a lodging reservation)?
Where does the calendar event name/address pull from by default? What is used for the "LodgingBusiness" schema on the website (not passed in the email) is not what is showing in the calendar event either.
Thanks.

"JSON-LD Missing ',' or ']' in array declaration." but the code is the same

I have a blog where we add Schema to each post and what works perfectly and is validated by the SDTT then breaks on a new blog despite the only things changing is the content. I feel like I have been staring at the same 20 lines for hours. Can anyone see what might be different between these two.
Working Structured Data:
<script type="application/ld+json">// <![CDATA[
{
"#context": "https://schema.org",
"#type": "NewsArticle",
"mainEntityOfPage": {
"#type": "WebPage",
"#id": "https://blog.realmanage.com/announcements/for-the-4th-time-in-five-years-realmanage-appears-on-the-inc.-5000"
},
"headline": "For the 4th time in Five Years, RealManage Appears on the Inc.5000",
"image": ["https://blog.realmanage.com/hubfs/Inc%20Announcement.png"
],
"datePublished": "2020-08-31T10:10:00+08:00",
"dateModified": "2020-08-28T02:24:00+08:00",
"author": {
"#type": "Person",
"name": "Amanda Causey"
},
"publisher": {
"#type": "Organization",
"name": "RealManage",
"logo": {
"#type": "ImageObject",
"url": "https://www.realmanage.com/hs-fs/hubfs/Logo/RealManage_Logo_1.png?width=1324&name=RealManage_Logo_1.png"
}
},
"description": "Inc. magazine today revealed that RealManage is No. 4646 on its annual Inc. 5000 list, the most prestigious ranking of the nation’s fastest-growing private companies. The list represents a unique look at the most successful companies within the American economy’s most dynamic segment—its independent small businesses. Intuit, Zappos, Under Armour, Microsoft, Patagonia, and many other well-known names gained their first national exposure as honorees on the Inc. 5000."
}
// ]]>
</script>
Non-working code:
<script type="application/ld+json">// <![CDATA[
{
"#context": "https://schema.org",
"#type": "NewsArticle",
"mainEntityOfPage": {
"#type": "WebPage",
"#id": "https://blog.realmanage.com/creating-a-maintenance-chart-for-your-association-realmanage"
},
"headline": "Creating a Maintenance Chart for Your Association - RealManage",
"image": [
"https://f.hubspotusercontent20.net/hubfs/1849073/AdobeStock_396601443.jpeg”
],
"datePublished": "2021-06-08T09:38:00+08:00",
"dateModified": "2021-06-08T09:38:00+08:00",
"author": {
"#type": "Person",
"name": "Katie Vaughan"
},
"publisher": {
"#type": "Organization",
"name": "RealManage",
"logo": {
"#type": "ImageObject",
"url": "https://www.realmanage.com/hs-fs/hubfs/Logo/RealManage_Logo_1.png"
}
},
"description": "When it comes down to who pays, the smallest dispute can blow into a neighborhood disaster.”
}
// ]]></script>
The problem is that the quote after 396601443.jpeg” is not a standard " but a ”, like those Microsoft Word uses to make a text nicer. And there's another one closer to the end, after "disaster".
Bt the way, you can paste the JSON here and validate it.

I am having an error in Json schema markup for Google indexing for SERP starts

I am setting up schema for rating stars to show up on google search results, I got this json script, It does not have any error when I test the code snippet, But shows an error :
Missing '}' or object member name.
<script type=application/ld+json>{
"#context": "https://schema.org/",
"#type": "Review",
"itemReviewed": {
"#type": "LocalBusiness",
"image": "https://www.rmsdrill.com/wp-content/uploads/2019/01/RMS-Logo-header.png",
"name": "Rms Drill",</p>
<p> "telephone": "(800) 605-1608",
"address" :{
"#type": "PostalAddress",</p>
<p> "addressLocality": "Dallas",
"addressRegion": "TX",
"postalCode": "75219",
"addressCountry": "US"
}
},
"reviewRating": {
"#type": "Rating",
"ratingValue": "4"
},
"name": "Working with Rober Strunks.",
"author": {
"#type": "Person",
"name": "Dr. Jason Kihle"
},
"reviewBody": "After just one season of working with Robert Strunks, it is absolutely clear that he is everything that you want in a professional marching band drill designer. In addition…",
"publisher": {
"#type": "Organization",
"name": "RMS Drill"
}
}</script>
In the future, use this: https://jsonformatter.curiousconcept.com/
{
"#context":"https://schema.org/",
"#type":"Review",
"itemReviewed":{
"#type":"LocalBusiness",
"image":"https://www.rmsdrill.com/wp-content/uploads/2019/01/RMS-Logo-header.png",
"name":"Rms Drill",
"telephone":"(800) 605-1608",
"address":{
"#type":"PostalAddress",
"addressLocality":"Dallas",
"addressRegion":"TX",
"postalCode":"75219",
"addressCountry":"US"
}
},
"reviewRating":{
"#type":"Rating",
"ratingValue":"4"
},
"name":"Working with Rober Strunks.",
"author":{
"#type":"Person",
"name":"Dr. Jason Kihle"
},
"reviewBody":"After just one season of working with Robert Strunks, it is absolutely clear that he is everything that you want in a professional marching band drill designer. In addition…",
"publisher":{
"#type":"Organization",
"name":"RMS Drill"
}
}

JSON-LD - Does using the `location` property the correct way to markup multiple business locations?

I am tasked to optimized our clients website using structured data (JSON-LD) to be search engine friendly. Our client's business has multiple locations and I am wondering if using the location property to structure the different business location is correct. Or should I just mark up each location separately?
Here is a sample code of what I did (although validating this using the Google structured data testing tool results in All good, I'm wondering if I am using the location property correctly)
Also, I remove some of the properties to make the code small and replace the values with generic values:
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "Attorney",
"name" : "Example Injury Lawyer",
"url": "http://example.com/",
"logo": "http://example.com/assets/images/logo.png",
"location": [{
"#type": "Attorney",
"#id": "http://example.com/offices/city-injury-lawyer",
"name": "Example Injury Lawyer",
"url": "http://example.com/offices/city-injury-lawyer",
"telephone": "+1-555-555-5555",
"address": {
"#type": "PostalAddress",
"streetAddress": "Street Address",
"addressLocality": "City",
"addressRegion": "Region",
"postalCode": "12345",
"addressCountry": "US"
}
}, {
"#type": "Attorney",
"#id": "http://example.com/offices/another-city-injury-lawyer",
"name": "Example Injury Lawyer",
"url": "http://example.com/offices/another-city-injury-lawyer",
"telephone": "+1-333-333-3333",
"address": {
"#type": "PostalAddress",
"streetAddress": "Street Address",
"addressLocality": "City",
"addressRegion": "Region",
"postalCode": "54321",
"addressCountry": "US"
}
}]
}
</script>
Google does not yet use location information to drive it's data.
The structured data it does use is here: https://developers.google.com/structured-data/
So if you are looking to add maps and the like to your search results then you need to submit directly to Google Maps and/or Google My Business. It wasn't until I did this that the maps for the website I worked in started showing up in SERPS and knowledge graph.
Saying all that, I'm firmly of the belief that the more data you can give Google the better and I'd imagine they will use it at some point (as you'd think a website would be able to definitely define its location better than Google Maps for example which anyone can contribute to ). Whether or how they will accept multiple businesses if/when they do that remains to be seen. So I'd leave your JSON-LD data as you have it and just check the structured data testing tool periodically and keep an eye on above link - both of which are good things to do anyway.

JSON-LD Create Single Review for Person

How would you go about creating a review for a person? For instance if a user, submitted a review that provided both a rating and an associated bit of information about a person's/service provider's quality of service... how should that be coded using JSON-LD? I think the code below is how you would correctly accomplish this but I'm not completely certain. If you have any suggestions, please include code with your input to provide maximum clarity.
Please keep in mind the code below is not for a page that lists all of the ratings but rather a single page that displays only this rating.
Person/Service Single Review:
<script type="application/ld+json">
{
"#context": "http://schema.org/",
"#type": "Review",
"itemReviewed": {
"#type": "Person",
"name": "John Smith", // Person being reviewd
},
"reviewRating": {
"#type": "Rating",
"bestRating": "5",
"ratingValue": "3",
"worstRating": "1"
}
"name": "Excellent Service!",
"author": {
"#type": "Person",
"name": "Bob Smith"
},
"reviewBody": "John provided excellent service!"
}
</script>
Ref: https://developers.google.com/structured-data/rich-snippets/reviews
Apart from the comment and two comma errors this is valid JSON-LD. I wouldn't expect this to show up as a rich snippet though. The page you referenced lists the entitz types for which reviews are supported: "We support reviews and ratings for a wide range of schema.org types, including businesses, products, and different creative works such as books or movies." If possible, I would thus associate the Review to a Service instead (the person can be made the provider of the service).
Here's the snippets with the two minor syntactic issues fixed:
<script type="application/ld+json">
{
"#context": "http://schema.org/",
"#type": "Review",
"itemReviewed": {
"#type": "Person",
"name": "John Smith"
},
"reviewRating": {
"#type": "Rating",
"bestRating": "5",
"ratingValue": "3",
"worstRating": "1"
},
"name": "Excellent Service!",
"author": {
"#type": "Person",
"name": "Bob Smith"
},
"reviewBody": "John provided excellent service!"
}
</script>