Shopify SEO: The Ultimate Guide

Run a Shopify store? Here’s a detailed guide on how to setup, optimise, and tweak your store to gain rankings, traffic, and sales from Google Search.

Is your Shopify SEO up to scratch? Book a custom video review.

What is Shopify SEO?

Shopify SEO refers to search engine optimization (SEO) improvements for websites powered by the Shopify platform.

Shopify has many SEO features out of the box, but it also has a few flaws you’ll need to be aware of.

We’ll cover how to both leverage the built-in SEO functionality and how to use a little customisation to make your Shopify store more SEO friendly in this article.

Setup Your Store

Starting with the basics, it’s important to cover a few fundamentals that are worth setting up first. If you already have these, skip and move onto the next section.

Google Search Console

Google Search Console (GSC) is a requirement for any website taking SEO seriously.

Registering your website with GSC will give you information about how Google is crawling your website, what terms you’re ranking for and getting traffic from, crawling and technical SEO issues, and more.

Read this guide from Google on how to add your website

Also if you’re doing this for the first time, make sure to submit your sitemap to GSC. Just click into the “Sitemaps” menu under “Index” and add the following URL: yourwebsite.com/sitemap.xml.

Google Analytics

Another highly recommended tool is Google Analytics for tracking traffic, sources (incl. search), sales/revenue, etc.

It also integrates with GSC to connect data from there.

You can also access a lot of this data inside your Shopify Dashboard, but for more detailed tracking and analysis I’d recommend GA. Especially if you plan to work with an ads or SEO agency, they’ll appreciate the existing setup and data.

Trust elements and pages

While not directly related to SEO, it’s highly important that your store has all the necessary trust signals. This will directly influence conversion rate (and time on site), which could possibly impact your SEO, and will also cover you long-term against Google’s E-A-T.

(E-A-T stands for expertise, authoritativeness, and trustworthiness. Something Google’s Quality Rates Guidelines are big on looking for)

This just means that you’ll want basics covered like:

  • A clear about page with details of who runs this store
  • Phone number that is easily accessible
  • Delivery details
  • Clear and understandable warranty/guarantee details
  • Any additional trust signals like third-party reviews

Common Shopify SEO Issues

Before we get into optimising your store, there’s a number of technical SEO issues or considerations baked into shopify that are worth resolving first, rather than after your store is established and full of issues.

Let’s break them down one by one.

Directory URL Structure

In any typical eCommerce SEO guide, the suggestion would be to structure internal links similar to this:

/category/subcategory/ e.g. /sofas/leather/

This provides context to users and robots that leather is a subtopic of sofas.

Unfortunately Shopify does not enable this without the use of tags and heavy theme modifications to add functionality to tag pages – by default tags have duplicate H1 and badly optimised title, meta, etc.

This leaves you with all your category pages structured like:
/collections/sofas
/collections/leather-sofas

Unfortunately there is no decent solution to this problem, besides doing the best you can with how it works. That means using optimised URLs for subcategories i.e. /leather-sofas rather than /sofas/leather and treating these as subcategories within navigation and internal links.

Internal Product Links

Following on from the category directory structures, there’s also the odd setup for products.

By default product URLs are:
/products/name-of-product

However, when accessed through a collection (i.e. category) page, this becomes:
/collections/name-of-category/products/name-of-product

The problem with this is it’s only for show, check any of these product pages for a canonical tag and you’ll see a bit of code telling robots the original page can be found at the /products/name-of-product page.

This means every single product in your store has internal links to the wrong URL. And while you could argue they’re “canonicalised”” therefore shouldn’t be an issue, this canonical tag serves little more than a recommendation and is often ignored by search engines.

This can lead to the same product being indexed in search engines multiple times, and a waste of crawl budget accessing the same product via multiple URLs.

All for (presumably) two benefits:

  1. It’s user-friendly to see the category of product
  2. It supports breadcrumb links (next part!)

None of these justify the SEO downsides, so I’d highly recommend fixing these links by modifying your theme files to link directly to product pages.

You can do this under Online Store > Themes > Customize > Theme Actions > Edit Code > Snippets > product-grid-item.liquid:

Then removing the text that says “within: collection”:

Hit Save and all your links should be fixed. Just be careful to remove all instances, sometimes your theme may have multiple links or have a slightly different structure.

Breadcrumbs

As mentioned in the previous step, breadcrumbs are broken when you fix internal product links.

If you don’t know what breadcrumbs are, they’re the little links that help you navigate up (i.e. back) through pages prior to accessing this page.

Example here:

By default, Shopify uses the URL to dynamically insert breadcrumb links based on which collection you accessed this product through. This isn’t ideal in the first place, but it’ll be completely broken when you fix the internal product links.

