It's been more than 4 months that our rich snippets suddenly disappeared, some error were reported in GWT, i corrected everything and errors are now decreasing (only 5 left). here is my code:
<section class="c-center" itemscope itemtype="http://schema.org/Product">
<div>
<h1><span itemprop="name">Product name</span> <span itemprop="brand" class="brand">Brand of product</span></h1>
<div id="reviews" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
<div class="rating">
<meta itemprop="ratingValue" content="4.8" />
<meta itemprop="ratingCount" content="56" />
<div class="fill" style="width:96%"></div>
<div class="stars"></div>
</div>
<div class="rating-info">
Based on 56 reviews - Write a review
</div>
</div>
</div>
<div id="img">
<img src="/link-to-image.jpg" alt="Img alt" itemprop="image" />
</div>
<div id="info">
<meta itemprop="url" content="site.com/link-of-product/">
<div id="price-container" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<meta itemprop="priceCurrency" content="EUR">
<meta itemprop="gtin13" content="1234567899999">
<span class="price" itemprop="price">19,95 €</span> <del>28,50 €</del> -
<span class="stock"><link itemprop="availability" href="http://schema.org/InStock">Available</span>
</div>
</div>
</section>
here are my questions:
1- is there anything wrong?
2- I've seen in many posts that currency should not be in the itemprop="price" but in google examples, they do include it! what should I do?
3- should I use ratingCount or reviewCount ?
4- some products exist in different sizes with different prices, is it recommended to include the AggregateOffer with lowest and highest price?
Thanks a lot
How does it appear visually?
The structured data linter shows a typical snippet which looks good and has star rating, and there are no errors in google's tool. Two things which stand out are:
url has no protocol, set to http://yoursite.com/page1 for
price should be number only, which could well be affecting search results, currency is a separate field so should not be embedded in price as well
use <meta> to give your price with a full stop as the separator, not the comma and put large values as 1234567.89 not 1,234,567.89 or 1.234.567,89 but display it as you would normally
price info from http://schema.org/
Use the priceCurrency property (with ISO 4217 codes e.g. "USD") instead of including ambiguous symbols such as '$' in the value.
Use '.' (Unicode 'FULL STOP' (U+002E)) rather than ',' to indicate a decimal point. Avoid using these symbols as a readability separator.
Note that both RDFa and Microdata syntax allow the use of a "content=" attribute for publishing simple machine-readable values alongside more human-friendly formatting.
Use values from 0123456789 (Unicode 'DIGIT ZERO' (U+0030) to 'DIGIT NINE' (U+0039)) rather than superficially similiar Unicode symbols.
google actually gives this example in its policies page
<span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">119.99</</span>
previous Offer price, you could include in <del> structured data for the expired Offer price, with priceValidUntil set to a date in the past, the current price can also have an expiry date.
consider setting itemCondition to http://schema.org/NewCondition
image urls - I've noticed that full url starting path rather than a relative path seem to be preferred - your /link-to-image.jpg is interpreted as http://example.com/link-to-image.jpg not http://site. com/link-to-image.jpg in the testing tool, I'm unsure if this is the same when testing direct from the URL but it seems best not to be amigous
lastly use a shopping search tool, including google shopping to search for a best seller, see if it can find it by price, brand, availability etc. if competitor sites appear first you can even check the structured data tester with their URL to see if you are missing anything
Related
I am building a web page that lists typical dishes for each individual country. Each dish is put in its own article and all of that goes fine. But I wonder if there is a way to link the Recipes to the country. Does it make sense to also specify the country with http://schema.org/Country, and if so how can I link that to the dishes?
I thought about defining the main as a country, and then using http://schema.org/additionalProperty but that doesn't seem to make sense as it expects a PropertyValue, which the recipes aren't.
<main>
<h1>France</h1>
<p>
<span class="capital" title="Capital">Paris</span>
<span class="member-since" title="Member of the EU since 1958">1958</span>
</p>
<article id="recipe-1" itemscope itemtype="http://schema.org/Recipe">
<h1>Éclairs</h1>
<!-- A lot of recipe-related stuff -->
</article>
<article id="recipe-2" itemscope itemtype="http://schema.org/Recipe">
<h1>Macaron</h1>
<!-- A lot of recipe-related stuff -->
</article>
<article id="recipe-3" itemscope itemtype="http://schema.org/Recipe">
<h1>Tarte Tatin</h1>
<!-- A lot of recipe-related stuff -->
</article>
</main>
You can provide the cuisine of a Recipe with its recipeCuisine property:
The cuisine of the recipe (for example, French or Ethiopian).
It expects a Text value.
There is also the locationCreated property, which expects a Place value (which includes Country), but it might be a stretch to use it in this context. Also it wouldn’t be clear if it refers to the location where the recipe is originally coming from, or to the location where the written form was created.
Schema.org doesn’t seem to offer a property to connect a Country and Recipe directly. But you could still connect the items via WebPage.
So for example, if you say WebPage about Country and WebPage mainEntity ItemList, and have each Recipe as itemListElement, there is at least some connection (a page about a specific country has a list of recipes as main content = the recipes are probably related to that country).
I use PrestaShop and I don’t want to change any of the core code. The core code allows for a price in Schema.org. My prices have a low price and discount amount also. Low price is from aggregate offer and discount is from order.
I get the error below:
The property order is not recognised by Google for an object of type Product
<link itemprop="discount" itemscope href="http://schema.org/Order"/>
&
<link itemprop="highPrice" itemscope href="http://schema.org/AggregateOffer"/>
<p class="our_price_display" itemprop="offers" itemscope itemtype="http://schema.org/Offer"><link itemprop="availability" href="http://schema.org/InStock"/><span id="our_price_display" itemprop="price">€ 0.75</span> <meta itemprop="priceCurrency" content="EUR" /></p><p id="reduction_percent" ><span id="reduction_percent_display" ><link itemprop="discount" itemscope href="http://schema.org/Order"/>25% Off </span>
</p><p id="reduction_amount" ><span id="reduction_amount_display">
</span></p><p id="old_price"><span id="old_price_display">
<link itemprop="highPrice" itemscope href="http://schema.org/AggregateOffer"/> € 1.00</span>
You can't just use the discount from Order for a Product (since a product is not an order...) is what Google is saying. Like the schema.org spec for Order says:
An order is a confirmation of a transaction (a receipt), which can contain multiple line items, each represented by an Offer that has been accepted by the customer.
I'm not aware of any other property like "discount" in Schema, maybe http://schema.org/PriceSpecification is sort of that direction?
My output of product schema look like this.
Shell I remove the html code from "meta itemprop="description" content=" or it must be plain text only?
<span itemscope itemtype="http://schema.org/Product">
<meta itemprop="url" content="http://www.testest.com/bo-clark-collection.html" >
<meta itemprop="name" content="Bo Clark Collection" >
<meta itemprop="productID" content="1194" >
<meta itemprop="description"
content="<html><body><div><p>Special eye-catcher: test.</p></body></html>" >
<span itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<meta itemprop="price" content="10,00 EUR" />
<meta itemprop="priceCurrency" content="EUR" />
<link itemprop="availability" href="http://schema.org/InStock" />
</span>
</span>
Microdata should be embedded in HTML, but tags with microdata in them can contain HTML. Description is a <meta> tag in your code though, so it does not need the HTML because it will never be displayed.
It looks like you are putting key structured data in non-visible tags, that's OK for currency, price, dates, but google states normally you should fit the microdata around your existing displayed data. The microdata can be in many different tags or block structures on the page, as long as they are nested under a single block structure (or a - but and seem most useful). Anything in HTML tags that don't have microdata will not cause problems - it just gets ignored when searching structured data.
Consider altering your code so the microdata is spread out, eg
<div itemscope itemtype="http://schema.org/Product">
<meta itemprop="url" content="http://example.com/sales" />
<h3 itemprop="name">Bo Clark Collection</h3>
<img src.... >
<strong>Product code:</strong><span itemprop="productID">1194</span> (in stock)<link itemprop="availability" href="http://schema.org/InStock">
<br>
<span itemprop="offers" itemscope itemtype="http://schema.org/Offer">Price: <span itemprop="price">10,00</span><span itemprop="priceCurrency">EUR</span></span>
<div itemprop="description">
<p>Special eye-catcher: the silver Guess Wordmark test test.</p>
<ul><li>Silver Guess Wordmark</li>
<li>Leather in Croco-Style</li>
<li>Inner lining Suede</li>
<li>Tailor-made cutouts for ports and camera</li>
<li>Color: <span itemprop="color">Black</span></li></ul>
</div>
</div>
One piece of microdata can be embedded within another, as I've done here with color (Black) which is also part of Description. It works well for list items. Price done as above follows the google example of price.
Yes.
You should only use plain text instead of html tags. Refer to the Product schema example at https://developers.google.com/structured-data/rich-snippets/products
Just write in following pattern:
<p itemprop="description">Special eye-catcher: the silver Guess Wordmark test test. Silver Guess Wordmark. Leather in Croco-Style. Inner lining Suede. Tailor-made cutouts for ports and camera. Color: Black</p>
It is recommended to use plain text in description as Google shows that description in plain text on their SERPs. In my view, Google only displays description in plain text rather than italic, bold or underlined fashion so using tags like , and are irrelevant here.
I'm working on a website for a friend (www.texasfriendlydds.com) and am trying to give them an edge with Rich Snippets that Google allegedly loves. It's a defensive driving school with 10 locations in the Austin area. I've placed the schema.org code within the address of each location, but while searching 'defensive driving austin' - I do not see any of the locations listed. I have 10 of the following code for each location(different address for each):
<div itemscope itemtype="http://schema.org/LocalBusiness">
<span itemprop="name">Texas Friendly Defensive Driving</span><br />
<div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="streetAddress">13201 Ranch Road 620</span><br />
<span itemprop="addressLocality">Austin</span> <span itemprop="addressRegion">TX</span> <span itemprop="postalCode">78750</span>
</div>
<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
<span itemprop="ratingValue">4.6</span> stars - based on <span itemprop="reviewCount">24</span> reviews
</div>
Free meal w/ <span itemprop="priceRange">$40 tuition</span><br /><br />
<meta itemprop="openingHours" content="Thursdays 3:30pm - 9:30pm"><b>Thursdays 3:30pm - 9:30pm</b><br />
</div>
In addition, at the bottom of the page, I aggregate all the reviews in attempt to get organic search rich snippet star-ratings to no avail. I've compared my code directly with the following site:
- http://www.microdatagenerator.com/aggregate-rating-schema-generator/
They were exactly the same (minus the values). You can find their snippets by Googling 'aggregate rating schema' and find the 2nd listing with rich snippet stars and 956 ratings. At one point I read that you need to show proof of your ratings, but this site doesn't do that and they have them.
I've used the Google Structured Data Testing Tool (https://developers.google.com/structured-data/testing-tool/) and everything comes out peachy. So why in the world am I not seeing any results from this?
We (Google) don't accept rich snippets for homepages; rich snippet annotations should be placed on leaf pages.
Any idea how to markup a floor number with schema.org microdata for a local business' postal address?
<div itemscope itemtype="http://schema.org/LocalBusiness">
<span itemprop="legalName">Company Limited</span>
<div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<div itemprop="streetAddress">Billy Street 100</div>
<div>10th Floor</div>
<div><span itemprop="addressLocality">Paris</span>,
<span itemprop="addressRegion">TX</span>
<span itemprop="postalCode">75462</span></div>
<div itemprop="addressCountry">United States</div>
</div>
</div>
Also, is the above markup semantic?
If there's no floor number, should I use RDFa?
Unfortunately, schema.org doesn't have a property for secondary address line, which is where the floor number would go. postOfficeBoxNumber is as close as it gets, but it looks like it's reserved specifically for PO Box numbers, not the whole line that contains PO Box.
Perhaps you could put floor number in streetAddress, on a new line using a <br> tag.
Although I know a lot about street addresses (I work at SmartyStreets), I'm not a microdata expert: but from what I can tell, yes, the markup looks okay to me.
And you could use RDFa instead if you'd like: Google supports it for its rich snippets. Or you could have some fun and extend schema.org for your needs.