Shopify SEO: Understanding how to overcome basic Shopify limitations

By Tom Corless
14th April 2023

Shopify is a fantastic e-commerce platform for usability from a both a store owner and customer’s perspective.

Like every platform though, strength in one area often leads to limitations in others, with Shopify having several quirks that make SEO a little more difficult – although not impossible! It’s simply the case of adapting your methods to suit the platform.

Below I’ve highlighted the basic Shopify SEO limitations and how best to overcome these to improve your visibility.

1. Customising the Robots.txt

A Robots.txt is a fantastic tool that allows us to control how Google and other engines crawl a website. Yet, one of the issues most often mentioned when discussing the basics of Shopify is customising the Robots.txt file.

Shopify claims this standard Robots.txt is best optimised for the platform, preventing access to account, checkout, orders, cart and internal search pages, whilst also including a link to the XML Sitemap.

As we all know however, we often have custom URLs and exclusions we would like to place our Robots.txt that are unique to our website and therefore require a small workaround via NoIndex tagging.

Custom Inclusions

If you want to customise your robots.txt you must first add the robot.txt.liquid template, which can then be used to insert specific instructions into your robots.txt file.

To do this, you need to:

1. Open the Templates folder in the code editor.

2. Click Add a new template.

3. Choose robots.txt under the Create new template for drop-down menu.

4. Hit Create template.

From here you can then customise your new template, and for the full step by step on how to do this, make sure to head over to the Shopify devs post.

Alternatively, this can still be handled on a page/template basis using the below method. However, it would be recommended to go via the Robots.txt for ease of management.

 

Specific Page Exclusions

To avoid indexation of a specific page, the following code needs to be placed into the <head> section of the relevant theme.liquid file. This will, of course need customising to exclude your target area.

{% if handle contains ‘page-handle-you-want-to-exclude’ %}

<meta name=”robots” content=”noindex”>

{% endif %}

Multiple Page Exclusions

To omit multiple pages, this simply needs to be updated to include additional lines, such as:

{% if handle contains ‘page-handle-you-want-to-exclude’ %}

<meta name=”robots” content=”noindex”>

{% elsif handle contains ‘your-page-handle-2’ %}

<meta name=”robots” content=”noindex”>

 {% elsif handle contains ‘your-page-handle-3’ %} <meta name=”robots” content=”noindex”>

 {% else %} {% endif %}

Template Exclusions

For those wanting to omit full template areas, such as ‘Search’, the below content will need pasting into the head of the relevant theme.liquid file

{% if template contains ‘template contents i.e search’ %}

<meta name=”robots” content=”noindex”>

{% endif %}

For more information on this, the Shopify Help documents provide more detailed information.

If you’re not confident with code, there are also multiple apps available at the Shopify Store to help manage NoIndex rules.

2. Noneditable URL Slugs and Sub-Categories

The URL Slug is one of the primary ways within which we’re able to showcase site hierarchy in a logical manner and generate a top-down authority flow for search engines.

Sadly, with Shopify, you’re unable to modify the URL slugs beyond the default, flat structure, containing a folder that cannot be changed, such as;

  • Yoursite.com/collections/category-title-here
  • Yoursite.com/products/product-title-here
  • Yoursite.com/page/page-title-here
  • Yoursite.com/blog/blog-title-here

In addition to this, you’re unable to add sub-categories, meaning it becomes harder to properly depict your overall structure.

This can become an issue further down the line, with potentially related sub-categories sitting on a standalone URL, making it harder for search engines to understand the correct relationship between pages.

One workaround for this is the creation of ‘Tag Pages’ such as;

  • Yoursite.com/products/product-title-here/tag-1

Doing this will allow you to add a sub-category URL within the SLUG which can aid UX, however you’ll notice these pages contain the same page content as their parent, whilst remaining canonicalised to their parent, providing no SEO Value.

In order to overcome this, you’ll have to edit your canonical rules in order to override with manual logic  (help from Shopify on doing this here) whilst also injecting content and Meta Content on page using your theme.liquid file.  

