I tried to add a schema.org article on a page but it is not validated by Google, maybe the problem is with the logo ?
<script type="application/ld+json">
{
"#context": "https://schema.org",
"#type": "Article",
"author": "Organization",
"name": "mywebsite",
"headline": "Pericolosità - DEFINIZIONE",
"image": [
"https://www.example.com/a.jpg"
],
"datePublished": "2021-04-09T04:00:00+00:00",
"dateModified": "2021-04-09T04:00:00+00:00",
"mainEntityOfPage": "https://www.example.com/article",
"publisher":{
"#type": "Organization",
"name":"mywebsite",
"url": "https://www.example.com/logo.jpg",
"logo": {
"#type": "imageObject",
"url": "https://www.example.com/logo.jpg"
}
}
}
</script>
For the publisher, you specified the URL property for the logo:
"publisher":{
"#type": "Organization",
"name":"mywebsite",
"url": "https://www.example.com/logo.jpg",
"logo": {
"#type": "imageObject",
"url": "https://www.example.com/logo.jpg"
}
}
However, it requires the URL of the publisher's website but not the logo.
In addition, the problem with a particular logo may be due to the wrong size or format, which you do not report. So check to see how your logo matches Google's Guidelines for Logo.
Related
A site is flagging up (Google Search Console) Unparsable structured data- Duplicate unique property.
It is highlighting #type": "AggregateOffer" but there is only one instance of #type": "AggregateOffer" on any page.
As well as #type": "AggregateOffer" there is "#type": "Offer" on each affected page.
Does Google regard #type": "AggregateOffer" and "#type": "Offer" as duplication?
"offers": {
"#type": "Offer",
"seller": {
"#type": "Organization",
"name": "Not real name"
},
"#type": "AggregateOffer",
"highPrice":714.32,
"lowPrice":449.12,
"priceCurrency": "GBP",
"availability": "https://schema.org/InStock"
I have reworked the above code and my schema now validates:
<script type="application/ld+json">
{
"#context": "https://schema.org",
"#type": "Product",
"productID": "47",
"url": "https://www.webeg.uk/cpscpsprep/acatalog/Engagement-Ring-47.html",
"image": "s-Engagement.jpg",
"description":"A stunning diamond ring for the future bride....",
"itemCondition":"New",
"name": "Engagement Ring",
"offers": {
"#type": "AggregateOffer",
"highPrice":410.00,
"lowPrice":390.00,
"priceCurrency": "GBP",
"availability": "https://schema.org/InStock",
"seller": {
"#type": "Organization",
"name": "Sample Company"
}
}
}
</script>
https://validator.schema.org/#url=https%3A%2F%2Fwww.webeg.uk%2Fcpscpsprep%2Facatalog%2FEngagement-Ring-47.html
So it seems the answer is that Google does not like #type": "AggregateOffer" and "#type": "Offer" in the same schema snippet!
Thank you.
I work for a website with 10000+ products and I decided to input the structured data dynamically via CSS selectors in GTM because doing it manually would be too time consuming. It all worked fine, but then I ran into some problems.
Firstly, the structured data added slashes to links that lead to a 404, like so:
"url": "https:\/\/example.com\/shop\/category\/subcategory\/product"
Secondly, the prices in my country are separated with a comma, and not a dot, so the rich results test returns an error. Is there a way to change this?
Full schema here.
<script type="application/ld+json"> {
"#context": "https://www.schema.org",
"#type": "product",
"sku": "{{sku}}",
"image": ["{{carousel-item active}}"],
"name": "{{product-title}}",
"description": "{{product-description}}",
"category": "{{category}}",
"brand": {
"#type": "brand",
"name": "BRAND",
"logo": "https://example.com/images/logo.png"
},
"offers": {
"#type": "Offer",
"itemCondition": "http://schema.org/NewCondition",
"availability": "http://schema.org/InStock",
"price": "{{price}}",
"priceValidUntil": "2021-11-11",
"priceCurrency": "HRK",
"url": "{{Page URL}}",
"shippingDetails": {
"#type": "OfferShippingDetails",
"shippingRate": {
"#type": "MonetaryAmount",
"value": "25",
"currency": "HRK"
},
"shippingDestination": {
"#type": "DefinedRegion",
"addressCountry": "HR"
},
"deliveryTime": {
"#type": "ShippingDeliveryTime",
"transitTime": {
"#type": "QuantitativeValue",
"minValue": "3",
"maxValue": "5"
},
"cutOffTime": "17:00-08:00",
"businessDays": {
"#type": "OpeningHoursSpecification",
"dayOfWeek": [
"https://schema.org/Monday",
"https://schema.org/Tuesday",
"https://schema.org/Wednesday",
"https://schema.org/Thursday",
"https://schema.org/Friday" ]
}
}
}
}
}
}
</script>
I am very new to this, so please be gentle.
P.S. All other parts of schema work fine.
I just created a translation of my website:
http://example.com (Original website)
http://fr.example.com (Translated Version)
I need to know the best way to schema-markup the homepages.
On Main Website (English Version), here is the markup I used:
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "Organization",
"#id": "https://website.com/#organization",
"name": "My Website",
"url": "http://example.com/",
"logo": "http://example.com/logo.png",
"contactPoint": {
"#type": "ContactPoint",
"telephone": "+2348157437268",
"contactType": "customer service"
},
"sameAs": [
"https://www.facebook.com/examplefb",
"https://twitter.com/exampletwitter",
"https://instagram.com/exampleig"
]
}
</script>
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "WebSite",
"#id": "http://example.com/#website",
"url": "http://example.com/",
"inLanguage": "en",
"publisher": {"#id": "http://example.com/#organization"}
}
</script>
Now my question is, on the french version homepage, I guess this what I should use:
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "WebSite",
"#id": "http://fr.example.com/#website",
"url": "http://fr.example.com/",
"inLanguage": "fr",
"publisher": {"#id": "https://website.com/#organization"}
}
</script>
But then,
should I leave the publisher as "#id": "http://example.com/#organization"? OR
should I copy the Organization Script tag into the french homepage also? OR
should I just copy the organization details and paste into "publisher" on the french page?
I'm open to corrections if my method/approach is wrong.
Thank You.
I've been working on this BlogPosting schema, and I run it through the Google testing tool and I keep seeing an error message at the very end:
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "BlogPosting",
"mainentityofpage": "https://www.northcountrylaw.com",
"headline": "14 Ways Json Can Improve Your SEO",
"alternativeHeadline": "and the women who love them",
"image": "http://example.com/image.jpg",
"award": "Best article ever written",
"editor": "John Doe",
"genre": "search engine optimization",
"keywords": "seo sales b2b",
"wordcount": "1120",
"Publisher": {
"#type": "Organization",
"name": "Cat's Meow",
"logo": {
"#type": "ImageObject",
"name": "Cats cats cats",
"width": "1024",
"height": "1024",
"url": "https://www.greatcats.png"
}
},
"url": "http://www.example.com",
"datePublished": "2015-09-20",
"dateCreated": "2015-09-20",
"dateModified": "2015-09-20",
"description": "We love to do stuff to help people and stuff",
"articleBody": "You can paste your entire post in here, and yes it can get really really long.",
"author": {
"#type": "Person",
"name": "kitten boots"
},
</script>
JSON-LD errors
You have four {, but only three }.
You have a , after the last }, but nothing follows.
So, you have to remove the comma and close the author:
"author": {
"#type": "Person",
"name": "kitten boots"
}
}
Schema.org errors
Schema.org terms are case-sensitive. It has to be:
publisher instead of Publisher
mainEntityOfPage instead of mainentityofpage
wordCount instead of wordcount
Google's email Markup Tester always fails with the error
"INVALID_OBJECT: orderStatus,http://schema.org/OrderStatusType"
I have tried with all there samples located on this page:
https://developers.google.com/gmail/markup/reference/order
Do we think its just a question of waiting for them to fix it?
example json:
<html>
<body>
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "Order",
"merchant": {
"#type": "Organization",
"name": "Amazon.com"
},
"orderNumber": "123-4567890-1234567",
"priceCurrency": "USD",
"price": "29.99",
"acceptedOffer": {
"#type": "Offer",
"itemOffered": {
"#type": "Product",
"name": "Google Chromecast"
},
"price": "29.99",
"priceCurrency": "USD",
"eligibleQuantity": {
"#type": "QuantitativeValue",
"value": "1"
}
},
"url": "https://www.amazon.ca/gp/css/summary/edit.html/orderID=123-4567890-1234567"
}
</script>
</body>
</html>
I had the same issue and fixed validation by adding:
"orderStatus" : "OrderDelivered",
I noticed using the following didn't work (even though it is how the Google Example in the documentation has it ):
"orderStatus": "http://schema.org/OrderStatus/OrderDelivered",
The problem is that Google is insisting that you provide a valid statusOrder key. The the following validates:
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "Order",
"merchant": {
"#type": "Organization",
"name": "Amazon.com"
},
"orderNumber": "123-4567890-1234567",
"priceCurrency": "USD",
"price": "29.99",
"acceptedOffer": {
"#type": "Offer",
"itemOffered": {
"#type": "Product",
"name": "Google Chromecast"
},
"price": "29.99",
"priceCurrency": "USD",
"eligibleQuantity": {
"#type": "QuantitativeValue",
"value": "1"
}
},
"orderStatus" : "OrderDelivered",
"url": "https://www.amazon.ca/gp/css/summary/edit.html/orderID=123-4567890-1234567"
}
</script>