Product Schema Markup for E-Commerce Explained

About the author

Tilen ledic - SEO expert
+ posts

An SEO expert specializing in Schema markup and EEAT, help simplify the complex world of SEO to businesses around the world.


In e-commerce, be it a click, scroll, or time spent on your page—is a step toward a potential conversion. If you want your products to stand out, not just with the name but with a bunch of other details such as price, availability, reviews, and even an image, all neatly displayed in the search results, you need product schema markup.

Schema, or structured data, written in a format understood by search engines, doesn’t only enhance visibility but also provides a rich snippet of information that can be the deciding factor for increased click-through and more conversions on your end.

I will try to explain the product schema as simply as I can so most of you can understand it and send those instructions to developers, who will implement it successfully.

Product Schema Markup: A Step-by-Step Guide

Let’s build together a product schema markup example step by step. We’ll use a product named “Eco-Friendly Bamboo Cutting Board” as an example, incorporating key properties and following Google guidelines, which suggest including “shippingDetails” and return policy.

product schema - name, image, description, sku, mpn and brand

Basic product schema markup fields

We initiate our schema by integrating the basic Product Identification and Type with @type: “Product”. This declaration tells search engines, “Hey, we’re showcasing a product here.” By doing this, we guarantee that search engines will comprehend and categorize our content appropriately.

Next, let’s discuss the Name: “Eco-Friendly Bamboo Cutting Board”. It’s crucial that this name is not only accurate but also aligns with what we communicate on the webpage to avert any confusion.

For Image, we’ll link a URL that directs to an image of our product, essentially our product’s profile picture. If the product has multiple images, make sure to include them all.

In the Description field, “Our Eco-Friendly Bamboo Cutting Board is made…”, we typically extract text from our product’s meta description.

Next, we incorporate unique identifiers – SKU and MPN, assigning “101100000237” and “BAMBOO123” to them, respectively.

NOTE:  MPN, or Manufacturer Part Number, can be identical to the SKU.

Lastly, for this segment, let’s delve into Brand: { @type: “Brand”, name: “MyWebShop” }. If you are a producer, your webshop represents your products’ brand. If you’re selling Adidas shoes, then Adidas represents the brand.

The ‘Offers’ Section of the Product Schema Markup

Now that we’ve covered the basics, let’s delve into a crucial part of our product schema: ‘Offers‘. This section communicates to search engines various aspects related to the pricing, availability, and purchase conditions of our product.

We begin by defining the type “Offer”, informing Google and other search engines that the ensuing details pertain to the product’s offer specifics.

Next, we define the priceCurrency as “USD” and price as “29.99”, declaring that our cutting board is available for 29.99 US dollars. Ensuring clarity and accuracy here is paramount to avoid discrepancies between the search results and our webpage.

Moving on, priceValidUntil: “2024-12-31” informs customers that they can secure our bamboo cutting board at this price until the end of 2024. While not a mandatory field, it can be useful for seasonal products or sales.

Let’s discuss availability: “http://schema.org/InStock”. Here, we announce whether our product is in stock, out of stock, or available for pre-order.

TIP: Here you can utilize various ItemAvailability statuses like "InStock", "OutOfStock", or "PreOrder", depending on your product status, to manage customer expectations directly from the search results.

Finally, itemCondition: “http://schema.org/NewCondition” allows us to convey the condition of our product. If you’re selling something used or refurbished, this URL would end in “UsedCondition” or “RefurbishedCondition” instead, ensuring transparency and effectively managing customer expectations.

Shipping Details and Return Policy are optional but important longterm

When we add “@type”: “OfferShippingDetails” to our product schema markup , we give a “heads up” to the search engines that we’re about to lay down the details about our shipping offer. On the other hand “MerchantReturnPolicy” tells search engines how we handle our product returns.

Shipping details product schema markup

