Integrating Shopify, Google Merchant Center, and JSON-LD for SEO in order to effortlessly run product ads

Google provides a lot of options for Shopify merchants to advertise their products. Unfortunately, the this can get confusing especially if you only wanted to buy basic ads for your Shopify products.

Google Shopping, Google Merchant Center, Adwords, Product Listing Ads, Sponsored Ads, data feeds, microdata, JSON-LD… oh my.

The jargon goes on and on.

This guide will attempt to show you how you can combine everything so your Shopify products are sent to Google Adwords in order to buy advertising and make sales.

There are three major steps involved:

  1. Sending the product data from Shopify to Google
  2. Updating the product data
  3. Creating and running ads on the products

I’ll cover steps one and two here because that’s the most confusing and difficult for Shopify stores. Once the data is into Google, running ads are easy.

But first, let’s introduce the characters.

Shopify’s Google Shopping App

Shopify has a free app called Google Shopping that you’ll want to get started with.

This app will take all of your Shopify products, create a data feed of them, and send them to Google using an API (Google Content API). The end result is that Google gets copies of your Shopify product data.

Google Merchant Center / Google Shopping

This system by Google lets you manage the product data for your store. It’s filled by Shopify’s app but there are other ways to get data into it also.

Think of it as the Webmaster Tools or Search Console but for your product data.

JSON-LD for SEO

JSON-LD for SEO creates the structured data for each of your products in your Shopify store. It’s primarly used to get Rich Snippets but the structured data is also used by Google Merchant Center as part of the Automatic Product Updates (Google automatically tracks product prices and availability).

1. Sending the product data to Google

The first step is to get your product data into Google using Shopify’s Google Shopping app.

Shopify’s app does a pretty good job of getting the products into Google Merchant Center but sometimes there are inconsistencies between the data Shopify sends, the data Google receives, and the data Google requires.

I recommend doing a quick scan through the products listed in Google Merchant Center to make sure the data is correct. You’ll probably need to run the publishing process multiple times and correct any issues that come up.

You’ll also want to publish any new products you add to your store and re-publish any products that have ad any significant updates.

2. Updating products

Once the import succeeds you might need to tweak the data to make sure it’s in Google Merchant Center correctly.

Note: One thing I have noticed is that Shopify doesn’t update Google instantaneously. It almost seems like Shopify is sending the new data feed to Google once per day so there might be periods where it’s out of sync.

Once your products are in though, you’ll want to try to enable Automatic Item Updates.

What this does is to use Google’s crawling programs to automatically update the price and availability of the products as the crawler loads the pages.

Normally Google will rely on the data feed for this but if there is an inconsistently between the data feed and the data they find on the page, they’ll flag that product with an error. That could stop ads on the product or potentially pause your account as a whole.

With Automatic Item Updates, Google will rely more on the data their crawler finds on your product pages. Since those pages come from Shopify, they should be fresher than the data feed coming from Shopify’s app (whose data can be delayed).

One downside to Automatic Item Updates is that you’ll need to have near-perfect microdata on your product pages.

Even with my app JSON-LD for SEO, you still need all of the Product structured data to be valid and with all of the data Google wants. Unlike Google Search and Rich Snippets, one error or missing field in a single set of data will cause Google Merchant Center to flag that entire page as invalid. Even if there’s a good set of structured data for that product already.

3. Create AdWords Ads for your products

By this point, if you have everything working you should be able to create ads in Adwords for your Shopify products.

Common issues with Shopify and Google Merchant Center

Based on my research with customers and their Google Merchant accounts, here are a few common issues I’ve seen along with ways to fix or work around them.

Notification: Missing microdata for condition

This notification happens when the product condition structured data in your theme is wrong.

Even though JSON-LD for SEO provides the correct structured data using Schema.org, Google wants all of the structured data on that page for the product to be correct.

The most common problem I’ve found is that the theme is using the wrong values or is missing a value.

Google requires a value of one of the following:

  • ‘new’
  • ‘refurbished’
  • ‘used’
  • http://schema.org/NewCondition
  • http://schema.org/RefurbishedCondition
  • http://schema.org/DamagedCondition (is the same as ‘used’)
  • http://schema.org/UsedCondition

These are the only allowed values. Many themes use ‘New’ or ‘Used’ which is considered invalid.

Fixing this in the theme should be relatively easy. Just find where it’s getting set in the HTML of your product template and change it’s values.

Notification: Missing microdata for availability

Similar to the production condition structured data, product availability is another common problem with Shopify themes.

Once again, even though JSON-LD for SEO provides the correct structured data using Schema.org, Google wants all of the structured data on that page for the product to be correct.