The alternative is to manually set a breadcrumb for each product or even category. This can then be stored and accessed with a custom metafield, then used in the breadcrumb theme section.

For example, you could create a metafield named “breadcrumb” and store the collection handle in there of “leather-sofa”.

Within the breadcrumbs theme section, you can then use this to add a breadcrumb, like so:

<a href="{{ collections[product.metafields.global.breadcrumb].url }}">{{ collections[product.metafields.global.breadcrumb].title }}</a>

This re-enables breadcrumb functionality and provides additional control over this, which is even better for SEO.

Product Tags

Within the Shopify ecosystem, tags are used for products as filters, as you’d commonly see in a typical eCommerce faceted navigation:

The problem with these tags is the thin content pages they create.

Let’s say you have 3 size options: 125ml, 275ml, and 500ml. Then you tag all products across all your categories with whichever sizes are offered.

You’ll now have tag pages automatically generated such as:
/collections/perfume/125ml
/collections/perfume/275ml
/collections/perfume/500ml

This is a great thing for SEO because it’s possible these are keywords people are searching for. Maybe someone is specifically looking for 275ml perfume.

However, it’s wasted on Shopify for two reasons:

  1. If you happen to write the tag with a space, it’ll change the space to a + (i.e. 125ml+option) which is blocked by robots.txt by default
  2. The auto-generated tag page cannot be customised with unique H1, meta description, title tag, content, etc

This leads to a whole bunch of near-duplicate pages with the only difference being the title tag will say along the lines of:

Perfume: Tagged “125ml” – Brand

The fix to set these tag pages to “noindex, follow” (easy), then noindex links to these tag pages as nofollow (advanced) block these with Robots.txt to save crawl budget.

Then you can manually create these tags as new collections (i.e. category pages) where there’s search volume.

This can be done in your theme.liquid file with a simple bit of code:

{% if current_tags %}
    <meta name="robots" content="noindex, follow">
{% endif %}

Blog Tags

Similar to product tags, you can also use tags for blog posts to filter posts. These are commonly used on Shopify blogs to separate different blog post categories.

The problem, as with product tags, is this leads to many pages being created which you have no control or customisation over i.e. thin content.

You’ll see this under URLs like:
/blogs/news/tagged/name-of-tag

Or with a quick Google search:
site:YOURWEBSITE.com inurl:tagged

Thankfully, this is another simple fix with a code snippet added to your theme.liquid file (same as product tags):

{% if current_tags %}
    <meta name="robots" content="noindex, follow">
{% endif %}

Vendor Collections

Another thing that can lead to potentially 100+ thin content pages are what I call “vendor pages”.

In most cases, it is a great idea to have a category page for each of your vendors (i.e. suppliers, brands, manufacturers), however Shopify’s default implementation is fairly useless from an SEO perspective.

There’s numerous reasons for this:

  1. The page URLs are defaulted to /collections/vendors?q=Name. Even ignoring SEO, these are not user friendly URLs.
  2. These pages are auto-generated, if you happen to have a vendor with 2 or more words the space between is replaced with a +, which is blocked by Robots.txt. Meaning, if you have a supplier with 2+ words, search engines won’t be able to access the page.
  3. Even if search engines can access the page, it can’t be customised by default with content or SEO optimisation settings, therefore is practically useless.

So how do we fix this?

Set these pages to “noindex, follow” by customising your theme.liquid file like this:

{% if template contains "collection" and collection.handle == "vendors" %}
    <meta name="robots" content="noindex, follow">
{% endif %}

This is a backup, but also good to do first if they’re already indexed to have them removed first.

Then block them in your Robots.txt file (explained below).

If you’d like to rank for any vendors brand names, which I’d highly recommend, manually create these as new collections.

Product Types Collections

Similar to vendor pages are product type pages. These can be find under a similar type of parameter URL:

/collections/types?q=Name

These again are automatically generated from the “type” field when creating your products in Shopify.

As with vendor pages, these have all the same issues as vendor pages and no upsides. Usually product types are literally the same as your categories (i.e. collection pages), therefore this provides no benefits.

Set these to noindex, follow as before and then block with Robots.txt:

{% if template contains "collection" and collection.handle == "types" %}
    <meta name="robots" content="noindex, follow">
{% endif %}

Other Default Pages

/collections/all and /collections/new are usually not needed

Beyond this, there’s sometimes other pages that provide zero value to search engines or users of search engines, so may as well be noindexed also.

These can include:

  • /collections – A list of all collections on your store
  • /collections/all – A list of all products on your store (with pagination this can really become a lot of unnecessary indexed pages)
  • /collections/new – A list of new products on your store

And any others manually created such as best selling products lists. These can all be set to “noindex, follow” if not being used, with the following code added to theme.liquid:

