Shopify handles much of technical SEO itself. According to the Shopify Help Center, every Shopify store automatically gets a sitemap, canonical tags and a robots.txt, themes generate titles that include your store name, and markets with their own URL get hreflang automatically. You take care of the content of product and collection pages, titles and descriptions, redirects for removed products and checks on apps and themes that add code.
What does Shopify handle by default?
Shopify’s SEO overview describes which parts happen automatically. The table below also shows what is left for you to do. How to make the content itself stronger is covered in category pages that get found and the checklist for product pages.
| Part | What Shopify does | What you do |
|---|---|---|
| Sitemap | Creates sitemap.xml automatically and keeps it up to date | Submit it to Google Search Console |
| Canonical tags | Adds canonicals automatically to limit duplicate content | Check that your theme and apps do not change them |
| Robots.txt | Supplies a default file that excludes admin, cart, checkout and account pages | Only change it if you really need to |
| Titles | Themes generate titles that include your store name | Write your own title and description for each product, collection and page |
| URLs | Uses fixed paths with a readable last part | Choose handles that describe what is on the page |
| Hreflang | Adds hreflang automatically for markets with their own domain, subdomain or subfolder | Check that the translated content is right |
| Redirects | Offers an overview where you manage redirects | Create redirects for removed or moved products |
How do URLs and duplicate addresses work in Shopify?
Shopify uses fixed paths for product pages (/products/) and collections (/collections/). You decide the last part of the URL, the handle. In its SEO overview, Shopify advises making URLs match the content. Choose a handle that says what the product is, such as /products/womens-waterproof-rain-jacket, and change it as little as possible afterwards. If you have to, set up a redirect from the old address to the new one.
Some Shopify themes link from a collection page to a product address within that collection, such as /collections/rainwear/products/womens-waterproof-rain-jacket. The same product is then also at /products/womens-waterproof-rain-jacket. Shopify builds those links with the Liquid filter within, and the documentation for that filter warns that the product then has the same content at different URLs.
One product, two addresses
| Product address | Address through a collection | |
|---|---|---|
| Example | /products/womens-waterproof-rain-jacket | /collections/rainwear/products/womens-waterproof-rain-jacket |
| How does it arise? | The standard link to a product | A theme that builds product links with the within filter |
| Where should the canonical point? | To itself | To /products/womens-waterproof-rain-jacket |
| Link to it internally? | Yes, this is the main version | Better not |
Shopify adds canonical tags automatically to limit duplicate content. Check that on such a page the canonical points to the plain product address: open a product through a collection page, check whether the URL contains /collections/.../products/..., open the source code and search for rel="canonical". This is what should be there:
<link rel="canonical" href="https://example.com/products/womens-waterproof-rain-jacket">Link internally to the canonical version yourself as well: links to variants send a conflicting signal. If your theme links to the collection path everywhere, a developer can change the product links in the theme.
How do you decide what Google sees in your Shopify store?
Shopify’s default robots.txt excludes filtered and sorted collection URLs to avoid duplicate content. That is set out in the guide to robots.txt.liquid. If you do want a particular filter combination to be found, such as “rain jackets in size XL”, make it a collection of its own with its own text. That works better than opening up filter URLs.
You can edit robots.txt through a robots.txt.liquid template in your theme. Shopify recommends adding to the default rules with Liquid rather than replacing the file with plain text, so that Shopify can keep updating the default rules. Shopify Support does not help with this customisation, and the documentation warns: “Incorrect use of the feature can result in loss of all traffic.” So only edit the file when you know why, and test every change. To go back to the default, delete the template.
To take a single page out of Google, do not use robots.txt. The guide to hiding pages from search engines offers three methods:
- The
seo.hiddenmetafield, set to 1 on a page, blog post or product. It hides that item from search engines, the sitemap and your store’s own search. - The Unlisted status for products. The product disappears from search engines and the sitemap, but stays reachable through its direct link.
- A noindex tag that you add in
theme.liquidfor a specific page.
A page blocked in robots.txt can still appear in Google, and Google does not see a noindex if the page is blocked.
What do you do with removed products and changed URLs?
When you delete a product, its old URL returns a 404. In its SEO overview, Shopify advises setting up 301 redirects when you move or discontinue products.
Setting up a redirect for a removed product
- DestinationChoose the most similar product or the right collection, not your homepage.
- RemoveDelete the product or set it to draft, so the old URL returns a 404.
- RedirectCreate the redirect under Content > Menus > View URL redirects, from the old path to the destination.
- TestOpen the old address in your browser and check that you land on the new page.
A few rules from the documentation on URL redirects:
- If the old page still loads, the redirect does nothing.
- If you set a product to draft or hide a collection, the URL returns a 404 and a redirect can work.
- If you make that product or collection visible again later, Shopify removes the redirect automatically.
- A redirect applies to all your market subfolders, unless you create separate redirects per market.
What a 301 does exactly is explained in the glossary entry 301 redirect.
How do apps and themes affect your SEO?
Apps and themes add code to your pages. Shopify’s SEO FAQ says an SEO app can introduce its own title tag logic that does not work for every page type. The same can happen with structured data. According to the SEO overview, structured data is already built into Shopify themes. A theme and an app that both put product data in JSON-LD therefore produce two blocks that may contradict each other.
After installing or removing an app, check:
- the
<title>of a product, a collection and the homepage; - the canonical on those same pages;
- the number of
application/ld+jsonblocks, and whether the price and stock in them match the page.
Which structured data an online shop needs is covered in which structured data does an online shop need?
Every app that loads scripts also makes your pages heavier. Remove apps you no longer use and check that they have removed their code from your theme. The Core Web Vitals report in Google Search Console shows how your pages perform for real visitors.
How does SEO work with Shopify Markets and several languages?
If you sell in several countries or languages, Shopify adds hreflang automatically. This is on by default for all stores. Shopify only creates those references for markets with their own domain, subdomain or subfolder: if all your markets share one URL, there are no alternate versions to point to. The sitemaps include the hreflang references as well.
For most stores Shopify recommends subfolders, such as /en-gb/ alongside /, because they are the simplest to manage. Do not turn automatic hreflang off unless you have another solution in place. Shopify warns that turning it off can harm your SEO.
Machine-translated text deserves a check by someone who speaks the language. Hreflang tells Google which version belongs to which audience; it does nothing for the quality of the translation itself.
What should you watch at launch?
While your store is password-protected, Google cannot read the sitemap. Turn off the password page as soon as you go live. In its SEO overview, Shopify advises adding your full domain to Google Search Console; submit yourdomain.com/sitemap.xml there. If you are switching from another system, list every old address and its new destination before you switch. How to approach that is covered in redesigning your website without losing your findability.
Checklist for your Shopify store
- Password page turned off after launch
- Sitemap submitted to Google Search Console
- Every collection and every important product has its own title and description
- The canonical of a product opened through a collection points to /products/...
- No duplicate titles or JSON-LD blocks caused by apps
- Redirects for removed and moved products
- Automatic hreflang on, with translations checked
- Unused apps removed, including their code in the theme
More checks that apply to every website are in the technical SEO checklist. If you are still choosing a platform, read Shopify or WooCommerce: which suits your online shop?
How does Outseen approach Shopify stores?
Together with WooCommerce, Shopify is Outseen’s standard approach for online shops. Our research engine Atlas, developed by Outseen, examines the public code your store returns: titles, descriptions, robots rules, indexing instructions, canonicals and what their target page actually returns, internal links, hreflang between the fetched pages and supported JSON-LD such as product and breadcrumb. A specialist assesses the findings and decides which improvements come first. More on the approach is on the SEO page.
What does this mean for your business?
On Shopify you do not have to build the technical foundation yourself. Your work lies in three things Shopify cannot do for you: writing text for your products and collections, setting redirects when your range changes, and checking what apps and themes add to your pages. Stores forget that last one most often, because an app can look fine in the shop while it adds a second title or a second product block in the code.
So plan a fixed check after every new app, every new theme and every big clear-out of your range. Open a product, a collection and your homepage, and look at the title, the canonical and the JSON-LD in the source code. That way you find a mistake before Google has seen it for a few weeks.