Skip to content

Shopify SEO: what the platform does on its own and what it doesn't (test on 24 UK stores)

Author: Matteo Pellegrini

Shopify SEO is the work on a Shopify store's collections, product pages, copy, internal links and language versions that gets it found on Google: the sitemap, robots.txt, canonicals and SSL certificate are already handled by the platform. In our test on 24 UK Shopify stores on page one of Google (10 October 2026), the problems were elsewhere: 13 stores out of 24 linked their products from a duplicate URL, 9 of the collections we opened had no description text, or three words at most, and 20 stores left /collections/all with Shopify's default "Products" or "All" title.

Shopify sells the idea that SEO "comes included" very well.

And it's true, by half.

The basic technical half works on its own, without touching anything. The other half depends on the theme, on your Markets settings and on what you write in the fields. That's where the same mistakes keep turning up:

  • the theme is left to link products with an address Google then has to discard;
  • collection titles are left as they come: too long, reduced to one or two words, or missing;
  • languages and automatic redirection are switched on without checking what someone arriving from another country sees.

The guides on page one of Google UK for "shopify seo" mostly repeat the generic checklist (titles, meta, alt text, blog). None of the ones we read measured how Shopify actually handles nested URLs, filters and /collections/all on real stores. That's why we went and looked at the code of 24 of them.

We do the same on the stores we work on. Scovaventi, an Italian food producer, had a store with visits but no sales: with the new Shopify store and the campaigns it closed twelve months with more than €77,000 in sales and an average order value of €190.

Bosatta sells spare parts in four markets (Italy, Spain, France, Germany) and moved to Shopify from an ageing CMS: €240,000 in sales in a year and 127 enquiries from dealers and workshops.

What do they have to do with Shopify SEO?

A store in several languages and four markets is exactly the case where hreflang and automatic redirects decide which version Google sees. We'll get there in the section on Markets, with the numbers.

Here you'll find:

  • what Shopify does on its own and what's left to you, with the official documentation;
  • the test on 24 UK stores, with the method so you can repeat it;
  • the three places where Shopify goes wrong without telling you: product URLs, filters and languages;
  • how to migrate to Shopify without losing rankings.

We've already covered SEO apps separately, with the test on 24 product pages and 8 apps compared: we won't repeat it here.

Let's start.

What Shopify does for SEO on its own (and what it leaves to you)

Shopify generates the sitemap, robots.txt, canonical tags and hreflang without you doing anything, and gives you fields for the title, meta description and URL of every product, collection and page. What it doesn't let you change is the address structure: /products/, /collections/, /pages/ and /blogs/ are fixed.

That's the main difference from WordPress, which in the UK runs 57.3% of .uk sites with a known CMS against 10.4% for Shopify, according to W3Techs (figures for 10 October 2026). The full comparison between platforms is in our guide to the best CMS for SEO.

ElementWhat Shopify does on its ownWhat's left to you
Sitemap.xmlGenerates and updates it, split by content typeSubmitting it in Search Console, one per domain
robots.txtDefault file, editable only through the robots.txt.liquid templateDeciding whether to block single filters (see below)
CanonicalPrinted by the theme with the canonical_url object; filters and nested URLs point to the main pageChecking that internal links point to the canonical version
hreflangAutomatic with Markets, through content_for_headerChecking how many alternates you declare and the redirects by language
301 redirectsAdded by hand or from CSV, up to 100,000 (20 million on Plus)Mapping them before a migration
URL structureFixed prefixes: /products/, /collections/, /pages/, /blogs/Choosing the handle carefully, because the prefix can't change
Title and meta descriptionOne field per item: up to 70 characters in the title, 160 recommended for the descriptionWriting them instead of leaving the defaults, and checking what the theme adds
Structured dataDepends on the themeStopping theme and apps from writing two Products

Here's something the guides don't have yet.

The default robots.txt Shopify serves today opens with a block of comments addressed to AI agents: it points to an agents.md file and to a UCP/MCP endpoint for catalogue, cart and checkout, and warns that payment requires the buyer's approval. We read it on two stores in the sample on 10 October 2026, with 50 Disallow lines each. What it means for merchants is in our guide to agentic commerce.

The test: 24 UK Shopify stores on page one (method and results)

On 24 UK Shopify stores that appear on page one of Google, the part handled by the platform was almost always in order: a canonical on every collection, filters pointed back to the main collection. The gaps were in the theme and in what nobody had written.

