Over the last few weeks I’ve been working with two retailers who are in the process of moving to Shopify Plus and both have raised issues with the URL structure in different places. It’s a question I get asked a lot anyway, so I decided to write a quick blog post on my findings to date on the options that retailers have.
The URL structure most eCommerce businesses / platforms are moving from
Generally, the retailer looking at Shopify Plus will be moving from another platform that allows for the following:
- Product URLs on the root – e.g. /red-
nike-trainers (whilst retaining an ability to create a breadcrumb trail generally)
- Hierarchical category URLs based on a parent > child relationship – e.g. /flowers/roses/red (which inherit logic based on the parent, but that’s a whole different blog post!)
- The ability to build landing pages on the root – e.g. /
- The ability to customise how things like sort / order and filtered URLs work – e.g. ?filter=red vs #filter=red
That said, this is only if you’re moving from one of the mainstream platform or another option with a very clean SEO / URL setup – most ASP.net platforms would build a URL around a product or category ID and lots of bespoke platforms would do something similar.
So, as you may have already found from researching, this is an area where Shopify and Shopify Plus are super rigid, which comes as a result of being a SaaS platform that operates at a huge scale and it applies to various other areas of the platform too. That said, depending on what you’re looking to achieve, there are options for a small level of
Shopify’s native URL structure
Product URL structure
Natively, product URLs are within a /products/ sub-folder and they retain the category path within the URL, so for example:
https://uk.gymshark.com/collections/shorts/products/gymshark-elevate-cycling-short-dusky-pink – it’s worth noting that the canonical URL will be set to the top-level equivalent of this page still (which in this case is https://uk.gymshark.com/products/gymshark-elevate-cycling-short-dusky-pink).
This can be adapted so that the category path isn’t included in the URL by changing the template – which is detailed more in this post I wrote. You essentially just need to make a very small change in the liquid templates. The new version of the URLs would look like:
https://www.trotters.co.uk/products/felix-pyjamas – using this approach means that the canonical URL would match the URL that’s being linked to across the website. The downside to this approach is that Shopify would natively use the URL to build the breadcrumbs, but this can also be achieved via custom logic or various apps.
Shopify’s native handling of collection URLs is fixed and consists of:
- https://www.emmabridgewater.co.uk/collections/vases < all collection URLs are within the /collections/ folder, this cannot be changed.
- Collections aren’t able to use / in the URL to replicate a conventional directory structure – if you input / within a URL, it will be changed to a hyphen, so a URL like https://www.emmabridgewater.co.uk/collections/vases/glass/red would be re-written to https://www.emmabridgewater.co.uk/collections/vases-glass-red
- Shopify also doesn’t natively support a parent > child relationship in a back-end capacity either – so for example inheriting visual merchandising logic from the parent.
Alternative options / routes for achieving a parent / child approach
The only alternative approach I’ve found to allow for hierarchical URLs is to use tags / filtered pages for an additional layer, which would look like:
- This is achieved through using the first layer of filtering (a tag) and injecting content and custom meta data onto the page (as per the Gymshark example above). This allows the page to emulate a collection from an SEO perspective only – not a management perspective.
There are a number of disadvantages to this approach, these are:
- The tagged URLs won’t have the same flexibility in terms of merchandising (e.g. sorting of products and other base functionality for collections)
- The canonical logic will need to be amended to allow for only specific URLs to self-reference (the other filtered pages would still need to reference the original collection URL) – which will require manual tagging logic of some form.
- Should you migrate away from Shopify at any point, it would be difficult to migrate these pages
- It’s a customisation that would limit flexibility generally – e.g. using different APIs to control aspects of the collection (e.g. a product recommendation block).
- This will become unmanageable as you scale
This also only allows for a single level of folders, so some of the URLs would need to be flattened anyway (where you have multiple levels currently). You could look to achieve a hybrid approach, where only the last level of existing categories used tags, but this defeats the object a little bit.
I would personally suggest that this approach isn’t a good one, as it will require a lot of customisation and will restrict merchandising capabilities and long-term effectiveness of the Shopify Plus platform.
CMS page / landing page URLs
This is generally less commonly asked about, but the same principle applies for pages – the native setup is /pages/xx – this isn’t as important in my important.
Common questions around Shopify URLs:
Can you remove the /products/ directory from product URLs in Shopify? Unfortunately, the answer to this is no – these are currently fixed and there’s no workaround that I’m aware of.
Can you use sub-directories / sub-folders for international stores? Unfortunately, the answer to this is not currently. Currently you can only use CCtlds and sub-domains, but I’d imagine this will change in the future.
What’s the best approach for international store URLs? This depends, but the only real options you have is sub-domain (e.g. uk.paulnrogers.com) or a top-level domain (e.g. paulnrogers.es)
Can you create pages on the root? The answer to this is no – all pages have either /pages/, /collections/ or /products/ in the email.