Skip to content

Shopify SEO: the complete guide

By cartscaling Reviewed 15 min read
Shopify SEO: smiling Asian woman talking on a cellphone in her store.

Chapter 1

Work within the URL rules the platform gives you

Accept the fixed parts of Shopify's URL structure and spend your effort on the parts you control, because arguing with the platform here wastes time. Products sit under a products path, collections under a collections path, static pages under a pages path, and blog articles under a blog path. Those prefixes are not editable, and no amount of app or theme work changes that.

What you do control is the handle, which is the readable part at the end. Handles should describe the page in the words people search with, stay short, and never change once a page has earned rankings. Shopify generates a handle from the title, which means a product named for internal reasons produces a URL nobody would search for. Set the handle deliberately at creation, because changing it later means a redirect and a period of lost value.

The fixed prefixes are not a ranking problem. Search engines do not penalise a store for having a products segment in its URLs, and every Shopify store has the same structure. The real issue is that the flat structure means your URLs carry no hierarchy, so the relationship between a category and its subcategories has to be expressed through navigation and internal links instead. That makes internal linking more important here than on platforms where the URL implies a tree.

One consequence worth planning for. Because products do not live inside collections in the URL, a product can appear in many collections without creating separate addresses. That is helpful. It also means you cannot use the URL to signal which collection a product primarily belongs to, so the signal has to come from breadcrumbs and links.

Finally, decide your handle conventions once and write them down. Consistent, readable handles across a catalogue make everything else easier: redirects, reporting, spotting duplicates, and understanding a URL list at a glance. Handles generated from a supplier's product codes are the version of this that causes trouble later.

  • Path prefixes are fixed; the handle is the part you control
  • Set handles deliberately at creation, before rankings exist
  • Flat URLs mean navigation and internal links carry the hierarchy
  • Write down a handle convention and apply it across the catalogue

Chapter 2

Set the store-level basics every page inherits

Get the defaults right once, because they apply across the whole catalogue and fixing them later means touching every page. This is the highest-return hour in a Shopify store's search setup.

Start with the title and description patterns. Each product, collection and page has its own search listing fields, and when they are empty the theme fills them from the product title and description. That default is usually acceptable and rarely good. Write the important ones by hand: the collections that carry your traffic, the products people search for by name, and the home page. Titles should lead with what the page is about rather than with the store name, since the beginning of the title carries the most weight and the end is often trimmed.

Check the store name and the way the theme appends it. Many themes add the store name to every title, which eats characters on pages where you need them.

Set image alt text as a habit rather than a project. Shopify exposes it on every image, it helps image search, and it is one of the few accessibility improvements that is genuinely quick.

Make sure the store is not password protected or otherwise blocked when you expect it to be indexed, which sounds obvious and is a real cause of stores that never appear.

Decide the primary domain deliberately and make sure every other domain you own redirects to it rather than serving a duplicate copy. Stores that launched on the platform's default domain sometimes leave it accessible, and that creates a full duplicate of the catalogue.

Connect the store to a search console property for the primary domain, verify it, and check the coverage report. Everything diagnostic in this guide depends on having that data, and stores frequently run for years without it.

Finally, look at what the theme puts in the head of every page. Some themes add tags that conflict with what you want, and some apps inject their own. A quick look at the source of a product page tells you what search engines are actually reading.

  • Write listing titles and descriptions for the pages that matter
  • Check whether the theme appends the store name to every title
  • Redirect every alternate domain to the primary one
  • Read the head of a live product page to see what is actually there

Chapter 3

Build collections around demand, not just merchandising

Create a collection for every search where people want to choose between options, even when your merchandising would not have grouped them that way. Collections are where most of a Shopify store's search traffic lives, and most stores have far too few of them.

The usual structure mirrors the shop's internal categories. The structure that ranks mirrors how people search: by use, by material, by size, by occasion, by compatibility, by price band, by who it is for. Each of those can be a collection with its own handle, its own title, its own description and its own place in the site.

Automated collections make this cheap. Set conditions based on tags, product type, vendor or price, and the collection populates itself and keeps populating as the catalogue changes. That means you can create a collection for a real search without maintaining a manual list. The discipline required is a consistent tagging scheme, which is worth building properly because everything downstream depends on it.

Write genuine content on the ones that matter. A collection page that is only a grid of products has nothing to rank with, and the introduction is where you explain how to choose, what the differences are, who each option suits and what people usually ask. Put a short, useful paragraph above the products and the longer material below them, so the page reads well for a shopper who wants to browse immediately.

Do not create collections that overlap so heavily they compete for the same search. Two collections targeting the same phrase split your signal and neither wins. If two would be nearly identical, make one and give it a good page.

