Structured Data for Shopify: The Definitive Guide [2019]

Structured Data for Shopify: The Definitive Guide [2019]

#1. A screenshot of a Google search results page, May 31, 2019

This is a rich result (aka a rich snippet). Rich results display more data than regular search results. For example, while regular results display only the title, the URL, and the meta description of a page, rich results can also display product ratings, price ranges, etc. (as shown in the screenshot above). Thus, rich results increase content viability which leads to higher click-through rates (CTR).

Since you’re here, you probably want Google (and other search engines) to display similar results for your Shopify store. To make this possible, you have to add structured data markup in your website’s HTML, which can be a hassle. For one thing, you need to be tech-savvy. For example, you need to be familiar with JSON-LD and JSON for that matter, HTML, schema.org markup (data types and properties), etc. For another, even if you are a skilled developer, you might find it difficult to define exactly what data types and properties to add to your Shopify store.

As Shopify experts, we are helping Shopify merchants add structured data to their store through our Smart SEO app and through our customization services on a daily basis. In this article, we are going to summarize our experience and share the knowledge we have gained. Today, we will talk about what structured data is and how you can implement it in your Shopify store. We will also discuss what schema.org types you should add to your Shopify website, i.e. what data types and properties you should add to your homepage, collection, product, blog and article pages.

After you read this guide, you will realize that implementing structured data, intimidating at first glance, can be quite straightforward as long as you have the right information.

Overview

What is structured data and how can it benefit you?

This is structured data markup:

#2. A screenshot of shop.vanillapup’s HTML, June 12, 2019.

Note: If you want to see the HTML of a page, you simply have to right click (anywhere on the page) and select the ‘View Page Source’ option from the drop-down menu.

And this is the result of adding structured data markup in a website’s HTML:

#3. A screenshot of a Google search results page, June 12, 2019

Structured data markup (schema.org markup) gives search engines more information about your website and its content. For example, in the context of e-commerce, structured data can give Google valuable information about your products (e.g. pricing, availability, rating, number of reviews, etc.). It can also give Google detailed information on your business (e.g. logo, address, contact information, connected social media pages, founders, subsidiaries, etc.).

Why is it important that Google has such information? In other words, how can structured data benefit you?

Structured data allows Google and other search engines and web systems to read and understand what your page is about. In this way, Google can present your products in a detailed and reliable manner. One important aspect of this is that Google uses structured data to create rich snippets. However, you should keep in mind that Google does not guarantee that you will receive a rich snippet even if your pages are marked up correctly. This is explicitly stated in Google’s Structured Data Guidelines:

In other words, if you add structured data markup to your website, Google is more likely to give you rich snippets and in most cases it does. Google can also use the structured data for your product pages to create automated product feeds for your Google Shopping Ads.

Now that we know what structured data is and why we should use it, let’s take a closer look at what you need to do before you implement it.

Before you implement structured data...

Before you add structured data to your website, you have to clearly define what are your main page types. For Shopify, the main page types are homepage, collection, product, blog, and an article page.

Once you know what types of pages you are dealing with you need to find the appropriate schema.org types to add to each page. For example, this is how the structured data looks for the product page. The product page should contain the Product type and the Review type.

#4. Source: schema.org, Example 1, JSON-LD

We are going to look at the specific schema.org types for each Shopify page later in this article. Let’s first tackle the markup to understand what it means.

As you can see from the above screenshot structured data consists of “types”, each type associated with a set of properties. For example, the Product type has productID, description, name, height, weight, mpn, etc. Types can contain other types. The Product type contains a set of Offer types. The Offer types are actually your product variants and contain properties like price, availability, etc.

The core vocabulary of schema.org currently consists of 614 Types, 906 Properties, and 114 Enumeration values.

Source: schema.org, see the full schema.org hierarchy

But we are only interested in a handful of them. Before we get to the actual types, let’s see what are the ways to implement structured data in your Shopify store.

How to implement structured data in your Shopify store?

