A Comprehensive Guide To Schema Markup For E-Commerce

18 minutes read
schema markup for e-commerce

As Search Engine Journal reported, Google’s John Mueller recently addressed some important questions about how schema markup is used by the search engine, and where to invest your efforts, in an office-hours hangout.

The question of how much schema markup impacts search is important for SEO, and especially for e-commerce, since things like product entities and review scores are so vital for marketplaces.

If you are in the e-commerce business, you are missing out on tremendous SEO value if you aren’t capitalizing on schema markup. I’d like to use this event as a jumping off point to talk about not only what Mueller clarified, but how best to implement schema on your site, so I put together the following guide to do just that.

Let’s get started.

What Burning SEO Questions Did John Mueller Just Answer?

When asked about the conflicting ways in which sites use schema markup, and “can they all be correct?” John Mueller had this to say:

“I think it’s something where you kind of have to look at the options that are available with schema.org markup and the options that we support for search…sometimes there are different ways of doing the same thing, sometimes there’s schema.org markup that we…accept but we don’t use it for anything within search… the validation tool will say it’s fine, but if we don’t use it for search then you’re spending time doing things that don’t really have an effect…[Look] at the search developer documentation, and [pick which ones]make sense for your individual pages. ”

When asked if he meant that there is no merit in using markup that doesn’t produce rich results (previously called rich snippets), he clarified:

“It’s not the case that you’ll see a really clear reaction based on [schema markup that doesn’t produce rich results]…Some people try to look ahead…and start implementing that ahead of time…maybe we will maybe we won’t…We don’t use it as a quality factor…but sometimes we can recognize entities better if you markup entities on a page…[If we’re given a really long query] that helps us to try to find more relevant results…but the most visible effect is really just the rich results.”

In short, what Mueller is saying is that schema markup helps in two areas:

  • The area where it has the most impact is in rich results. If you’re unaware, those are special displays in the search results, like star ratings, which can improve your click through rates from the search results.
  • Schema markup can also help you pull in more “long tail” traffic, searchers who may not have used the “right” queries but who are still looking for an entity that can be found on your page. Google is getting better and better every day at doing this without our help, but you can improve your chances of getting found if you supply this data.

But Mueller is also clarifying that schema markup isn’t a quality signal, meaning it isn’t going to improve your rankings for queries that it already understands you are relevant for. Google doesn’t decide if a site is “good” or not based on the use of schema markup. But it does help it understand your site better.

Mueller also made it clear that schema markup could at some point in the future be used for other things like virtual assistants, but stressed that this is uncertain, and that you should focus on what Google has explicitly said it uses schema markup for within their structured data guidelines.

With those insights in mind, I’d like to guide you through how best to prioritize and implement schema markup for maximal impact, and guide you through this process for that particularly complicated branch of websites we call the e-commerce marketplace.

With those insights in mind, I’d like to guide you through how best to prioritize and implement schema markup for maximal impact, and guide you through this process for that particularly complicated branch of websites we call the e-commerce marketplace.

Rich Results (Snippets) Are Your Top Priority. Here’s How To Implement Them.

Rich results make your search listing stand out and dramatically improve your click through rate. Clint Henderson, for example, laid out how rich results could improve click through rates by 30 percent:

Rating review and price

So, what do you need to do in order to make this happen?

Let’s start with product pages.


Nothing is more valuable for an e-commerce site than making sure their products have all the schema markup necessary to earn rich results in the SERPs. Google’s guidelines advise you to:

  • Use the markup for specific individual products, not categories or lists of products
  • Reviewer names need to be the actual name of a third-party person or team that reviewed the product.
  • Use the “name,” “image,” “price,” and “priceCurrency” to include your product information in the rich image viewer.
  • Use the above as well as the “availability” property for inclusion in the Related Items feature.

Now let’s get into the nitty gritty.

First things first, remember that all of the information in your markup will, ideally, show up in the rich result, so make sure they are written for humans, not machines. For example, the product name should be an actual name, not a model number, unless you believe the people looking for the product will specifically look for the model number (and even then it should be included with the product name, not in place of it).

Here is an example of the markup for a single product page, provided by Google. We’re going to go through this step by step:

markup for a single product

Line 1 tells Google that this markup is for a product. This is required. Don’t change anything here.

Line 2 tells Google the brand name for the product. Change out “ACME” for the product brand, and leave the rest alone. I’d like to stress here that this is the product brand, not your brand, if you are a marketplace and the two are different. Including the brand is recommended, but not strictly necessary.

Line 3 is the product name. This isn’t a recommendation, it’s a necessity. Change out “Executive Anvil” for the product name, and leave everything else alone.

Line 4 tells Google which image is associated with the product. This is recommended for general search and required for image search. Change out “anvil_executive.jpg” for product image URL. Change out “Executive Anvil logo” for a brief description of the product image. This image alt is used by search engines to identify what is in the image, but is also intended for use by the visually impaired, virtual assistants, and as an image substitute if the browser fails to load the image, so make sure the image alt is a worthy image substitute for human users. Google also stresses that the image should ideally be a clear product image, with no clutter, on a plain (white) background.