Google requires a value of one of the following:

  • ‘in stock’
  • ‘out of stock’
  • ‘preorder’
  • http://schema.org/InStock
  • http://schema.org/LimitedAvailability (is the same as ‘in stock’)
  • http://schema.org/OnlineOnly (is the same as ‘in stock’)
  • http://schema.org/Discontinued (is the same as ‘out of stock’)
  • http://schema.org/InStoreOnly (is the same as ‘out of stock’)
  • http://schema.org/OutOfStock
  • http://schema.org/SoldOut (is the same as ‘out of stock’)
  • http://schema.org/PreOrder
  • http://schema.org/PreSale (is the same as ‘preorder’)

These are the only allowed values. Many themes use ‘in_stock’ which is invalid because of the underscore.

Fixing this in the theme should be relatively easy.

Notification: Automatic item updates: Missing schema.org microdata availability information

This notification is similar to the more general missing microdata for availability so the first thing to do is to check that the availability data is correct.

Most of the time both of those problems happen at the same time and fixing the product’s availability in the theme will fix it.

Notification: Automatic item updates: Missing schema.org microdata price information

As you might expect, this problem occurs when your theme is formatting a product’s price incorrectly.

The microdata for a price should only be the price as a decimal, without any currency symbols. For example:

  • 10 USD – invalid
  • $10 – invalid
  • 10 – valid
  • 10.01 – valid

This is actually one of the top problems Shopify themes have with structured data and Rich Snippets so fixing it here should fix it there too.

Error: Temporary item disapprovals due to incorrect prices

I’ve seen one customer with this error on one product. In this case the data feed had a product price that was different than the site due to a sale the store was running.

After digging into it, we found that Google was using an older cached copy of the product page before that customer changed the product price.

Since JSON-LD for SEO and their theme’s microdata were automatically updated from the price change, we just needed to wait for the Google to notice the change.

It took about 6 days for Google to update that product and remove the error.

Error: Insufficient product identifiers: Missing two out of three attributes [GTIN, brand, MPN]

Google requires that your products have enough fields so that the product can be identified uniquely.

With Shopify this usually means the products brand and Global Trade Item Number (GTIN) which can be the UPC, EAN, JAN, ISBN, or ITF-14 field. In Shopify this is referred to as the product’s barcode.

If you don’t have a GTIN field, you can use a Manufacturer Pat Number (mpn) instead.

Shopify doesn’t have this field for this so you’ll need to either enter it by hand or use metafields.

JSON-LD for SEO is smart with these in order to give you as much flexibility as possible:

  • brand: it will use the shop metafield called "jsonld.vendor", the product metafield called "jsonld.vendor", or the product’s vendor from Shopify (in that order)
  • gtin: depending on the length of the product barcode, one of the Schema.org gtin fields will be used (gtin12, gtin13)
  • mpn: it will use the product metafield called "jsonld.mpn", the variant barcode, or the SKU (in that order)

Even though JSON-LD for SEO includes this data, you’ll also need to make sure that your product data feed has the data also.

As another option, if you don’t want to run ads for some products you can exclude from them your data feed in Shopify’s Google Shopping App.

You’ve fixed errors but Google still reports problems

You’d think that once you fix the data for a product page that Google will notice the fix and remove those errors right?

Well, they will but it can take a few days to a few weeks before they refresh the data. I’ve even heard stories of someone having to wait a few months before Google saw the good data.

If it looks like this is happening to you, here’s what I recommend:

  1. Visit the Diagnostics area
  2. Open the error(s) you see
  3. Export them to CSV and save them to your computer with today’s date in the file name
  4. In 3-5 days check the error(s) again and re-export any you find
  5. Compare the products listed in the first report against the second
  6. Ideally you’ll slowly see products disappear from the report which implies that the errors were fixed

No issues found in Google Merchant until JSON-LD for SEO was installed

One interesting scenario I’ve heard about from customers but haven’t confirmed, was that after installing JSON-LD for SEO some of the microdata errors listed above appeared.

Looking at their theme’s microdata it was clear that the microdata was incorrect but Google wasn’t reporting the errors.

What I think could be happening is that Google is giving the incorrect theme data a "pass" before JSON-LD for SEO is installed. Then after it’s installed they do a stricter review and flag the theme’s microdata as invalid.

JSON-LD for SEO’s data is already matching what Google wants and there is no mention of invalid JSON-LD data, so this is the only conclusion I’ve been able to come to.

Hopefully by following this guide you’ll be able to connect Shopify, Google Merchant Center, and JSON-LD for SEO. Once connected you’ll be able to run ads for your products in Adwords using your Shopify data automatically.

Get all of your Shopify store's products listed in the Google search results using Rich Snippets

Learn why getting your Shopify store's products listed in the Google search results with Rich Snippets will improve the quality of your traffic and help you make more sales.