There are three ways to add structured data in your website’s HTML:

  1. You can use an app like Smart SEO which automatically provides structured data to Google, and other search engines, in JSON-LD format. The app generates structured data for every product on your collection pages. Read more
  2. You can do it manually. You can use one of the following formats of structured data: Microdata, RDFa, or JSON-LD (JSON for Linking Data).
    Google recommends that all websites use JSON-LD. Here’s why: if you use JSON-LD, you don’t have to change your HTML code to indicate where structured data is, it is easy to add an update, and it is compatible with dynamic data. Read more
  3. You can work with a certified Shopify expert and outsource the task. We offer an SEO service which includes an SEO audit, structured data optimization, meta tags optimization, link optimization, and more. If you're interested in working with us, or want to learn more, do not hesitate to contact us. We'd be happy to be of help!

Note: There are a handful of apps on the Shopify app store which can add structured data to your store. We recommend that you use only one at a time because otherwise, you will end up with a mess of duplicate structured data. Also, unless you are familiar with HTML and liquid, we would not recommend option 2 because of the possibility of introducing errors to your page HTML which can hurt your Google rankings. Last but not least, before you begin the implementation of structured data, make sure that you read the Structured Data Guidelines by Google.

Now let’s take a closer look at the structured data types you need to add to the different Shopify pages.

What structured data markup to add to your Shopify homepage?

You should add two data types to your homepage: WebSite and Organization.

WebSite

Schema.org defines ‘WebSite’ as a set of related web pages that usually share the same domain. You have to include the following properties in the WebSite data type:

  • url - the URL of your website
  • id
  • target - “Indicates a target EntryPoint for an Action” (source: schema.org)
  • query-input - this is a text search deep link with -input that inlines “the resulting value of -input properties into action URLs”. Read more

Example I (“@type”: “Website”): oldtimeshoppe.com, structured data generated with Smart SEO

Example II (“@type”: “Website”): kabukithemes.com, structured data generated with Smart SEO

Example III (“@type”: “Website”): starsandstripeslighting.com

Organization

E.g. SportsOrganization, Corporation, LocalBusiness, BikeShop, BookStore, WorkersUnion, HardwareStore, etc. Note: The more specific your organization type is, the better. If you cannot find a specific organization type, or you are not a BikeShop or a BookStore, etc. then just use the Organization type. You have to include the following properties in the Organization data type:

  • name - the name of your website (or Shopify store)
  • url - the URL of your website
  • description - a description of your business (i.e. who you are, what you do, how your product or service benefits customers, etc.)
  • logo - the logo of your organization; Google Search displays this image in search results and in the Knowledge Graph. Read full definition


    Source: Google
  • image
  • sameAs - links to your social media profiles (Facebook Business page, Twitter profile, YouTube account, etc.)
  • address  (PostalAdress) - streetAdress (street and number), adressLocally (city), postalCode, adressCountry (country)

Example I (“@type”: “Organization”): oldtimeshoppe.com, structured data generated with Smart SEO

Example II (“@type”: “Organization”): starsandstripeslighting.com

Example III (“@type”: “Organization”): muttpack.com

What structured data markup to add to your Shopify product pages?

You should add the following data types to your product pages: Product, and Offer.

The Product type describes the product itself and the Offer type describes a variant with its price, sku, barcode, etc.  You need to have one Product type and one Offer type for each product variant. There needs to be at least one Offer type. If you do not have variants for your product, you will have the price, sku, barcode, etc. as properties of your product. These properties are added as a default variant in Shopify and you can use this variant to create your Offer type.

Product