{% if (template contains "collection" and collection.handle == "all") or (template contains "collection" and collection.handle == "new") or (canonical_url == "https://YOURWEBSITE.com/collections") %}
    <meta name="robots" content="noindex, follow">
{% endif %}

Setup a Custom Robots.txt File

As of June 2021, you can finally setup a custom Robots.txt file on Shopify! This will give you significantly more control over the above issues.

Here’s how to set this up:

Go to your Theme Editor then under Templates click “Add a new template”:

From there, select “robots.txt” and click Create template:

You’ll now have a robots.txt.liquid template file with the default robots.txt information added:

The good news is we can now remove or add additional rules by modifying this file, for example:

# we use Shopify as our ecommerce platform
{%- comment -%}
# Caution! Please read https://help.shopify.com/en/manual/promoting-marketing/seo/editing-robots-txt before proceeding to make changes to this file.
{% endcomment %}
{% for group in robots.default_groups %}
  {{- group.user_agent -}}

  {% for rule in group.rules %}
    {{- rule -}}
  {% endfor %}

  {%- if group.user_agent.value == '*' -%}
{{ 'Disallow: /collections/all*' }}
{{ 'Disallow: /*?q=*' }}
{{ 'Disallow: /collections/*/*' }}
{{ 'Disallow: /blogs/*/tagged/*' }}
  {%- endif -%}

  {%- if group.sitemap != blank -%}
    {{ group.sitemap }}
  {%- endif -%}
{% endfor %}

This will block search engines crawling:

  • /collections/all – List of all products with pagination (usually not needed)
  • /collections/vendors?q= – Auto-created collections for each vendor (explained above)
  • /collections/types?q= – Auto-created collections for each type of product (explained above)
  • /collections/any-collection/tag-name – Product Tag Pages
  • /blogs/any-blog/tagged/tag-name – Blog Tag Pages

For more tips on modifying this, read our full Shopify robots.txt guide.

Is your stores Technical SEO up to scratch? Book a custom video review.

Keyword Research

Now the site is set up correctly, let’s move onto targeting and bringing in traffic. This begins with keyword research, then leads to On-Page optimisation.

What is keyword research?

Keyword research is the process of identifying search terms people use to find products, services, or content similar to your website.

For example, if you sell protein powder, you can presume people search for protein powder. But how many? And are they looking to buy it or for information? And is this better than other potential keywords such as whey protein powder, best protein powder, protein supplements, etc

How to do keyword research for Shopify

Keyword research for Shopify is no different than any other ecommerce store, you almost always want to start with the bottom of funnel existing pages.

Bottom of funnel refers to pages that will directly drive sales i.e. category and product pages.

Existing pages, meaning products and category pages that you’ve already created.

Taken further, you should prioritise this based on the existing opportunity for these pages, an easy way to do this is sorting by GSC (Google Search Console) Impressions.

Here’s the process:

  1. Get a list of all existing bottom of funnel pages sorted by highest GSC impressions
  2. For each page, determine a primary (i.e. best) keyword (if any) that is feasible to rank for with your budget on this specific page. The easiest way to determine this is if there’s competitors of a similar business size to yours ranking well for this keyword. If they’re all huge brands, it’s beyond your budget.
  3. Repeat the above process for all secondary keywords.

It’s not one keyword per page, it’s more like one topic.

If your main keyword is 50mm lens, for example, a few secondary keywords could be 50mm prime lens, buy 50mm lens, 50mm f 1.8, etc.

These are all the other keywords someone may search to find this product or product category.

Create more collection pages

Once you’ve done this for all existing products and categories in your store, you should strongly consider creating additional collection pages. Especially if you did this originally without keyword research in mind.

There’s two easy ways to expand these:

1. Look up keywords your competitors are ranking for. This can be done with Ahrefs and can usually be filtered down to products and product categories only:

2. Research names of product brands you sell and options like colours and sizes to see if there’s search volume for these.

For example, if you’re selling protein powders, there’s likely to be plenty of searches for chocolate protein powder, strawberry protein powder, etc. These are additional collections/categories. As would say “Ultimate Nutrition” which is one of many brands.

You can do this by simply searching these in any keyword research tool:

Product vs Category vs Blog Post

One thing you may struggle with is determining if a keyword should be targeted with a product page, collection page, or blog post. The answer is it depends.

Take a look at the Google results when I search for “protein powder”:

SERP features have been removed to condense image size

I can count 3 stores selling protein powder out of 10 results. Meaning for this keyword, I’d be more inclined to create an information piece of content i.e. blog post to target this.

But let’s change this keyword now to “chocolate protein powder”:

Now the first 2 results are Amazon and I can count an additional 2 more results for stores selling these. The rest of the results are mixed between reviews of the best protein powders and chocolate protein recipes.