3. Unable to Optimise Tag Pages

So, you’ve made your tag pages, and finally have a URL slug you’re happy with, but now you find yourself unable to optimise tag pages!

This can be circumvented by using a tag and injecting content and meta data on the page. As the well-publicised Gymshark example shows – https://uk.gymshark.com/collections/t-shirts-tops/womens

In order to achieve this, the below code will need to be customised and added to the relevant theme.liquid file, with a new code entered each time for additional tag pages.

{% if collection.description != blank %}

{% if template contains ‘collection’ and current_tags %}

{% if current_tags contains ‘This would be your tag content ‘ %}

<h1>This would be your Title</h1>

<p>This is your custom text about </p>

{% endif %}

{% endif %}

Additionally, in order to create dynamic titles within your Tag pages, the below will need placing within the theme-meta.liquid file.

<title>

{{ page_title }}{% if current_tags %} – tagged “{{ current_tags | join: ‘, ‘ }}”{% endif %}{% if current_page != 1 %} – Page {{ current_page }}{% endif %}{% unless page_title contains shop.name %} – {{ shop.name }}{% endunless %}

</title>

This, does, however, create additional issues, by essentially removing all flexibility and creating a collection page in name only, removing all management ability, whilst also requiring canonical rules to be written sitewide.

Such a practice is unworkable at scale and may create content management issues moving forward.

This is discussed in more depth on OuterBox here.

4. Duplicate Product URLS

Another strange quirk of Shopify is that products are accessible via both the /collections/ and /product/ URL structure, for example.

  • Yoursite.com/collections/category-title-here/products/product-title-here
  • Yoursite.com/products/product-title-here

As you can imagine, this can potentially lead to duplicate content, especially when a product sits within multiple collections.

Thankfully, Shopify has already built in the correct canonical rules out of the box, so duplicate content worries are mitigated.

As we all know though, the canonical is a directive, not a rule, so there is still a slight chance of duplicate content being indexed, especially if internal collections links aren’t correctly configured to only link via the clean /product/ URL.

In order to ensure internal product links aren’t via the collection URL, within the relevant theme.liquid file that handles collection find the below code:

{{ product.url | within: collection }}

And replace with:

{{ product.url }}

Whilst this won’t stop the category/product being manually accessible, it will ensure that no internal links are generating using the category/products URL.

As crawlers cannot manually enter a URL, as long as there are no historical indexed pages this will prevent duplicate product content. You can read more about this on the Shopify community, Paul Rogers and Path Interactive blog.

5. International SEO limitations

Whether it’s subdomains, ccTLDS or subdirectories, everyone is aware of the debate around international SEO and best practice for stores selling across multiple countries.

Setting up in either of these two ways can pose challenges for international SEO due to the fact it essentially splits the site into multiple domains (although, of course, these aren’t Shopify specific!).

Therefore, if you are planning to pursue international SEO with your Shopify store, it’s important to ensure you follow the international SEO Guidelines, including;

  • Ensure proper Href lang implementation rules are followed
  • Localise content (avoiding mechanical translations where possible)
  • Build links from local resources
  • Set up international targeting in Google Search Console (only possible for Sub-Domains)
  • Ensure canonicalisation is correct

For more information on setting up an international Shopify store, check out Shopify’s international domain manual here, and Shopify’s blog post on setting up a store across multiple countries.

Support with Shopify SEO

We’ve driven record-breaking SEO visibility for many of our clients on the Shopify platform, so we’re well versed on the techniques needed to workaround the platform’s quirks and limitations.

If you’re on the Shopify platform or considering migrating over to it and want to talk about maintaining and improving your organic visibility, get in touch for a chat and we’d be happy to support where we can.

Latest Insights From The Team.

Explore our team’s latest thoughts and actionable advice from our blog to support your digital marketing strategies.

The Trends That
Matter.

Our latest report delves into the challenges and opportunities for brands in the home furnishings industry. Sign up below to receive our latest reports straight to your inbox as soon as they’re published.

    Read our Privacy Policy here for information on how we use and store your data.