Product data type (required properties):

  • name
  • image (ImageObject or URL of the product photo)

    Product data type (recommended properties):

    • productID
    • aggregateRating (average review score of the product)
    • brand
    • description
    • offers (product variants)
    • review
    • sku (stock keeping unit of the product)
    • gtin8 / gtin13 / gtin14 / mpn / isbn (global identifiers, or unique product identifiers, read more).
    It is important that you have all four attributes: productID, brand, mpn (Manufacturer Part Number, MPN), and gtin (Global Trade Item Number, GTIN). In this way, Google will more easily match search queries with your products. In Shopify, the GTIN is referred to as barcode and you can add it to your product variants. The GTIN is also your productID and can also serve as an MPN. Apps like Smart SEO output the barcode for the productID, gtin and the mpn properties.

      Offer

      Offer data type (required properties):

      • availability (e.g. InStock, OutOfStock)
      • price
      • priceCurrency

      Offer data type (recommended properties):

      • itemOffered
      • priceValidUntil (in ISO 8601 date format)
      • url (the URL of the product page)

      Examples (“@type”: “Product” & “@type”: “Offer”)

      Example I: muttpack.com

      This structured data markup is very detailed. The Product type contains not only the two required properties (name and image), but also the following recommended properties: brand, productID, sku, mpn, description, url, and itemCondition. The Offer type contains not only the three required properties (availability, price, and priceCurrency), but also the following properties: priceValidUntil, itemCondition, url, image, sku, and mpn.

      Example II: bareskincare.com, structured data generated with Smart SEO

      What structured data markup to add to your Shopify collection pages?

      The collection page should contain the CollectionPage type and also include one Product type with an Offer for each product present on the page. The Product type can contain offers for all variants but we believe that having just one offer for the default of the first variant is the best practice. Otherwise, the JSON-LD markup can become too big and slow your page load.

      The CollectionPage type should contain the following properties:

      • name - the name of the collection page
      • url - the URL of the collection page
      • description - description of the collection page
      • image - the main image of the collection page

      Example I (“@type”: “CollectionPage”): shop.vanillapup.com, structured data generated with Smart SEO

      What structured data markup to add to your Shopify blog page?

      You should add only one data type to your blog page - Blog, - and include the following properties in your blog markup:

      • about - a description of your blog (the subject of the blog (e.g. e-commerce, Shopify, your product or service, etc.), how can it help readers, etc.)
      • name - the name of your blog
      • url - the URL of your blog
      • keywords - the keywords you target, i.e. the keywords you optimize your content around

      The Blog type should contain a number of BlogPosting types. Each BlogPosting type is associated with an article or a publication. The BlogPosting type should contain the following properties:

      • headline
      • mainEntityOfPage - the canonical URL of the page
      • image (ImageObject)
      • url - the URL of the page
      • datePublished
      • dateModified
      • dateCreated
      • description - a description or an excerpt of the blog post
      • author
      • publisher
      • logo (publisher logo)
      • url (publisher URL)
      • name (publisher name)

          Example I ("@type": "Blog"): kabukithemes.com blog, structured data generated with Smart SEO

          Example II ("@type": "Blog"): tinytotsbabystore.com, structured data generated with Smart SEO

            What structured data markup to add to your Shopify article pages?

            Article pages in Shopify should have the Article type. The Article type should contain the following properties:

            • about - the subject of the article
            • headline - the headline of the article
            • mainEntityOfPage
            • image - the cover image of the article
            • url - URL of the article
            • dateModified
            • datePublished
            • dateCreated
            • description - a description or an excerpt of the article
            • articleBody - the body of the article
            • author
            • publisher
            • logo (publisher logo)
            • name (publisher name)

            Example I (“@type”: “Article”): muttpack.com

            This structured data markup is very detailed. It contains the following properties: id, url, mainEntityOfPage, name, author, publisher (publisher.name, publisher.logo, publisher.logo.url), headline, image (image width, image height, image url), datePublished, dateModified, description, and articleBody.

            Example II (“@type”: “Article”): twelvesilvertrees.com, structured data generated with Smart SEO

            So, we have already discussed what data types and properties you should add to your homepage, product, collection, blog, and article pages.

            But there is one more thing you have to do… you have to run tests and check if all your pages are marked up correctly. To do this, you can use Google’s Structured Data Testing Tool.

            I entered the following URL in the Enter a URL field: oldtimeshoppe.com. This is the result I got after I clicked on the “RUN TEST” button:

            You can expand any of the data types (Organization or WebSite) and see their properties. The Structured Data Testing Tool detects errors and gives you warnings (typically, these refer to recommended properties you could include in your markup).

            Wrap-up

            Implementing structured data will help search engines understand better what your website is about. It will also increase your chances of getting rich results, which, in turn, will increase user engagement and your CTR - all leading to more sales.

            Structured data is embedded through schemas - data types and properties organized in hierarchical order. To implement structured data, you can use an app that automatically adds structured data to your website. You can also implement structured data manually by using Microdata, RDFa, or JSON-LD. Google recommends JSON-LD.

            In Shopify, it is recommended that you add structured data to your homepage, product pages, collection pages, blog page, and article pages. Here is a brief overview of the data types and properties you should add to each of these pages:

            Page Data Types  Properties
            Homepage WebSite url, id, target, query-input
            Organization

            name, url, description, logo, image, sameAs, PostalAddress,

            Product pages Product Required: name, image
            Recommended: productID, aggregateRating, brand, description, offers, review, sku, unique product identifiers (gtin 8, gtin 13, gtin 14, mpn, isbn)
            Offer Required: availability, price, priceCurrency
            Recommended: priceValidUntil, url
            Collection pages CollectionPage name, url, description, image
            Blog page Blog about, name, url, keywords
            BlogPosting headline, mainEntityOfPage, image, url, datePublished, dateModified, dateCreated, description, author, publisher, logo (publisher logo), url (publisher url), name (publisher name)
            Article pages Article about, headline, mainEntityOfPage, image, url, datePublished, dateModified, dateCreated, description, article body, author, publisher, logo (publisher logo), name (publisher name)

             

            After you add structured data to your website, you have to check if your pages are marked up correctly. To do this, you can use Google’s Structured Data Testing Tool. Making sure that your pages are marked up correctly is the last step of implementing structured data.

            So… this is all from us. We realize that this is a lot of information to take in at once and you must have a lot of questions. We’re here to answer all of them! So, ask us anything that comes to mind!

            In addition, if you want us to do an SEO audit of your website and add structured data to it, you can either leave us a comment in the comments section below or contact us here.

              Resources

                1. Google Documentation: About Unique Product Identifiers, Article, Carousels, Logo, Product
                2. Google Guidelines: Structured Data Guidelines, Technical Guidelines, Webmaster Guidelines
                3. Schema.org: schema.org
                      Share

                      Leave a comment

                      • Radostina @ Sherpas Design

                        Hello, Mahiza!
                        Adding CollectionPage markup will give Google (and other search engines) more detailed information about your website. If there are no errors, this can only increase your chances of getting rich snippets. It cannot hurt your rankings in any way.
                        Regarding your question about the Vanillapup example: The collection page should contain the CollectionPage type and also include one Product type with an Offer for each product present on the page. In other words, if there are 10 products on the collection page, there should be 10 Product Types with an Offer.
                        Regarding the Parissa example, it appears that they have deleted their CollectionPage markup after the last time we updated the article (which was in June). We don’t know why they did this, but thank you for bringing our attention to it – we will remove the example from the article so that the content is up to date!
                        Best Regards,
                        Radostina from Sherpas Design

                      • Mahiza Moore

                        Hello! I really appreciate your article. I am inquiring about the CollectionPage markup specifically. Is it best practice to add this? I haven’t seen many others blog about the CollectionPage schema code- only really the product which got my curious. Have you seen results from this?

                        For the vanillapup example, i was a bit confused because you said one product and offer should go in the collection page schema but when going to the site and viewing the page source it looks like there were almost 234 products!

                        Also, the parissa example, when you view page source there isn’t any collectionpage schema which threw me off. Did they remove it because they didn’t see results from it?

                        Looking forward to hearing back from you

                        -Mahiza