This is a much more nuanced one, but my belief is the intent for this keyword is probably fairly mixed between shopping and recipes, so I’d want to target this in my bottom of funnel.

Next the question is product or category? Whichever best supports the intent, in this case, I doubt someone is looking for one chocolate protein powder, they’re probably looking for a choice, so I’d choose category page.

MyProtein are an example of that:

These are all chocolate protein powders but different types

On Page SEO

Once you’ve researched what keywords to target for each page, it’s time to optimise these pages for your chosen keywords. For the most part, Shopify makes this very simple.

Page Title [Tag]

Scroll down to the “Search engine listing preview” section when editing a product, collection, or page, then click the “Edit website SEO” link:

You can also find this under Online Store > Preferences for the homepage:

The first option you’ll find here is the “Page Title” or in SEO terms, the title tag. This appears in the search results and usually is the first thing people see.

This is a key area of optimisation, therefore highly important to include your main keyword.

Beyond that, here’s a few guidelines to help:

  • Include the exact main keyword (plural is less important) – “sofa” or “sofas” is acceptable, but make sure the main keyword is there ideally near beginning
  • Squeeze in secondary keywords where possible – The more the merrier, but adhere to other guidelines and don’t make it spammy
  • Don’t repeat words words – It can lead to over-optimisation
  • Don’t cause keyword cannibalisation – Make sure you’re not targeting this same keyword on other pages
  • Make sure it reads well – You want humans to visit your website, not robots
  • Don’t change delimiters – The delimiter is what separate the title tag and brand name, usually like “- Logeix”, keep this the same sitewide
  • Keep it to 50-60 characters – General guideline to make sure it fits

Meta Description

Below the title, you’ll find the Meta description text box. This also shows in the search results and while it won’t help with rankings directly, it can help significantly with clickthrough rate.

The key here is to write something that will convince someone to visit your page versus your competitors, the ad section is a wonderful example of this.

Here’s some guidelines to help:

  • Include the main keyword – It doesn’t help SEO, but it’ll show in bold which will stand out
  • Copy competitors – Not literally copy/paste, but there’s likely someone doing a good job of this
  • Highlight features/benefits – Of the product, category, your store – sell them on clicking
  • Include a call to action – Shop now!
  • Use Capitalisation To Stand Out
  • Maximum 156 characters – General guideline to avoid getting cut off

URL and handle

Below the Meta description, you’ll find the URL and handle. This is the URL this page will be accessible on, what we can and should customise is the handle.

The goal with this is to be as short as possible while including our main keyword. In most cases, this is very simple.

If your product category is a chocolate protein powder, the handle would simply be “chocolate-protein-powder” and the overall URL https://yourwebsite.com/collections/chocolate-protein-powder

Where you’ll want to be careful is if your collection name is different to the keyword (i.e. what people search) such as “womens” rather than “womens-clothes”. I’d recommend the latter so you have the full keyword.

Another consideration here is long product names, usually I’d shorten handle so it’s better for visitors.

Collection/Product Title [H1]

Next, scroll up to the regular settings and find the Title (first option). This is the title of your page, collection, or product; which in SEO terms is called a Heading 1 (H1).

Note: This is presuming your theme is setup correctly to structure this as a H1 tag

This will usually just be the name of the collection or product, but again, be sure to include the main keyword, ideally near the beginning. Secondary keywords can also be included if very similar.

Collection Descriptions

Below the Title is your Description. For collection pages specifically, you’ll usually want to include at least a few hundred words of content here to better help your visitors.

Here’s the problem:

Writing 750 words of content would look terrible at the top of your page and completely ruin user experience, even more so on mobile devices.

The standard alternative is to put it at the bottom or hide it behind a read more, but then it looks spammy and obviously only there for SEO benefit.

My preference is a short user-friendly description at the top, which can optionally be hidden behind a “Read More” link on mobile devices. ASOS is an example of this:

As for additional content, there’s a couple ways of doing this:

1. Additional product details

You can modify the products grid to show additional information about each product. This may depend on what you’re selling.

Example here from HP:

You’ll need a developer to help you integrate this by adding custom meta fields to each product, then showing these in the theme.

2. Frequently Asked Questions section

My favourite and go-to is an FAQ accordion below the products grid:

This allows us to answer any questions or doubts that potential customers may have, while simultaneously adding a few hundred words to the page without it being spammy.

Now to do this, we need to do a bit of a hack with the Shopify theme to split the description into two sections for the short description above products list, then FAQ below.

You can do that relatively easily within the collection-template.liquid file:

Locate {{ collection.description }} and change to:

{{ collection.description | split: '<!-- split -->' | first }}

Then wherever you’d like the second part, use this code:

{{ collection.description | split: '<!-- split -->' | last }}

