Integrating Shopify, Google Merchant Center for Google Shopping, and JSON-LD for SEO
Google provides a lot of options for Shopify merchants to advertise their products. Unfortunately, this can get confusing especially if you only wanted to buy basic ads for your Shopify products.
Google Shopping, Google Merchant Center, Product Listing Ads, Sponsored Ads, data feeds, microdata, JSON-LD… oh my.
The jargon goes on and on.
This article will attempt to show you how you can combine everything so your Shopify products are sent to Google Merchant Center in order to buy advertising and make sales. Google uses Merchant Center for ads on the Google Shopping Tab and Youtube to name a few.
There are three major steps involved:
- Sending the product data from Shopify to Google
- Updating the product data
- 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 in Google, running ads are easy.
But first, let’s introduce the characters.
Shopify’s Google Sales Channel
Shopify has a free app called Google Channel 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 JSON.
JSON-LD for SEO
JSON-LD for SEO creates the structured data for each of your products in your Shopify store. It’s primarily 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).
Connecting it all to Shopify
1. Sending the product data to Google
The first step is to get your product data into Google using Shopify’s Google Channel.
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 may want to try to enable Automatic Item Updates.
When the Automatic Item Updates are enabled, Google’s crawling programs use it 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 inconsistency 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 Google Ads for your products
By this point, if you have everything working you should be able to create Google Ads for your Shopify products to be used in places like the Google Shopping tab.
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’
- https://schema.org/NewCondition
- https://schema.org/RefurbishedCondition
- https://schema.org/DamagedCondition (is the same as ‘used’)
- https://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 its values.
Or if you have a set of correct structured data like from JSON-LD for SEO, you can remove the microdata from your theme.
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’
- https://schema.org/InStock
- https://schema.org/LimitedAvailability (is the same as ‘in stock’)
- https://schema.org/OnlineOnly (is the same as ‘in stock’)
- https://schema.org/Discontinued (is the same as ‘out of stock’)
- https://schema.org/InStoreOnly (is the same as ‘out of stock’)
- https://schema.org/OutOfStock
- https://schema.org/SoldOut (is the same as ‘out of stock’)
- https://schema.org/PreOrder
- https://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 or removing it 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
In most cases when I see the disapproval due to incorrect prices, the data feed product price is different than the site.
In one situation, we saw this was caused because of a sale on the website. 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 Google to notice the change.
It took about 6 days for Google to update that product and remove the error.
It's not always that simple though. There could be a variety of reasons so I recommend you checkout this article that outlines a few more reasons for the price mismatch and some possible solutions.
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 product’s 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:
- Visit the Diagnostics area
- Open the error(s) you see
- Export them to CSV and save them to your computer with today’s date in the file name
- In 3-5 days check the error(s) again and re-export any you find
- Compare the products listed in the first report against the second
- 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.
Not sure if JSON-LD for SEO is working with Merchant Center?
As a test, one of my customers removed all of his microdata completely and only used JSON-LD for SEO.
Once Google reviewed the site and said it was error-free, we turned off JSON-LD for SEO.
Within 16 hours Merchant Center reported errors on over 50% of his products and was going to force him to disable Automatic Item Updates.
Re-enabling JSON-LD for SEO resolved all of those errors within 7 days.
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 Merchant Center using your Shopify data automatically.
JSON-LD for SEO
Get more organic search traffic from Google without having to fight for better rankings by utilizing search enhancements called Rich Results.