Google began supporting ShippingDetails schema markup in 2020, though it wasn’t visible in search engine results pages (SERPs) initially. Currently, Google is fervently promoting these enhancements to be visible in SERP results. While it is live in the US, there are plans to expand to other countries in the near future.

shipping details return policy enhancements in serp

Now as we know How shipping detials can enhance our product visibility we might consider implementing it & this is how you do it:

We start by tagging our section with “@type”: “OfferShippingDetails” as we mentioned above.

We countinue by adding shippingRate to our Shipping offer:

shippingRate product schema markup field

This conveys to our customers that we have a shipping rate of 5 US dollars, providing a simple and straightforward message, ensuring no hidden fees or surprises for our shoppers. If your store offers free shipping, structure your product schema markup as follows:

shippingRate  free shipping product schema markup example

Next up, defining our shippingDestination:

This section is vital for international shops or products with shipping restrictions. By specifying “US” as the address country, we make it clear that we ship to the United States, averting potential confusion and managing expectations.

Moving on to deliveryTime, which is slightly more detailed:

In this part, the handlingTime informs customers that we dispatch the product within 0 to 1 day. Simultaneously, the transitTime reveals that once shipped, the product will take between 1 and 7 days to arrive. Maintaining accurate and realistic timeframes ensures we sustain customer trust and satisfaction.

Return policy product schema markup

As we touched upon earlier, utilizing “@type”: “MerchantReturnPolicy” signals to search engines that we’re delving into our return policy details, which we’ll elucidate further.

Return policy product schema markup

The entry, applicableCountry: “US”, explicitly states that this return policy applies to purchases made in the United States. If you’re shipping internationally, ensure your return policy is transparent and applicable across all relevant countries.

Subsequently, we explore returnPolicyCategory: “https://schema.org/MerchantReturnFiniteReturnWindow”. Despite its seemingly complex nature, it conveys a simple message to search engines: our return window possesses a definitive start and end. In simpler terms, it indicates a specific timeframe for customer returns, a detail we’ll elaborate on in forthcoming segments.

One such detail involves merchantReturnDays, which specifies the duration customers have to determine if our bamboo cutting board fits their needs—in this case, an entire month.

Furthermore, returnMethod: “https://schema.org/ReturnByMail” communicates that returns will be processed via mail, ensuring transparency and mitigating potential confusion regarding return initiations.

Lastly, returnFees: “https://schema.org/FreeReturn” reassures customers that should they opt to return their product, it will be at our expense, void of hidden fees or unexpected postage costs.

TIP: Alternatives to FreeReturn could include specifying OriginalShippingFees, RestockingFees, ReturnFeesCustomerResponsibility, and ReturnShippingFees.
Adding Reviews and Ratings in Our Product Schema

Adding Reviews and Ratings in Our Product Schema

The ensuing section is pivotal in our product schema as we could activate a review-rich snippet in our search result. This not only enhances our product’s visibility on the SERP but also conveys to Google the exact number of ratings we have, identifies our reviewers, and elucidates their feedback.

Beginning with the ‘Review‘ section: Here, we spotlight specific feedback from customers, like Alex M., who declares it’s “Perfect for my kitchen!” and describes it as sturdy and eco-friendly in the reviewBody. Jordan K. also conveys that the cutting board showcases “Excellent quality and perfect size.”

Both reviews incorporate datePublished, indicating when Alex and Jordan offered their insights.

AggregateRating serves as a comprehensive score of our product according to customer feedback. Here, our cutting board boasts a ratingValue of “5” and a bestRating of “5”, signifying top-tier customer satisfaction! The ratingCount informs us that 75 individuals have provided their rating, illustrating that it’s not merely a handful of people who deem it excellent—it’s a substantial number 🙂

Final rich result test

As with everything, you need to test your final outcome and this is how it looks like when tested threw Google rich results.

Hope you enyoed my post and learned something new! I wrote also similar post about person schema markup you might like as well.

Leave a Comment