Now all you need to do is enter the HTML view for your collection description and write <!-- split --> wherever you’d like it to split.

Then you can insert any content you like after, or HTML for an FAQ accordion. It’s probably best to get a developer to manage this for you.

Product Descriptions

Product pages will have the same Description section for describing your product.

Everything mentioned above can be done for products also. You can add an FAQ, split it and add a more detailed description below, etc.

I’d recommend doing this on a case-by-case basis, most of the time product pages need little content to compete. To determine this, search the main keyword for this product and see what your top competitors are doing, match that.

The important thing to do here is ensure that each product has a unique description. Do NOT copy from suppliers, manufacturers, or other stores. Write a unique description for every product.

Internal Links

Another important usage of the Description section is internal links.

Internal links are hyperlinks to other pages on your own website. These are very important for search engines to visit different pages on your website, understand topical relationships (i.e. if a page links to another, they’re likely relevant), and for “powering up” pages.

I’d recommend 2-4 internal links to other pages on your category pages. The go-to links being subcategories e.g. linking from “Protein Powders” to “Chocolate Protein Powders”, “Strawberry Protein Powders”, “Peanut Butter Protein Powders”, etc.

This can also be navigational in style, similar to this:

On product pages, less links are needed. You may have 1 or 2 in the description, if it’s relevant.

But most importantly is linking to product variants, if any, like so:

This is firstly for visitors navigating your website, but also helps to show these products are all topically relevant.

Beyond that, it can be helpful to link to guides or tutorials relevant to this product, and you can optionally link to things like the brand name collection or other relevant categories.

Content Structure

The content structure refers to the markup used for headings, content, and different sections on your website.

A typical layout for a product page for example is:

Most Shopify themes get this right so you don’t need to do anything, but it’s definitely worth checking.

One common issue is that themes will use the logo as the H1 on the homepage. This leads to either multiple H1’s on the page, if you manually add one, or an unoptimised H1 if none is added.

Alt Text

Alternative text (alt text) along with image title are used to tell robots or accessibility users what an image is. It’s pretty important, not for robots, but for accessibility.

Don’t overcomplicate this. All you need to do is describe the images, which you can optionally use as an opportunity to include a secondary keyword. Just be careful not to over-optimise.

Here’s how you set them in Shopify, simply click an image, edit and set the alt text:

Is your stores On-Page SEO up to scratch? Book a custom video review.

Technical SEO

Beyond optimising for keywords, you also need to make sure your overall website is high quality and easy for search engines to crawl.

This is what we call Technical SEO and there’s a few things you should know as general site quality upkeep.

Canonicalise or Merge Product Variants

Product variants are something you have to watch out for as you’re creating a lot of products. If you’re creating a separate product for each variant, this can lead to a lot of unnecessary pages.

Here’s an example from Gymwear where they have 6 identical products besides the colour:

This may be a good thing if each one has search volume, but are people really searching for “core seamless t-shirt white” or “core seamless t-shirt red”? Probably not.

In which case, you can merge these all into a single product with variant options set within Shopify.

Or if that’s not user friendly, like in this case where users want to see all the colour options before clicking, you can use a simple “canonical tag”.

A canonical tag tells robots where to find the original version of a page. This allows you to have 6 products, but each of them point into a single product that robots (i.e. search engines) know is the original to index.

All you have to do is link to the “original” page in a canonical tag.

This can be achieved with a custom meta field, like you can edit here:

https://YOURSTORE.myshopify.com/admin/bulk?resource_name=Product&edit=metafields.global.canonical,metafields.seo.hidden:boolean&limit=250

Then modifying the theme.liquid file to use this meta field if applicable:

{% if product.metafields.global.canonical != blank %}
<link rel="canonical" href="{{ product.metafields.global.canonical }}">
{% else %}
<link rel="canonical" href="{{ canonical_url }}">
{% endif %}

301 Redirect Deleted Products

A much easier part of SEO maintenance is redirecting deleted products. This isn’t urgent, but it’s helpful for users (and robots) to be redirected to a relevant page rather than landing on a 404 page.

Thankfully, this is extremely easy to do.

Next time you’re deleting a product, go into the Shopify redirects section (Shopify Admin > Online Store > Navigation > View URL redirects):

And create a new redirect:

Then you can enter the old URL and where to redirect it to (the most similar product or collection), then it’s done:

Use Structured Data

Structured data is a method of explaining your content. This is usually done with Schema.org markup.

Most Shopify themes will integrate this by default, but it’s worth double checking and ensuring it’s set up correctly.

Product Structured Data

Product schema is probably already set up within your theme, but double check the setup here.

You want to make sure at least the following properties are used:

  • Name
  • Offer — Price, Availability, priceCurrency, URL
  • Brand
  • Description
  • Image