Here's the method, so you can repeat it.

On 10 October 2026 we used DataForSEO to read Google UK organic results (desktop) for five product searches: coffee beans online, handmade scented candles, handmade silver jewellery, loose leaf tea online and buy extra virgin olive oil online. Of the 35 shop domains we checked, 24 ran on Shopify (identified through the public /products.json endpoint). It's the same sample as our test on Shopify SEO apps. For each store we opened one collection in the HTML as served, without running JavaScript, counted the links to products, then checked the canonical, a single filter, /collections/all and hreflang. After a few dozen requests Shopify started answering 429 (too many requests) to our server, so we spread the checks out with pauses between calls.

CheckResultStores checked
Collection with a canonical pointing to itself24 out of 2424
Product grid linking to /collections/…/products/13 out of 2424
Nested URL with a canonical to /products/23 out of 24 (the 24th points to the home page)24
Single filter (?filter.v.availability=1) with a canonical to the collection24 out of 2424
Collection title over 60 characters5 out of 24 (from 63 to 107; a sixth has no title tag)24
/collections/all indexable (200, self-canonical, no noindex)24 out of 2424
/collections/all with the default title "Products" or "All"20 out of 24 (one more has no title)24
/collections/all with no meta description19 out of 2424
Collection with hreflang tags0 out of 2424
Visitor sent to another language0 out of 2424

What does this table tell us?

That in the test Shopify's canonical went wrong only once, and that was the theme's doing. What went wrong was everything around it.

We don't name the stores one by one: they're public sites, but the point isn't who gets it wrong. It's that the same mistakes come back in different sectors, from coffee to jewellery, because they stem from the same theme settings.