Empty or nearly empty collections are worse than none. A page listing two products for a search that expects choice will not hold a position, and a store full of thin collections is judged as a whole.

Finally, put the collections you want to rank into the navigation. On this platform, where URLs carry no hierarchy, the menu is doing a large share of the structural work.

  • One collection per search where people want to compare options
  • Automated collections plus a consistent tag scheme keep this cheap
  • Write a real introduction above the grid and detail below it
  • Avoid overlapping collections that compete for the same phrase

Chapter 4

Control what filters, tags and sorting add to the index

Decide which filtered and sorted URLs deserve to exist as pages, and keep the rest out of the index, because a large catalogue with filters can generate an enormous number of near-identical addresses. Left alone, those consume crawl attention and compete with the pages you actually want ranking.

Understand how they are generated first. Filters and sorting typically append parameters to the collection URL, and tag-based filtering can produce paths that combine a collection with one or more tags. Multiply a few filter options together and the number of possible combinations grows quickly.

Shopify ships a default robots file that already blocks a number of these patterns, which handles the worst of it. That file can now be edited through a theme file, so you can add rules for patterns specific to your store. Edit it carefully and check what you have done, because a mistake here can remove sections of the store from search.

Then decide the exceptions. Some filtered views represent real demand and deserve to be proper pages: a specific colour, a specific size, a well-searched material. The right move for those is not to index a parameter URL, it is to create a real collection with its own handle and description, and link to it from the parent collection. That gives you a page you control instead of a machine-generated one.

Pagination needs a decision too. Later pages of a long collection have little unique value, and while search engines generally handle them, making sure products are reachable through more specific collections is a better answer than relying on deep pagination.

Watch what apps add. Filter and search apps sometimes introduce their own URL patterns, and the first sign is a sudden growth in indexed pages. Check the coverage report after installing anything that changes how collections are browsed.

The test for all of this is simple. Look at how many pages are indexed against how many you meant to publish. A large gap upward is nearly always filters.

  • Filter and sort parameters multiply into many near-identical URLs
  • Edit the robots file carefully and verify what the change blocks
  • Turn genuinely searched filters into real collections you control
  • Watch indexed page counts after installing any browsing app

Chapter 5

Resolve duplicate product paths and variant addresses

Make sure every product has one address that search engines treat as the real one, because this platform makes it easy for a single product to be reachable several ways. The mechanism that resolves it is the canonical tag, and it is worth verifying rather than assuming.

The most common case is a product reachable both at its own path and at a path that includes a collection. Both work for shoppers. Themes normally set the canonical to the plain product path, which is the correct behaviour, but themes vary and apps interfere. Open a product page reached through a collection, view the source, and check where the canonical points. If it points at the collection-nested version, that is a theme problem worth fixing.

Variants are the second case. Selecting a variant usually adds a parameter to the URL, which creates an address per variant. The canonical should point at the base product. Where a variant is genuinely a separate product that people search for by name, the better answer is to make it a separate product rather than a variant, and accept the extra catalogue management.

The third case is the catch-all collection that lists everything in the store. It exists by default, it is rarely useful for shoppers, and it can end up indexed and competing with your real collections. Decide deliberately whether you want it available.

The fourth is internal search result pages, which are generated by visitors and have no business in the index.

Also check for a leftover default domain still serving the store, alternative domains that were never redirected, and any staging or preview version that is publicly reachable. Each of those is a full duplicate of your catalogue.

Fix the theme once rather than patching pages. Canonicals come from a template, so a single correction applies everywhere, and that is the difference between an afternoon and a month.

  • Verify where the canonical points on a collection-nested product URL
  • Variant parameters should resolve back to the base product
  • Decide deliberately whether the catch-all collection is indexable
  • Look for leftover default domains and preview versions serving copies

Chapter 6

Make the theme fast when apps are the real cause

Audit the apps before you touch the theme, because on most Shopify stores the scripts added by apps are the largest single cause of slow pages. Each installed app can add code to every page, and stores accumulate them.

Start with a list of every app, what it does, and whether anyone still uses it. Uninstall the ones nobody uses, and check afterwards that their code actually left, because leftover script tags and theme edits often remain. Then look at what the remaining ones load and where. An app that only matters on the cart should not be loading on every product page.

Images are the second cause. Product photography uploaded at print resolution and served at thumbnail size costs every visitor. The platform serves responsive sizes when the theme asks for them properly, so check that the theme is doing this and that hero images are not oversized. Compressing the images you already have is usually the largest single improvement available.