We’ve seen many themes skip the “URL” part of the offer, which is an easy fix, but usually causes a warning message in GSC.

Article Structured Data

For your blog posts, you’ll want to use Article structured data. Again, this is probably setup by default but worth checking.

You want to make sure at least the following properties are used:

  • Headline
  • Image
  • dateModified
  • datePublished

BreadcrumbList Structured Data

BreadcrumbList is a markup to explain the breadcrumb and the position of each link.

Position is important here for context. If you look at a typical breadcrumb, here’s how the positions work:

In schema.org code, this could look like so:

{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
  "itemListElement": [{
    "@type": "ListItem",
    "position": 1,
    "name": "Books",
    "item": "https://example.com/books"
  },{
    "@type": "ListItem",
    "position": 2,
    "name": "Authors",
    "item": "https://example.com/books/authors"
  },{
    "@type": "ListItem",
    "position": 3,
    "name": "Ann Leckie",
    "item": "https://example.com/books/authors/annleckie"
  }]
}

Make sure your theme is using this, it’ll probably be under Snippets (Store > Themes > Customize > Theme Actions > Edit Code) named breadcrumbs.liquid.

Remove from sitemap

Here’s an odd one, if you’ve ever used any other CMS before, your instinct would be that if you set a page to canonical or noindex, it’d automatically remove it from the sitemap. Unfortunately that isn’t the case.

Instead we need to manually remove from the sitemap, but there’s bad news again, there’s no real simple option for doing that.

Oh, and we can’t modify the sitemap out of the box. More fun.

Fortunately, there is a little known hidden meta field that can do this for you:

https://YOURSTORE.myshopify.com/admin/bulk?resource_name=Product&edit=metafields.global.canonical,metafields.seo.hidden:boolean&limit=250

The above link will let you edit the “hidden” SEO meta field, simply tick the box to remove from sitemap and modify a custom canonical meta field, if that’s the name you use (as explained above).

But there’s an important catch:

By ticking the “seo.hidden” meta field, you’ll automatically set your page to “noindex,nofollow”. Which means don’t index this page in your search engine AND don’t follow links. Neither option is ideal, and both are bad for canonicalised pages.

Therefore, I’d recommend having a developer strip this code from the page, similar to below.

Find {{ content_for_header }} in theme.liquid and replace with:

{% capture content_for_header_fixed %}
{{ content_for_header }}
{% endcapture %}  

{% if product.metafields.seo.hidden == 1 or collection.metafields.seo.hidden == 1 %}
    {{ content_for_header_fixed | remove: '<meta name="robots" content="noindex,nofollow">' }}
{% else %}
{{ content_for_header }}
{% endif %}

It’s a little bit of a hacky workaround, but it’ll work and it’s better overall for SEO.

Improve Site Speed

Another important thing that falls under Technical SEO, but really provides far more than that in benefits is optimising site speed.

This is a future blog post in and of itself, but let’s cover some fundamentals.

1. Lazy Load Images

Images are often the biggest reason for slow loading webpages.

There’s many things that can be done here, one thing that can make a big difference without changing the website is using lazy loading.

Lazy load means to defer the loading of something, usually images.

Say there’s 50 products on your collection page each with a unique image for each, that’s 50 images needing loaded. With lazy loading you can choose to load these later, say before a user scrolls down to look at this image.

Suddenly you’re loading 4-8 product images only, the rest are only loaded when the visitors scrolls down the page. This reduces the initial number of images loaded by as much as 92%.

Unfortunately how to do this is more of a development question than a simple addon, so I’d recommend hiring a developer to go at this for you.

2. Automatically compress images

Lazy loading will reduce the number of images being loaded, but it does nothing to the images that are still loaded – these can still be large files.

One easy trick for this is to compress them, better yet, automate that with a Shopify App.

