Kevin Stecko is the founder and president of  He's been operating the business since December of 1999.

Shopify and SEO

I was on the EcomCrew Podcast episode 99 with my friend Mike Jackness and we briefly discussed how Shopify is not ideal for SEO.  I mentioned that I had some recommendations on how to make your Shopify store SEO better than most standard theme implementations.  A few folks asked for more details in the comments section so I decided to write this post.

First off there is one major SEO problem with Shopify and that is the fact that you have zero control over the url directories.  No matter what you do your products will be in a /products/ directory and your collections will be in a /collections/ directory.

In a perfect world instead of products and collections you'd have complete control of your url structure.  For example instead of a url that looked like this:

I'd prefer my url looked like this:

There's nothing that can be done about this, though.  Shopify has tons of advantages to offer due to their scale, but one of the things that scale rarely goes well with is flexibility.  You take the good with the bad, and as of 2017 there isn't another ecommerce platform that can legitimately compete with Shopify.

The next thing to note is that I'm not going to cover generic ecommerce SEO best practices.  I'm talking things like naming your products, naming your images, title and meta tags, rich snippets/JSON-LD, etc.  If any of these things are unfamiliar to you then you don't have a Shopify SEO problem, you have an SEO problem.

So let's talk about some Shopify specific problems that I can help you with.

Problem 1:  More than one url per product page

Shopify has a feature, which I would argue is actually a bug and should not exist, that puts the collection handle into the url of products.  The end result is a url structure that looks like this:
The url above would only show up if a user navigated via the collection to the product. 

So the advantage of having the collection in the url is that the collection handle ideally contains keywords that are different from the product handle and thus the url sends extra relevant keyword signals to search engines.

But, the product also exists at this url:

This is where those experienced in SEO are getting concerned about duplicate content.  Now the folks at Shopify will tell you that duplicate content is not a concern because Shopify stores automatically point the canonical tag to the /products/product-handle version of the url.   I respectfully disagree.  The canonical tag is like getting a heart stint to unblock your artery whereas avoiding the need for the tag is like eating right and getting your exercise.  One is fixing a problem and the other is preventing a problem.

Let's use one of Mike's products as an example of what could happen:


This product can be accessed from both of these urls:


That means that inbound links from external sites will be spread between both urls.  So Mike does a ton of work to make a product people love, they share the product which sends signals to Google that this is something people love and therefore it should rank well, and then he dilutes his links by spreading them between 2 urls.

Now let's fast forward 5 years.  Colorit and Stevan Kasih have developed a fruitful relationship and Mr. Kasih has 20 different books, becomes well known, and his fans are searching for them.  Mike realizes he needs a landing page for these searches and he creates a Stevan Kasih collection page on his site.  That means that every Stevan Kasih book has the base product url, the coloring-books collection url, and now the Stevan Kasih collection url.  Each product has 3 urls, adding to the dilution.

What if one of Stevan's books resides in another collection.  Like maybe it's the "cat" collection.  Now we'd have 4 different urls for the same product!  Things will get out of hand if Mike's selection grows to the point that he would need to create more collections.

How to fix it?

So first off if I were advising Mike I would suggest that the product handle, which in the example above is "colorful-quilts-illustrated-by-stevan-kasih" should contain the words "coloring-book".  As it stands now there is the /products/ directory separating the type of coloring book and the word coloring book in the base url.  And my guess is that someone would be more likely to search "stevan kasih coloring book" as opposed to "coloring book stevan kasih".  

Next I would suggest turning off the theme setting that appends the collections directory and collections handle onto the product page url.  The theme setting you need to change is located in the collections part of the theme.  

Find this:

{{ product.url | within: collection }}

Change it to:

{{ product.url }}

Boom!  Now your collections won't append the collection directory and handle onto your product urls.  Note that Shopify still supports urls with the collections in them even if you make the change to your theme, but if your theme is not generating those urls they won't be spidered by the search engines and thus they won't really exist even though they technically would work if someone typed in the url.

Problem 2:  Breadcrumbs Don't Contribute SEO Value

I am not a fan of dynamically generated breadcrumbs that show a user how to get back to where they were.  What if a GPS worked like this?  Let's say you missed a turn and had to take a less than ideal route on your way to some unfamiliar destination.  You are now there and you want to get home.  Should the GPS make you repeat your mistake?  

Another way to put this is people browse like idiots, and there is no reason to make your site display breadcrumbs based on what an idiot does. 

How to fix it?

You should define a static breadcrumb for every product and collection on your site.  This takes some consideration and will potentially require some work to customize your theme, but it's well worth it because you can thoughtfully sculpt the SEO link juice that flows from and between your product and collection pages.

Problem 3:  Discontinued Products = Wasted Link Juice

Let's say you've sold a product for a number of years and now for whatever reason you are no longer offering it.  Since the page has been around there's a good chance that page has gained some link juice.  Link juice is precious and is not to be squandered (the reason Ebay doesn't dominate search results like Amazon is because Ebay's pages never accumulate link juice because they are temporarily here and then gone.).  

Shopify doesn't make it easy to maintain that link juice, especially if you use the default Shopify search engine.  This is because your discontinued products will show up in your on site search unless you set a No Index No Follow in your robots.txt file.   Well that's no bueno because if you set that you lose all your link juice!  And if you don't set it your discontinued products will muck up your site search results and kill the user experience.

How to fix it?

Best Option: Reuse the old url (meaning you need to delete the old product or at least change the handle on the old product) on a similar new product.  So in our case one of our suppliers may discontinue the product we called the goonies-sloth-shirt but they have another option where that name works.  So we just do a switcheroo and now our new product gets all the link juice of our old product.  It's the equivalent of when a store tears down and rebuilds in the exact same location.  You had a good location before but for whatever reason the building occupying it could no longer be used.

This isn't always an option, though, so there is another way.  It's not easy to do but we do it.

Next Best Option:  Warning, a lot of prequisites here but the juice is worth the squeeze (pun intended) if you've got a lot of products with decent link juice.

Prerequisite 1:  You can not employ this method if you use the default Shopify search.

Prerequisite 2:  The search provider you use must support a way to exclude "live" products from the search results.

Prerequisite 3:  You must have a theme developer savvy enough to be able to create a product page template based on a tag.

Prerequisite 4:  You must tag any dead products with a consistent tag.  In our case we tag our discontinued products with the tag "museum".

If one of our products has the museum tag and has inventory the museum tag is ignored.  If a product has the museum tag and has no inventory then the product page displays a message saying the product is no longer for sale and recommends they check out other products in similar collections.  The museum product page has all the attributes of the original product page except an add to cart and size selection.  It still has breadcrumbs and passes link juice from the discontinued product page to the related pages, and still provides the search engines a page to index and rank.  We aren't wasting link juice.  And if at any point we get a replacement product we can reuse that url for a new product as mentioned above.

Third Best Option: 301 redirect the old url to a related product or collection page.  You'll lose some link juice but what doesn't get lost will be pointed in a good direction.

Bed Frames, Headboards, Dresser Drawers and Other Social Constructs

FedEx vs UPS