The theme itself matters third. Heavy sliders, large embedded video, multiple font families and animation on the product page all cost time. The product page and the cart are the two templates worth caring about most, since that is where the money is.

Measure on the right thing. Test a product page on a mid-range phone on a mobile connection, not on office wifi on a desktop. The measure that matters most is how quickly the main content becomes visible and the page becomes usable, and how much it moves around while loading. Layout shifting as images and app widgets arrive is both a ranking factor and a genuine annoyance that costs orders.

Be realistic about the ceiling. A hosted platform limits how far you can go, and the difference between a well-tuned store and a poorly tuned one is much larger than the difference between a well-tuned store and a theoretical maximum. Getting the apps and images right captures most of what is available.

Re-check after every app install and theme update, since both undo previous work quietly.

  • Uninstall unused apps and confirm their code actually left
  • Compress images and check the theme requests responsive sizes
  • Test product pages on a mid-range phone on mobile data
  • Re-measure after every app install or theme update

Chapter 7

Add the structured data your theme leaves out

Check what product markup your theme actually outputs, then fill the gaps, because coverage varies a lot between themes and apps frequently duplicate it. Structured data is what lets search engines show price, availability and ratings directly in results, and it gives them a machine-readable version of your product facts.

View the source of a product page and look for the product markup. You are checking that it exists, that it includes name, image, description, price, currency and availability, and that those values match what the page displays. Then check a collection page and the home page for the corresponding markup types.

The common problems are specific. Markup present but with stale or missing price. Availability that says in stock on a sold-out product. Review markup added by an app that duplicates markup the theme already outputs, producing two conflicting blocks. Markup that describes the default variant while the page shows another.

Fix duplication before you add anything. Two sets of product markup on one page is worse than one imperfect set. If a review app adds its own, make sure the theme is not also adding review data.

Breadcrumb markup is worth having and often missing. It helps search engines understand where a page sits in a structure that the URLs do not express, which matters more on this platform than on most.

Organisation details on the home page, including the store name, logo, and contact information, are quick to add and help systems that assemble information about your brand from multiple sources.

Whatever you add, validate it with a testing tool, and re-check after theme updates. A theme update can change or remove markup without any announcement, and the failure is invisible unless someone looks.

One principle throughout: the markup must describe what is actually on the page. Marking up ratings you do not display, or prices that differ from the visible one, causes problems that are harder to fix than the gap you were filling.

  • Read the page source to confirm what markup the theme outputs
  • Two conflicting sets of product markup is worse than one
  • Add breadcrumb markup, since your URLs express no hierarchy
  • Re-validate after theme updates; markup disappears quietly

Chapter 8

Manage redirects as the catalogue changes

Redirect every URL that changes or disappears, on the same day it happens, because the value a page has accumulated is transferable and easy to throw away. Shopify includes a redirect tool in the admin, and using it consistently is one of the highest-value habits a store can build.

When you change a product or collection handle, the admin offers to create the redirect for you. Take it. Skipping that checkbox is the single most common way a store loses rankings it had earned, and the loss is invisible until traffic drops weeks later.

For discontinued products, decide a policy and apply it consistently. If there is a direct replacement, redirect to it. If there is a category of similar products, redirect to that collection. If the product still gets searched for by name and you may restock, keep the page live, say clearly that it is unavailable, and offer alternatives and a notify option. Redirecting everything to the home page is the version of this that destroys the most value, because it tells search engines the page has no equivalent.

Seasonal collections should be kept rather than deleted and rebuilt each year. A page that accumulates rankings over several seasons is worth far more than a fresh one, so empty it out of season, keep it live, and refill it when the range returns.

Audit the redirect list periodically. Chains build up over years, where one URL redirects to another which redirects again, and each hop costs a little. Point old redirects directly at the current destination.

Also check for internal links pointing at redirected URLs. Navigation, collection descriptions and blog articles all accumulate them, and updating the link to point at the final destination is cheap and tidy.

Before any replatform, theme rebuild or restructure, export the full list of URLs that currently receive organic traffic, and map every one to its destination before launch. That single spreadsheet prevents most migration disasters.

  • Always accept the redirect option when changing a handle
  • Redirect to the closest equivalent, never to the home page by default
  • Keep seasonal collections live year round instead of rebuilding them
  • Map every trafficked URL before any rebuild or migration

Chapter 9

Use pages and blogs for what collections cannot answer

Publish supporting content only where a collection or product page genuinely cannot serve the search, and put it in the right place on the platform. Shopify separates static pages from blog articles, and the distinction matters more for organisation than for ranking.

Static pages suit content that stays true: sizing and fit guides, care instructions, compatibility references, delivery and returns explanations, buying guides for a category. These are the pieces that earn links and reduce returns, and they should be linked from the collections and products they relate to rather than hidden in a footer menu.