There’s many apps for this, here’s 3 popular ones:

  1. Crush Pics [https://apps.shopify.com/crush-pics]
  2. TinyIMG [https://apps.shopify.com/smart-image-optimizer]
  3. Image Optimizer [https://apps.shopify.com/imageoptimizer

3. Manually resize large images

Compressing images reduces the file size as much as possible with as little damage to image quality as possible. But it’s only file size.

If your image is 10x larger than it needs to be, even compressing will leave a larger file size than needed. Therefore you also want to consider image size.

Use a tool like ScreamingFrog to identify large image file sizes:

It’s very likely these are big images, if so, decide if they actually need to be this size.

In many cases you’ll have images that are from a fancy camera with a width of 2,000+ pixels, whereas the image itself could be a few hundred pixels wide.

Simply save the file, resize it in any image editing app of your choice, then reupload (and compress!).

4. Delete unused Shopify Apps

Beyond images, a big issue with Shopify site speed is apps. Any app that modifies the front-end of the store by adding scripts can potentially add considerable delays to your page loading times.

I’d strongly consider if you need these apps in the first place, but especially for any that aren’t being used at all, make sure they’re:

  1. Deleted altogether as apps
  2. Delete any scripts and/or modifications they’ve made to your store

The latter usually requires a developer to look over, unfortunately this will need to be done manually and isn’t automated when uninstalling the app.

5. Use Google Tag Manager

As with Shopify Apps, scripts loaded on the page, especially from other domains can cause serious delays in page loading times.

Google Tag Manager allows significantly more control over this by using a single external script to load all your other scripts (one snippet of code, not one for each tool), along with full control over when this loads to save loading time.

You’ll still want to reduce the number of loaded scripts as much as possible though.

Link Building

Another important area is your off-site SEO, also known as link building.

What is link building?

Link building is the process of acquiring backlinks to your website. Backlinks are hyperlinks from other websites.

While the importance of backlinks has arguably lowered in recent years, it’s still a hugely important signal of trust and authority. The fact many other websites link to yours, signals they trust/like/vouch for your content therefore are recommending it to their own visitors.

Look at any top ranking website for any remotely competitive keyword, you’ll usually find they have hundreds (if not thousands) of websites linking to them.

Which pages to build backlinks to with eCommerce stores?

One important decision you’ll need to make over deliberate link building is which page to point the links at.

The main decision being between bottom of funnel (i.e. product or product category pages) or mid/top of funnel (i.e. content).

The actual answer is that it depends on what works for your competitors. But the easy answer is that backlinks tend to be more effective when pointed at the page you intend to rank i.e. your product category pages (usually).

How to build backlinks

As for how to land these backlink opportunities, this is a guide in and of itself, but the short answer is what we call “outreach”.

Outreach is where you connect with webmasters, bloggers, and writers to persuade them into linking to your website.

The actual persuasion element is usually an incentive in the form of payment, mutual value (i.e. helpful for their visitors), promotion, or similar.

In short, you reach out via email or social media to offer something in exchange for a link on their website.

How many backlinks do you need?

It depends.

To compete for a keyword, you want to have both a similar sized website to competitors (in terms of number of other websites linking to yours i.e. referring domains) and number of referring domains to this specific page.

There’s many exceptions to this, but the most accurate way of estimating is to compare the best ranking competitors and see how many they have (of quality) then aim to match that.

Quality meaning counting 1 backlink per website (i.e. referring domain), dofollow links only, and a minimum domain authority measurement of say 30+ Ahrefs DR.

Content Marketing

Another hugely important but often neglected area of SEO is content marketing. If done right, this will be your largest source of organic traffic.

What is Content Marketing?

Content marketing is the creation and promotion of informational content with the intention of driving traffic to generate sales either directly or indirectly via brand marketing.

For SEO specifically, it’s about creating content that people are searching for.

Your goal is to create the best piece of content for these keywords, rank top for this keyword, and further strengthen your brand while ideally either directly generating sales or indirectly via an email list.

Why Shopify Stores should run a blog

This has nothing to do with “freshness”. If you want to show Google your website is up to date, update your existing pages.

It’s specifically about expanding the keywords you’re able to rank for, therefore driving more traffic.

There’s a limit to the number of product categories and products you can have, beyond expanding the overall niche of your business. But there’s often nearly unlimited content topics you can write about.

Just look at any object in your home as an example. I’m currently sitting on an office chair, so off the top of my head:

  • What is the best office chair?
  • Leather or (uhh…mesh?) office chair
  • Best office chair for back support
  • Adjusting / ergonomics for office chairs

And that’s just for office chairs, you can expand into anything related to the office that ties in.

With all these pieces of content, plus the fact these keywords are usually less competitive, they’ll usually bring in significantly more traffic than your bottom of funnel pages.

How to setup a blog on Shopify

  1. From your Shopify admin, go to Online Store > Blog Posts.
  2. Click Manage blogs.
  3. Click Add blog.
  4. Give your blog a title, and then select how you want to manage comments.
  5. Click Save blog.

Usually people name their blog “blogs”, the only downside is it’ll lead to a weird URL such as example.com/blogs/blogs.

Instead I’d separate it by types of blog content i.e. /blogs/faqs, /blogs/guides, /blogs/news, etc.

Read more about creating a blog in Shopify’s documentation

What type of content to create

Once your blog is set up, it’s time to publish content. We’ll cover content ideas next, but first, it’s important to understand the “types of content”.

I’d recommend starting with middle of funnel content, then expanding into top of funnel later.

These terms are more opinions than anything else, but here’s what they mean:

Bottom Of Funnel, as explained previously, refers to pages that will directly generate a sale. If someone searches for “chocolate protein powder”, then lands on your category page, there’s a good chance they’re looking to buy now.

Middle Of Funnel is a level above that, they’re not looking to buy now but they’re researching prior to that. The classic example is “best office chair”, they’re not looking to buy an office chair, they’re looking for what the best one is to buy later.

Top Of Funnel is more about driving traffic and brand awareness. People may not be directly or even indirectly looking to purchase, but you’re getting a lot of eye-balls on your website that may buy at some point.

Usually you want to focus on creating content first that shows some level of intent to purchase, then expand into content without intent for branding and additional traffic purposes later.

Remember even without intent, you can often drive sales. A small percentage, sure, but that’s balanced out by the often high search volumes.

Finding Content Ideas

With the above details in mind, the first step to creating content is content topic ideation. Or in normal person language, coming up with content ideas.

The easiest way of doing this is through a content gap analysis.

A content gap is simply comparing the content on your competitors websites with what’s on your own website, then identifying the gaps. AKA copy your competitors ideas.

An easy way of doing this is with Ahrefs Content Gap tool. Open your website in Site Explorer, then click onto the Content Gap tool:

From there you can entire a few competitor URLs and run the tool:

This will give you a list of keywords and competitor ranking position for each:

From there you’d need to do a little additional research into the keywords, search volume, competition, and relevance to your business. As well as determining what the actual content idea would be for each keyword.

Is your Shopify SEO up to scratch? Book a custom video review.

Writing SEO friendly content

Once you’ve got some content ideas, it’s time to write the content briefs, then the content itself.

The easiest tool I can recommend for this is SurferSEO.

All you need to do is go into their Content Editor tool, type in the main keyword, modify the settings (I’d recommend using NLP!), and click the “Create Content Editor” button.

Once it’s done, open it up, and click the settings cog and select the competitors with similar content to what you’re creating:

From there, click Brief in the sidebar.

Surfer will then recommend an entire brief for you, with headings and a short paragraph under each. Copy and paste this into the content editor on the left.

Now you can get a little more detailed using the Guidelines tab, here you’ll see recommendations for length of content, number of images, what words and phrases to use, etc.

All of this is calculated for you within seconds by analysing the top ranking competitors for this specific keyword and determining what they’re doing. Essentially, copy what works!

From here, I like to copy this into a Google Doc and make notes in the brief of the above things when sending to clients, but you can also just write your content directly into Surfer where this is already listed.

This should give you a highly detailed content plan (i.e. brief) for writing the content yourself, or better yet, hiring an experienced writer to do it for you.

I’d recommend publishing 4+ blog posts a month. Not that the number matters, but that should be enough to get a decent amount of growth. If you want quicker, publish more.

Downsides of Shopify for SEO

At this point, you should have a solid understanding of how to optimise a Shopify store. But there’s a few things you should know if you’re not on Shopify yet, or simply want a full understanding of the platform and limitations.

Limited control over Directory Structure

As mentioned previously, your URLs are strict.

Product categories are always:
/collections/name-of-category

Product pages are always:
/products/name-of-product

By default there’s no customisation of this and no subdirectories for subcategories.

I have seen instances where stores have modified this, but it requires a lot of work to customise theme functionality, making the setup and customisation significantly more complex. Personally, I wouldn’t recommend it.

Unable to edit Robots.txt

It’s now possible to edit Robots.txt on Shopify stores!

No Crawl Logs

Servers by default will keep a “log file” to keep track of every request by robots or users to your website.

For SEOs, this can be useful when combined with a log analysis tool for measuring how often your website is crawled, which pages/resources are crawled most or lead often, etc.

Unfortunately this isn’t an option with Shopify as we’re not given access to the log file.

Is this a big deal? Not particularly.

The additional data is helpful to measure the impact of technical SEO changes, but between Google Search Console data and following best practices, you can cover things anyway.

No default option to remove from Sitemap

The sitemap by default can’t be customised. Ideally, there would be a simple checkbox to say “Hide from Sitemap”, but there isn’t.

Instead as explained in the “Remove from sitemap” section, you’ll have to use the seo.hidden meta field, then code up a workaround so the page isn’t set as “noindex, nofollow”.

Again, it’s not a big deal as there’s a solution, but most stores we’ve seen aren’t aware of this and will have conflict issues with noindexed or canonicalised URLs appearing in sitemap.

Final Thoughts

Despite the downsides, Shopify is a great platform for eCommerce and surprisingly quite good out of the box for SEO.

There’s no need to download apps to customise fundamental SEO elements, most themes will have Schema.org built in, and when combined with a little Liquid knowledge – you can do almost anything.

Overall, I love the platform and community, and we’ll continue working with Shopify clients for our SEO services. Which, shameless plug, you can get in touch with us if you’re interested.

Is your Shopify SEO up to scratch? Book a custom video review.