For the best results, Google also recommends including multiple images URLs, like this:

“image”: [

The aspect ratios 1×1, 4×3, and 16×9 are for different uses, such as thumbnail versus full screen.

Lines 5 through 8 are the product description. Change out the “Sleeker than…” text for your own product description, and leave the rest alone. There is no limit to the length of your product description, and the text that you enter here will display directly on your page. In other words, this is the product description that people will see when they are actually on your page. The schema markup merely clarifies for the search engines that this description should be associated with this product. Choose the length of this product description based on UX and SEO considerations external to schema markup itself. The meta description is still where you should be telling the search engines what to include in the SERP itself.

Line 9 is the manufacturer product number. This is optional. Include it if doing so works well with your existing backend and doesn’t require a lot of work, otherwise don’t make a hassle out of implementing this one unless you think human searchers will be looking for the product number.

Lines 10 through 13 are crucial. These tell the search engines what the product’s average review rating is. This is what puts the star ratings in the search results and has the most dramatic impact on click through rates. For the best chance of getting these start ratings in the search results and keeping them there, the star ratings should be based on an average left by actual customers. There are many plugins that can accomplish this for you, like WP Customer Reviews for WordPress and Shopify’s product reviews app. If you implement only one schema change to your site, this is the one you should make. I’m completely serious about that.

The values that need to be swapped out here are “4.4,” and “89.” These values should be supplied by variables that store actual user supplied review data. The text “stars, based on” and “reviews” text is included here for the user’s benefit, will be visible on the site, and can be replaced by alternative text if you choose.

Line 15 introduces the “Offer” section, which is closed off on line 27. Use this section to introduce the offer that is being made, which includes properties like the product price. While it’s not, strictly speaking, necessary, you should definitely include it.

“Regular Price [etc.]” here is optional text for the user’s benefit. You can put anything you want here (or anywhere else within your schema markup, for that matter).

Line 17 introduces the currency. Leave this alone if it’s in US dollars; otherwise replace “USD” with the appropriate three-letter ISO 4217 code.

Line 18 tells Google the price of your product to display in the search results. Swap out “119.99” for a variable storing the product’s actual price.

Lines 19 and 20 tell the search engines how long the price will be valid. The text “(Sale ends,” “5 November!” and “)” is all included for the user’s benefit. “2020-11-05” should be replaced by a variable storing the true expiration date. Note that “5 November!” acts like an anchor text for the “time” attribute, which is what the user will see, while “2020-11-05” is for the search engines and will not be visible for the user. Obviously these should list the same date.

Lines 21 through 23 establishes who the seller is. This isn’t strictly necessary, but if you are the seller and not the product brand, this is your opportunity to get your name into the structured data. “Executive Objects” should be swapped out for the seller name. “Available from:” is for the user’s benefit in this example. The “Executive Objects” text here would also be visible to the user.

Lines 24 and 25 tell the search engines what “condition” the product is in. This is optional and provided as an example of one of many things that could be included here. You can replace “UsedCondition” with “NewCondition” if the item is new. Other options are “DamagedCondition,” and “RefurbishedCondition.”As with the others, the black text here is included for the user’s benefit.

Line 26 is also optional and allows you to tell users about the product’s availability. Options are “Discontinued,” “InStock,” “InStoreOnly,” “LimitedAvailability,” “OnlineOnly,” “OutOfStock,” “PreOrder,” “PreSale,” and “SoldOut.” Again, the black text is for the users.

And that’s all there is to it! There are many other schema properties you can include, but these are the ones Google explicitly mentions, so these are the ones you should focus on, only implementing others if you are anticipating usage by search engines in the future, or if you want to maximize the ability for other crawlers to understand your sites for any of the myriad of other reasons it might be crawled.

Aggregator Page

Some tweaks to the standard product page will need to be made if, for example, you are listing several different variations on the same product from multiple sellers with multiple price points. This is typically referred to as a “aggregator page.”

Most of this will be the same. Take a look at Google’s example:

aggregator page

This example is fairly minimal, and it could be just as elaborate as the product example listed above if you wanted it to be.

The only important difference here is the inclusion of a “lowPrice” and “highPrice” on lines 11 and 12, and that line 10 is an “AggregateOffer” instead of just “Offer” as in the previous example. Swap out the value “119.99” for a variable storing the lowest available price, and “199.99” for the highest price.

It’s not shown here, but you can also include an “offerCount,” like this:

<span itemprop=”offerCount”>112</span> offers available

Where “112” should be swapped out for a variable that lists the number of offers, and “offers available” is an example of text you could include for the user’s benefit.

Everything else remains the same.

More On Reviews

We mentioned how dramatically important review markup is above. Getting star ratings into the SERPs will enhance your click through rates more than essentially anything else you can do with schema markup, so it’s worth devoting a section entirely to implementing reviews, even though the “Product” markup example above should ideally be enough.

Aggregate ratings are the most likely to get included in the SERPs, and for that reason they are the only ones we will cover here. Do not use “Critic reviews.” These are for publishers, not e-commerce marketplaces. You may consider using them on your blog if you’re doing actual product reviews there, but I wouldn’t not advise experimenting with this until after you start getting star reviews for your products.

Here is the example Google provides for an aggregate rating:

aggregator rating

Line 1 should be changed to read “schema.org/Product” unless you are actually a bookseller.

Lines 2 and 3 are product information, which can and should be expanded to include the product information we discussed above.

Line 6 uses the “ratingValue” property we already used above. Swap out “88” for your value.

Line 7 introduces the maximum possible score. This is important because it clarifies how many stars Google should be showing with less uncertainty. Swap out “100” for your maximum value, such as 5 for 5 stars.

Line 8 says how many ratings are being counted to form the aggregate score. Note that this is different from “reviewCount” which counts the number of actual reviews, as opposed to the number of star ratings, which won’t always be the same. Swap out “20” for your value here.

To maximize your chances of getting the star ratings included, Google mentions:

  • Aggregate ratings can be used for star ratings in SERPs and sometimes for answers in search results, but it’s important that this be an actual aggregate user review score, not a score provided by a single reviewer, or worse, a score provided by you.
  • The review should refer to a specific product as demonstrated in the “Product” example above. It should not refer to a list of products or a product category.
  • The reviews and ratings themselves should be immediately accessible to users, not just the search engines.
  • Google assumes your rating values are on a 5 point scale by default, which is the reason for the “bestRating” property if you aren’t on a five-star scale.

Non-Product Rich Result Opportunities

If you’ve been following us for a while, you know that we stress the value of content marketing as an avenue for growth both within and without the context of SEO. Product pages are certainly the highest priority for rich result schema markup, but the second priority is chasing rich results for your content marketing efforts. There are three types of content Google offers rich results for: articles, recipes, and videos. Recipes are too far removed from most discussions about e-commerce, so if you’re interested in that take a look at the Google developer page on the subject. Let’s talk about the other two.


Using appropriate article markup allows your article to be included in Google’s top stories carousel if it is selected, where it receives a much more prominent placement. It also allows your headline text to be included, and for images larger than the typical thumbnail to be displayed.

Here is Google’s provided example of article schema markup:

article schema markup

Don’t change anything from lines 1 to 6.

Line 7 tells Google what the canonical (“official”) URL of the page is. This is technically optional but you should include it. This avoid duplicate content issues in case of any URL parameters that might confuse which URL is the official version of the page. Swap out the google URL listed above for your own.

Use line 9 to tell Google the headline of the article. This is required and can’t exceed 110 characters. It must be the actual headline of the article.

Lines 10 to 14 are images for the article. At least one image is required, and it must be at least 1200 pixels across. Use original images if at all possible, not stock photos. The images have to represent the content of the article. Use all three aspect ratios if at all possible.

Line 15 is required and tells Google when the article was first published. Swap out “2015…[etc]” for the date and time. Verify it’s in compliance with schema’s DateTime DataType.

Lines 17 through 20 are required and tell the search engine who the author of the article is. You can replace “Person” with “Organization,” although “Person” would be our recommendation. Swap out “John Doe” for the author name.

Lines 21 to 27 specify the publisher. This is required. Change “Google” on line 23 to your company name, or your name as a publisher if it’s different from your company name. Change the “…logo.jpg” URL on line 26 to a URL for your company’s logo image (or your publisher logo if it’s different).

The description on line 29 is recommended. Use this like you would a meta description.

To get the full benefit, you will also need to comply with Google AMP specifications.


Video markup can also get you into carousels, as well as get extra information in the video search results and special badges that draw more attention.

Let’s take a look at Google’s AMP-compliant example:

Google's amp Compliant

Leave lines 1 through 4 alone.

Swap out “Title” for your video title on line 5.

Swap out “Video description” for a description of your video on line 6, and treat it like a meta description.

Swap out the URL on line 7 for a thumbnail image, so that Google doesn’t have to choose a thumbnail for you, allowing you to choose the thumbnail image that will capture the most attention. While this example only shows one thumbnail, you should really use all three images as in the example from the “article” section above.

Put the date and time in line 8 using the same format as discussed in the “article” section above.

Use the ISO 8601 format for the “duration” on line 9, which is the length of your video.

Swap out “Example Publisher” for your company name (or publishing name) on line 12.

Swap out the URL on line 15 for your logo’s URL.

Replace the URL on line 20 for the URL of the video itself (not the page it resides on).

Replace the URL on line 21 for your embed URL. This is a URL that points directly to a video player containing your video, as opposed to the raw file.This is recommended but not strictly necessary.

Replace the number on line 22 with a variable storing the number of views your video has.

All set!

Put the above to use and you will get most of the value that schema.org has to offer. There are other important things you can do with schema markup, such as providing actions, but those are a story for another day.

  • Manish Dudharejia is the founder and president of E2M - a full-service white label digital agency. E2M helps agencies scale their business by solving bandwidth/capacity problems when it comes to websites design, web development, eCommerce, SEO, and content writing. E2M has been helping agencies for 10 years and currently works with about 130 agencies across the U.S., Canada, UK, Ireland, and Australia.