Blog articles suit content that is dated or ongoing: new arrivals, seasonal recommendations, how customers use products, answers to recurring questions. The blog structure adds a segment to the URL, which is fine, but it does mean an article about sizing sits at an address that reads like news. For evergreen reference material, a page is usually the better home.

Whichever you use, link it into the catalogue properly. An article that mentions products without linking to them is doing half the work. Link with descriptive text to the specific collection or product being discussed.

Keep the volume low. A small number of genuinely useful pieces beats a schedule of thin posts, and thin content across a store affects how the whole domain is judged.

International selling deserves a decision at this point too. The platform's markets feature can serve different currencies, languages and domains or subfolders, and it handles the language and region tags that tell search engines which version to show where. Set it up deliberately rather than accepting defaults, decide whether you want separate domains or subfolders, and make sure each market's pages are genuinely appropriate rather than the same content with a currency swap.

Finally, remember that the theme decides how much of your page text is actually rendered in the HTML. Content hidden behind tabs or loaded by script may not be read the way you expect, so check the source.

  • Static pages for evergreen reference, blog for dated material
  • Link supporting content to the collections and products it discusses
  • Set international markets up deliberately, not on defaults
  • Check that tabbed or script-loaded text appears in the page source

Chapter 10

Run a monthly routine so the store does not drift

Put a short recurring check in the calendar, because a Shopify store changes constantly and search problems appear quietly. Apps get installed, themes get updated, products get renamed, and each of those can undo work that was correct last month.

The monthly pass has five parts. Check indexed page counts against what you expect, since a sudden rise usually means filters or an app, and a fall means something is blocking access. Look at the coverage and enhancement reports in search console for new errors. Check that the pages producing your organic revenue are still doing so, and investigate anything that dropped. Run a crawl of the store and look for broken internal links, redirect chains and missing titles. And spot-check a product page's source for canonical, markup and title, because that one page tells you whether the templates are still behaving.

Add a quarterly deeper pass. Review which collections earn traffic and which never have, and either improve or retire the ones that do nothing. Look at your on-site search terms for demand you are not serving with a collection. Re-check speed on a real phone. Review the app list and remove what has stopped being used.

Keep a change log alongside it. Note theme updates, app installs, handle changes, structural edits and content rewrites with dates. When traffic moves, that log is what turns guesswork into diagnosis, and it is the thing everyone wishes they had started earlier.

Before any big change, do the extra work in advance: export current URLs and their traffic, note current rankings for your important terms, and take a copy of the theme. Rebuilds go wrong in ways nobody predicts, and the ability to compare against a known state is what makes recovery possible.

Finally, review the whole plan once a year against what the catalogue has become. Stores drift away from the structure they were designed with, and an annual look at whether the collections still match how people search catches that.

  • Monthly: indexed counts, coverage errors, revenue pages, a crawl
  • Quarterly: collection performance, on-site search gaps, speed, apps
  • Keep a dated log of theme updates, app installs and handle changes
  • Before a rebuild, export current URLs, traffic and rankings

Questions

No, those prefixes are fixed by the platform and no app or theme changes them. It is not a ranking disadvantage, since every store on the platform shares the structure. What it does mean is that your URLs carry no hierarchy, so navigation, breadcrumbs and internal links have to do that work instead.

Write real descriptions on the collections that target searches you want, which is usually a manageable number rather than all of them. A collection page with only a product grid has nothing distinctive to rank with. For collections that exist purely for merchandising and are not targeting a search, a short line is enough.

Indirectly, through page weight and sometimes through the URLs and markup they add. Each app can load code on every page, and stores accumulate apps they no longer use. Audit the list regularly, remove what is unused, and confirm the leftover code actually went, because uninstalling does not always clean up theme edits.

Keep the page live and say plainly that it is unavailable, with an expected return date if you have one, alternatives, and a way to be notified. Hiding or redirecting the page loses the rankings and the demand signal. Only redirect when the product is genuinely gone and will not return.

It is good enough for the volume most stores should be publishing. The constraint on store content is rarely the tool, it is having something worth writing. Use static pages for evergreen reference material like sizing and care, and the blog for dated or ongoing pieces.

Use the platform's market features to serve the right currency, language and domain or subfolder, and let it handle the region and language tags that tell search engines which version to show where. Then make each market's content genuinely appropriate, since a currency change alone is not localisation and shoppers notice.

Go further

Your plan is free.

A person reads it. You keep the plan. No logins, no call first.

Store, name, email and phone. A person replies from a real inbox. Privacy

Get your free growth plan