Key SEO Considerations for Shopify
At NOVOS we work with many clients that use Shopify as their CMS; many eCommerce websites choose Shopify due to its easy out-of-the-box setup and maintenance. However, there are also common issues and opportunities that we see consistently across websites that use Shopify.
In this article we’ll run through some key SEO considerations of Shopify, their benefits, limitations and how to work around them and unleash the potential of your Shopify website.
Information Architecture
Subfolder limitations
All URLs on Shopify follow the same three general structures: Products – /products/example-product Collections – /collections/collection-name Pages – /pages/example-page
This makes Shopify very easy to set up and preserves the structure of URLs throughout the domains use, however, can become very limiting. For example, you cannot introduce subfolders for collections to indicate a subset of products such as product types or brands – these have to be added as their own separate collection.
As a result, it’s harder to define a hierarchy of which products live in which collections. This causes particular challenges when linking products back to their relevant collections and subcollections. Proving a challenge for Google as it can not use the internal links or URL structure to understand the architecture of the website.
Product variants
Shopify allows you to specify product variants under a particular product; when selected the variant product creates a parameterised URL: Product – /products/example-product Variant – /products/example-product?variant=16361451585582
This is a great solution in most cases unless you want particular product variants to be indexed. The solution is to create each variant as its own product; perfect if starting from scratch, however, a significant undertaking if your site already has hundreds or thousands of products.
Product URLs
By default, Shopify will use a long product URL with the parent collection included. E.g.
/collections/collection-name/products/example-product
The canonical tag is natively set to the clean URL which would be /products/example-product. This does help SEO in a way as it avoids duplicate product urls for products that live in multiple collections.
Basic Optimisation
Page title and meta description limits
Shopify has a character limit on page titles and meta descriptions, however, these are not the same as the optimal character limits for SEO, which can cause some confusion.
For example, the meta description limit in Shopify is 320, whereas ideally, meta description limits are ~160 characters (pixel limit actual).
There’s nothing particularly wrong with a long meta description however it’s highly unlikely Google will show the full description and will therefore take a snippet from the site. This defeats the purpose of writing and implementing meta descriptions. Therefore we’d always recommend keeping within the limits.
Internal Linking
Page Duplication
Page Types
By default two types of product pages are created on Shopify:
- /product/example-product-1
- /collections/collection-name/product/example-product-1
Shopify also creates view-all collection pages by faults, which creates a third example of a page, which are shown on the front-end by default.:
- /collections/all-products/products/example-product-1
These pages by default contain a canonical to the flat product URL (number 1), however, can have a serious impact on the internal linking signals on your site.
Ideally, you want all your internal links pointing to your canonical URL we want to be ranking. You wouldn’t want to be relying on Google to read the canonical, index that URL, and apply the authority of all internal links. (/product/example-product-1). However, Shopify links to the product inside it’s collection from the collection pages (/collections/collection-name/product/example-product-1 and /collections/all-products/products/example-product-1).
To change this internal linking structure, you need to edit the theme.liquid file. If this is a particular concern or challenge for you, read Paul Rogers’ guide on how to change this in Shopify
Filters, Facets, and Indexing
Shopify natively only supports basic filtering using tags; whilst useful for UX this is often not enough for many eCommerce sites.
Apps are available to create more complex filtering systems that allow for multiple filters to be selected, filters to be bespoke and the order of filters to be changed, for example:
https://boostcommerce.net/ (this applies nofollow tags to the clickable filters to ensure that the crawl budget is not negatively impacted).
Breadcrumbs
Shopify doesn’t by default support breadcrumbs, however, they can quite easily be added to the Shopify CMS. They are however limited to a 3 level depth.
Home > Level 1 > Level 2 > Level 3
Breadcrumbs can be added to Shopify and edited using the following instructions to edit the theme.liquid https://help.shopify.com/en/themes/customization/navigation/add-breadcrumbs
However, there are also several apps that allow you to control the breadcrumbs in a more user-friendly manner. Some of those that we have used with our clients include:
- theme.liquid that bases breadcrumbs on the menu structure – http://raisedbyturtles.org/shopify-breadcrumbs-based-on-menu-structure
- Metafields editor for Shopify
Properly implemented breadcrumbs can help to define the architecture of a site and the relationship between pages beyond the limitations imposed by Shopify’s subfolder limitations. Once implemented breadcrumbs should be marked up using JSON structured data. This makes it crystal clear to Google how the site is structured, with the additional benefit of having neat URLs in the SERPs.
Please see an example below of breadcrumbs with structured data, followed by one without.
Crawling & Indexing
Robots.txt control
Shopify still comes with the default robots.txt file but as of 2021, you can now edit it. This can be done through the robots.txt.liquid and the following changes can be made to it:
- Allow or disallow certain URLs from being crawled.
- Add crawl-delay rules for certain crawlers.
- Add extra sitemap URLs.
- Block certain crawlers.
The robots.txt file is located at the root directory of your Shopify store’s domain name. For example, domain-name.com/robots.txt. Here’s how to edit it:
- From your Shopify admin, go to Online Store > Themes.
- Actions > Edit Code.
- Add a new template > robots.
- Click Create template.
- Make the changes.
- Save changes to the robots.txt.liquid file in your published theme.
For more information on liquid variables and common use cases, refer to Shopify’s Developer page.
Noindex, nofollow controls
To control which pages appear in Google’s index, Shopify does allow you to apply both noindex and nofollow tags.
Noindex can be added to the theme.liquid file to help control which pages are crawled and indexed at a page, or template level using the following method – https://help.shopify.com/en/manual/promoting-marketing/seo/hide-a-page-from-search-engines
Nofollow can be included using the same method, however, by including “nofollow” instead or, or as well as nofollow (for example noindex, nofollow).
However, there are also apps that can help with a less manual method of implementation. We recommend using the Sitemap & NoIndex Manager app.
Redirection
Shopify does allow you to redirect URLs (Online Store > Navigation > URL Redirect > Create URL Redirect). This is an easy and intuitive system to easily control redirects which is great.
However, there is a limit of 100,000 redirects with Shopify straight out of the box.
100,000 redirects sounds like a lot, however, if you’re running a medium-large ecommerce site that has a large product turnaround these numbers can quickly add up.
If you’re migrating to a new domain, or away from the Shopify CMS this can also pose an issue, since you may not be able to redirect all the pages on your site.
Global redirection
Global redirection (for example non-www to www versions of a site) can be implemented via Online Store > Domains.
Here you can set a primary domain (the version you want to be accessible), in addition to any third-party domains you have registered. These third-party domains will automatically redirect to your primary domain if accessed.
Sitemap Control
Shopify creates its own sitemaps for websites, broken down by the page type in a sitemap index. This makes it incredibly easy to upload to Google Search Console and monitor their performance. These can be found from the following locations:
- Sitemap index – example.com/sitemap.xml
- Products – example.com/sitemap_products_1.xml
- Pages – example.com/sitemap_pages_1.xml
- Collections – example.com/sitemap_collections_1.xml
- Blogs – example.com/sitemap_blogs_1.xml
However, sitemaps cannot be edited or uploaded manually. This does not generally pose an issue, however, there may be circumstances in which you want to more closely control what is shown in a sitemap (for example included old URLs in a sitemap to help to remove from Google’s index for the period following a migration, or including hreflang sitemaps for an international store).
There is a hack to overcome this, however, which you can find in our step by step guide on how to create a custom XML sitemap in Shopify article.
Structured Data
Most Shopify themes include basic product structured data, Google recommends that JSON-LD format is used when specifying structured markup.
There are many apps available that allow Shopify websites to add schema to their products, some of those our clients use include:
Page Speed
Remove any irrelevant apps
Shopify apps (although very useful in many regards), can have a negative impact on your site speed as they have to load resources when the page is requested.
Therefore, any apps not in use should be removed. It’s also crucial to remove any associated files from your theme code, as some apps inject code automatically when installed!
Lazy load images
Lazy loading prevents images that are out of view (offscreen) from being loaded until they are required. This reduces the number of files that are required to load before a site can be interacted with (time-to-interactive), making the site load faster.
Dynamic serving images
Themes can be set to “srcset” to pull appropriate image sizes based on screen resolution.
Compress images
Ecommerce sites are often very image-heavy due to the benefits of clearly showing products to visitors. However, this can have a significant impact on loading times.
International SEO & Hreflang
If you’re on the Shopify, Advanced Shopify, or Shopify Plus plan, you can use the international domains feature to create region-specific or country-specific domains. When you use international domains, sitemap files are generated for all domains. All of your domains are discoverable by search engines unless they redirect to your primary domain.
Shopify ccTLDs, country subdomains, and country subfolders
Shopify does support international expansion, however, is not optimised perfectly for SEO. This is because it doesn’t allow country subfolders, therefore, if you want to expand internationally you have two options:
- Create a country subdomain
- Use a new domain or country TLD
Whilst Google reiterates that there should be no difference between the SEO benefits of subdomain vs subfolder, this is still a topic that divides opinion.
Your products can be duplicated to ensure that alternate language/location sites contain the same products.
Hreflang
Shopify by default does not contain hreflang, however, the code can be added to the theme.liquid.
The code can automatically generate the URLs required for the different location subdomains/domains and a run-through is described here.
Since most international stores are generated by copying the original Shopify store, this means that URLs will be in the original language.
Similarly, this can cause errors if some products are only available in certain locations, as the hreflang will generate for all alternatives. For example, even if a product (example-product) only exists in en/gb it will generate for all locations:
example.com/en/gb/example-product/ – exists as product
example.com/fr/fr/example-product/ – does not exist, still referenced in hreflang
example.com/de/de/example-product/ – does not exist, still referenced in hreflang
There are apps available that can translate your website content, in addition to helping to create hreflang:
Shopify Hreflang Sitemaps
Due to Shopify’s automatically generated sitemaps and restrictions on creating your own bespoke XML sitemaps, hreflang cannot be implemented via sitemaps.
Security
All Shopify websites by default come with an SSL certificate so you can transfer information over a secure HTTPS protocol. Simple and easy!
Content Marketing
Shopify allows you to create a blog to support your products with useful, informational content and to generate visitors through targeting keywords relevant to your product.
You can also link to a blog hosted on a different platform such as WordPress, Tumblr or Blogger if you prefer the functionality of these platforms.
The Shopify blog allows you to edit content, including metadata (page titles, meta descriptions etc), change formatting such as headings, lists as standard. You can also assign an author and publish date. Articles can also be assigned bespoke categories (ie news, reviews etc.) and tags.
Blog categories are linked to from the blog post and can be crawled/indexed so it’s best not to go too mad with the categories. New pages are not created for the authors assigned.
Shopify SEO FAQs
Does Shopify have good SEO?
As with any CMS, there are benefits and limitations to Shopify’s SEO. However, as we have discussed in this article, there are very often workarounds to the SEO limitations set up Shopify’s default SEO set up.
Perhaps the main SEO consideration with choosing Shopify is the size and location of your eCommerce site, as very large or international stores may benefit from an enterprise solution, such as Magento 2.
How to upload meta data?
Shopify doesn’t provide the option to bulk upload meta descriptions or title tags to Shopify. However, we recommend using an app, FavSEO, that allows you to do this.
Do Shopify tags help SEO?
Shopify product tags are generally just to organise products in the backend of the site. Tags can also be used to help to filter down products using Shopify’s default filtering options.
What is the best SEO app for Shopify?
There isn’t one app for Shopify that can be considered the “best” for SEO, however, many different apps have specific uses for which they may be suited. We have made a list of the most commonly used Shopify apps.
The best way to choose the right app is to define your need (what problem do you need solving?) and then research and test the apps that can fulfil that problem or service.
Conclusion
To conclude, from a pure SEO perspective, Shopify is the best CMS out there at the moment in terms of an almost guaranteed 6/10 score for your onsite SEO with a very limited developer or SEO consultancy input. With an SEO consultant supporting we can take it to a 9/10 but there are platform limitations that don’t allow the site to get to a 10/10. Mainly the lack of flexibility mentioned throughout this post.
When compared to out of the box Magento, which often has a 1/10 SEO score for a large site, then it’s easy to see why so many sites are migrating away from Magento to Shopify.
If additional flexibility is key for your company then you can explore a headless Shopify CMS set up where you’d allow additional front end flexibility. This will require considerably more resource from an experienced SEO and a few developers.
Find out more about our Shopify SEO services.