The duplicate product URL: /collections/…/products/ (and why the canonical isn't enough)

On Shopify every product answers at several addresses: the main one, /products/name, and one for each collection it appears in, /collections/collection-name/products/name. The second comes from the Liquid filter within, and Shopify's own documentation warns that the two pages have the same content on separate URLs.

In the test the handling was nearly always correct: 23 nested URLs out of 24 declared the canonical to /products/. The 24th pointed to the home page, and so did the product page itself: a theme problem that has nothing to do with collections. Even on the 11 stores whose grid never links the nested version, that address answered 200: the duplicate exists whether you use it or not.

The problem is the link.

In 13 stores out of 24 the collection grid pointed to nested URLs. On a jewellery store there were 48 nested links and no direct ones; on a candle store, 30 against 1.

That way the store tells Google two different things: the canonical says /products/, the internal links say /collections/…/products/. In its guide to duplicate URLs Google asks for the opposite: "link to the canonical URL rather than a duplicate URL".

But if the canonical is there, what harm does it do?

It isn't a penalty. The canonical is a hint, and internal links are another signal: when the two don't match, Googlebot crawls more addresses for the same product and the choice of which version to index becomes less predictable. On a catalogue of 500 products that each sit in three collections, that's 1,500 extra URLs to visit.

The fix is one line in the theme. In the product card snippet (often card-product.liquid or product-grid-item.liquid) look for product.url | within: collection and replace it with product.url. You only lose the breadcrumb if you were building it from the URL.

Variants work the same way. URLs with ?variant= carry the canonical of the main product by default (we checked it on two stores in the sample), as Ahrefs points out in its Shopify guide: if a variant has search demand of its own (a much-searched colour, a size), it should become a product in its own right. Duplicates in general are covered in our guide to duplicate content.

Which URL does your theme link?

You've just seen that 13 stores out of 24 link their products from the address Google has to discard, and that /collections/all is left with its default title on almost all of them. We check your theme on the same points as the test and tell you which fixes are worth your developer's time and which aren't.

Book a strategy consultation

Filters, tags and /collections/all: the pages Shopify creates without asking

Shopify's default robots.txt blocks sorted collections (sort_by), tag combinations with "+" and combinations of two or more filters. It doesn't block a single filter or a single tag: those addresses stay crawlable and rely on the canonical.

In the test, the single filter had a canonical to the main collection on all 24 stores. That's fine for Google, with a limit it explains on its page about faceted navigation (updated December 2025): the canonical "may, over time, decrease the crawl volume" of filtered versions, but it is "generally less effective in the long term" than blocking them in robots.txt.

So should I block every filter?

No. First ask which filters match a real search.

"Assam tea" is a search, with 5,400 a month on Google UK (DataForSEO, September 2026), and one of the tea shops in the test doesn't leave it to a filter: it has a dedicated collection, with its own URL and title. "In stock: yes" isn't a search. The rule we use is simple:

  • the filter matches a keyword with volume → it becomes a real collection, with its own URL, title and copy;
  • the filter only helps people browse → it stays a filter, and if the catalogue is large you block it in robots.txt.liquid.

Be careful with that file: Shopify says editing it is an unsupported customisation and that "incorrect use of the feature can result in loss of all traffic" (Shopify Help Center). Add rules to the template, don't replace it with fixed text. The syntax is in our guide to robots.txt.

Then there's /collections/all.

It's the full catalogue Shopify creates by itself. On 24 stores out of 24 it was indexable, on 20 it had the default title "Products" or "All" (one more had no title at all) and on 19 it had no meta description. If you use it as your "Shop" page, give it a title and some copy; if nobody links to it, take it out of the menu and leave it as it is, but don't let it become the page that ranks instead of your collections. We measured how much categories outweigh product pages in our guide to category pages: across seven UK product queries, 67% of page one was a category page.

The collection title: too long, too short or missing (5 collections out of 24 over 60 characters)

Shopify lets you write up to 70 characters in the title and suggests keeping it to 60 to avoid it being shortened in search results (Shopify Help Center). Many themes then add the store name at the end, and the count goes over without you seeing it in the field.

In the test 5 collection titles out of 24 went over 60 characters, from 63 to 107. Three of them ended with the store name; in only one of those would removing the suffix have brought it back under 60. The other two were long because of what had been written in the field.

The opposite problem was just as common. Three collections had a title of 13 characters or fewer, one or two generic words such as "Accessories", and one store printed no title tag on its collections at all. Too short says nothing to whoever is choosing between results; too long gets cut off.

The suffix is fixed once in theme.liquid: the theme adds shop.name only if the title doesn't already contain it. One condition does it, or you remove the suffix and write the brand by hand where it's needed.

And the collection copy?

Here the test is less encouraging. Only 3 collections out of 24 had more than 100 words in the description field, and only one of those used a subheading. In 9 the field was empty or held three words at most. Copy is what separates a collection that ranks from a shop window. And 5 collections out of 24 didn't even have an H1.

How to choose the words to write that copy around is explained in our guide to ecommerce keyword research.

Shopify Markets and languages: automatic hreflang, redirects to check

With Shopify Markets the platform adds hreflang automatically, and the tags update when you change a market's domains or languages. Shopify recommends starting with subfolders (/en/, /de/) because they use your primary domain and "benefit from your store's existing search ranking and domain authority" (Shopify Help Center).

In the UK test none of the 24 collections had hreflang tags: every store in the sample sells in one language, on one domain. When we ran the same test on Italian stores, 10 collections out of 14 had them, and on two there were 242 and 309 alternates, one for almost every language and country combination switched on in Markets. That's what happens when you open new markets: every page declares hundreds of versions to verify, and removing one market without redirects is enough to fill Search Console with errors. How to read them is in our guide to hreflang.

Then there are automatic redirects.

None of the 24 UK stores sent our crawler, which was running from a server in Italy, to another version of the site. On the Italian stores it happened on 3 out of 15: from /it-it/ to /en-de/, from /collections/ to /en-us/collections/, from /collections/ to /en/collections/. In one case the version it landed on had the meta robots "noindex, nofollow".

But Googlebot isn't our crawler.

True, and we don't know what Googlebot saw on those stores. We do know Google says the default IP addresses of Googlebot "appear to be based in the USA" (guide to locale-adaptive pages). And Shopify, on its page about automatic redirection, doesn't say how it treats crawlers: it only says that customers from the European Union aren't automatically redirected within the EU.

So the check is simple, and it matters the day a UK store opens the US or the EU: open your main collections with the URL Inspection tool in Search Console and see which version Google sees. If it sees the US store instead of the UK one, switch automatic redirection off or replace it with a banner that suggests the right market without moving the visitor.

On a store like Bosatta, with four markets and separate campaigns for consumers and dealers in each, it's the check to repeat after every change to the languages: eight campaign combinations are of little use if Google indexes the wrong language.

Migrating to Shopify without losing rankings (the fixed prefixes change every URL)

Moving to Shopify from WooCommerce, PrestaShop or Magento changes almost every address in the store, because the /products/ and /collections/ prefixes can't be removed. Every old URL that brought traffic needs a 301 redirect to the new one.

Shopify accepts up to 100,000 of them imported from CSV, and 20 million on the Plus plan (Shopify Help Center). The limit is rarely the problem. The problem is the map.

The order we follow:

  1. export from Search Console the pages with clicks and impressions over the last 16 months, not just the ones in the sitemap;
  2. match every old URL to the new one: product to product, category to collection, never everything to the home page;
  3. import the CSV before changing the DNS, so the redirects are already live on switchover day;
  4. after launch, check the 404s in Search Console every week for the first month.

It's the part that usually gets underestimated most, because on launch day the store works and the 404s only show up weeks later. How to set up redirects is explained in our guide to 301 redirects; the rest of the process in our guide to SEO when you redesign your website. If you're choosing between the two platforms, read WooCommerce SEO too.

Structured data, speed and apps: what we've already measured

We've already covered structured data and apps in the test of Shopify SEO apps, and we won't repeat it here. The short version: on 24 product pages from UK Shopify stores, 8 described the same product more than once in the structured data, typically because the theme and an app each write their own Product, and 9 had images without alt text.

For structured data in general there's our guide to schema markup. For speed, which on Shopify depends mostly on the theme and the apps installed, our guide to page speed.

And if you sell on Shopify with Shopping campaigns, the product feed decides how visible you are on Google as much as SEO does: we explain it in our guide to Google Ads for ecommerce.

Summary

Shopify does the sitemap, canonical and robots.txt.

The grid links must point to /products/.

The title is yours to write, and the theme can stretch it.

A filter with search demand becomes a collection.

With Markets, check which language Google sees.

What the industry rarely says is that on Shopify technical SEO isn't decided on the platform but on the theme. The 24 stores in the test all run the same Shopify: the ones that link duplicate URLs or leave default titles do so because of a choice made in the theme, or because nobody filled in the field, not because of the platform. So the most important SEO decision on Shopify is made by whoever picks and configures the theme, often before anyone thinks about SEO. And a Shopify robots.txt that talks to AI agents says the next visitor to satisfy won't only be Googlebot.

If you'd like us to look at your store on the same checks as the test, start from our SEO service; if the theme needs rebuilding, we also handle the Shopify development. The overall picture for online stores, from categories to filters, is in our guide to ecommerce SEO.

Until next time!

Frequently asked questions

Is Shopify good for SEO?

It depends on what you sell and how you set up the theme. The platform handles the sitemap, canonicals, robots.txt and hreflang well: in our test on 24 UK stores every collection had a correct canonical. The limits are the fixed URL prefixes and the theme's choices, such as the links to nested URLs we found on 13 stores out of 24.

Does Shopify handle SEO automatically?

No. It automatically handles the technical basics: sitemap, robots.txt, canonicals, SSL and hreflang with Markets. Titles, meta descriptions, collection copy, internal links, filters to turn into collections and redirects are up to you.

Can you remove /products/ and /collections/ from Shopify URLs?

No. The /products/, /collections/, /pages/ and /blogs/ prefixes are fixed and can't be removed. You can only choose the handle, the last part of the address. That's why a migration to Shopify almost always needs a 301 redirect for every old URL with traffic.

Should I block Shopify filters in robots.txt?

It depends on the size of the catalogue. The default robots.txt already blocks combinations of two or more filters and sort orders; single filters stay crawlable with a canonical to the collection. If a filter matches a real search, turn it into a collection; if the catalogue is large and single filters run into the thousands, you can block them from the robots.txt.liquid template, carefully, because Shopify warns that a mistake can lose you all your traffic.

Do /collections/name/products/ URLs create duplicate content?

Yes, but it's handled. Every product also answers at an address inside each collection, and Shopify puts a canonical to /products/ on it: in the test it did so on 23 nested URLs out of 24. The problem starts when the theme links that version, because the canonical and the internal links give Google different instructions.

How long does it take to see SEO results on Shopify?

It depends on how new the domain is and how much competition there is on the collections you want to rank, not on the platform. Technical fixes to the theme show up in crawling within a few weeks; traffic to collections takes months. Timings and factors are in our guide to how long SEO takes to show results.

Matteo Pellegrini

Matteo Pellegrini

I'm a Business Developer, and at Visilay I focus on developing data-driven SEO, Google Ads, and CRO strategies. I love historical museums, have been practicing Karate for as long as I can remember, and on weekends I enjoy exploring Italian villages in search of authentic local food.