Shopify SEO: What Operators Should Fix First
Quick answer. Shopify handles more SEO than most platforms: clean handles, canonical tags through the theme, an XML sitemap, a default robots.txt and automatic 301s when a handle changes. What it does not do is write your titles, decide which filter URLs get indexed, or guarantee complete product schema. Shopify SEO is mostly auditing the defaults, then fixing handles, facets, templates and app-injected code.
What matters most
- Shopify already generates clean URLs, canonicals, sitemaps and handle-change redirects, so audit those before adding anything on top.
- The most common ranking loss on Shopify is unset metadata and duplicated supplier copy, not a platform fault.
- Filter and sort query strings are the main duplicate-URL problem, and the admin gives you no per-combination indexing control.
- Shopify redirects are one-to-one with no wildcard support, so a migration needs a generated URL map rather than a rule.
- Product structured data on Shopify is theme-dependent, and merchant listing fields are often missing.
What does Shopify already handle for SEO?
Shopify ships with more SEO than most commerce platforms. Every product, collection, page and blog article gets a clean URL built from its handle. The theme outputs a canonical link tag. The platform generates an XML sitemap at /sitemap.xml with child sitemaps for each content type. When you change a handle, Shopify creates a 301 redirect from the old path without being asked.
Robots.txt is produced from a template file called robots.txt.liquid. The default blocks /cart, /checkout, /orders, /account and theme preview URLs, which is the correct starting position. Most stores should leave those rules alone and add as little as possible.
Two defaults deserve verification rather than trust. Canonical tags come from the theme, so a custom template or a page-builder section can silently drop them. And Shopify Markets can output hreflang alternates, but whether yours are correct depends on your theme and market setup.
- Fetch /sitemap.xml and confirm it lists the child sitemaps you expect.
- View source on a product, a collection, and page two of a collection, and check the canonical tag on each.
- Open /robots.txt and confirm product and collection paths are not blocked.
- Change a test handle and confirm a single 301, not a 404 and not a chain.
- Check hreflang alternates on a market URL if you sell outside one country.
Where to go next
Where does Shopify SEO usually break?
Most Shopify SEO problems are not platform bugs. They are unset fields, inherited copy and theme decisions nobody revisited.
Product copy is the first. Supplier feeds and app imports fill descriptions with text every competitor already has. Shopify will index it; it will not rank it. The product editor has a description field and a separate search engine listing section, and only the second controls the title tag and meta description.
Collection pages are the strongest ranking surface on most stores and the most neglected. Many themes render a title and a product grid with no copy at all. A short, specific paragraph above the grid and a longer one below changes what the page can rank for.
Duplicate URLs come from three places: /collections/all, product URLs that carry a collection path, and filter and sort query strings. The first two are usually consolidated by canonical tags. The third is not, and it is the one that gets away from people.
Apps are the fourth. Every app that injects a script into theme.liquid adds render-blocking work. Check what loads on every page before blaming the theme for your Core Web Vitals.
Which Shopify SEO settings matter most, and where do you change them?
Work through these in order. The last two columns are what goes wrong and what to do about it.
| Surface | Where it lives in Shopify | Common failure | What to do |
|---|---|---|---|
| Title and meta description | Product, collection, page or blog editor, in the search engine listing section | Left blank, so the theme falls back to the full title plus store name | Write each one; the fields cap at 70 and 320 characters |
| URL handle | Same editor, under Edit handle | Auto-generated handles carrying SKUs or filler words | Set a short handle before launch, then leave it alone |
| Canonical tag | Theme templates, usually theme.liquid or a snippet | Dropped by a custom template or page-builder section | Confirm it renders on products, collections and paginated pages |
| Facet and sort URLs | Search & Discovery filters plus the collection template | Thousands of crawlable query-string combinations | Decide a rule per facet family; never rely on robots.txt alone |
| Product structured data | Theme snippet, an app, or a sales channel feed | Missing shipping and return fields; conflicting markup | Validate the live URL and fix at the source |
How should you handle Shopify filter and facet URLs?
Shopify filter URLs are query strings. The Search & Discovery app produces patterns like ?filter.v.option.color=Red for variant options, ?filter.p.m.custom.material=linen for metafield-backed filters, and ?filter.p.tag= for tags. Sorting adds ?sort_by=. Combine two filters and you have a new URL that a crawler can reach.
Google will crawl those URLs if you link to them, and your theme links to them every time it renders a filter sidebar. The admin has no setting that says which combinations should be indexed. Theme logic or an app has to make that decision.
Three rules work in practice:
- Crawl nothing you would not show a customer in a search result. Size and price facets are usually noise; material, type and colour are often real demand.
- Build the facets that matter as collections with their own handle, title and copy, and link those instead of the query-string version.
- Do not use robots.txt as your duplicate fix. A disallowed URL can still be indexed from internal links, and you lose the ability to see what Google does with it.
What breaks when you migrate to Shopify?
Every migration to Shopify changes URLs. The redirect tool accepts a CSV of old path to new path, one row per pair. It does not support wildcards or regular expressions, so a retired category with 400 products needs 400 rows or a mapping generated outside Shopify.
Handles are generated from the title. Accept the generated handle only for pages you do not care about; set them explicitly for products, collections and landing pages before launch. Every later change leaves another redirect behind and breaks any ad or backlink pointing at the old path.
Migration checklist:
- Map the old URL inventory to new handles before launch, not after.
- Import the redirect CSV, then crawl the old sitemap and confirm every URL resolves in one hop.
- Recreate collection copy, meta titles and descriptions; most platforms do not export them in a form Shopify can import.
- Move image alt text with the images rather than re-uploading and re-writing.
- Decide what happens to review counts, FAQ blocks and structured data that lived in an app on the old platform.
- Keep the old sitemap monitored until redirect traffic flattens.
How do you make Shopify product pages rank and convert?
The product template does three jobs: it presents the product, it emits structured data, and it links to the rest of the catalogue. Most stores get the first right and neglect the other two.
Write the description for the person deciding, then put specifications in metafields. Metafields are what make filter URLs meaningful, and they survive a theme change in a way that copy typed into a page-builder section does not.
Shopify’s SEO fields cap at 70 characters for the title and 320 for the description. Treat those as limits, not targets. A 55-character title that reads like a phrase beats a truncated sentence every time.
Structured data is theme-dependent. Many themes output a Product block with offers, price and availability. Fewer include the shipping details and return policy Google asks for in merchant listings. Validate the rendered output rather than assuming it. If you also submit a product feed through a sales channel, the feed and the markup must not contradict each other.
Variants do not need their own URLs for SEO. Shopify’s ?variant= URLs are meant to canonicalise to the clean product URL, so check yours do and spend the effort on filterable options instead.
What can’t you fix on Shopify?
Some things are genuinely out of reach on the platform, and saying so saves time:
- Wildcard redirects. Shopify’s redirect tool is one-to-one, so large migrations need the map generated elsewhere.
- Per-combination indexing control for filters. There is no admin switch; it is theme logic or an app.
- Server and CDN tuning. You get what Shopify gives you, and most Core Web Vitals wins come from removing scripts and shrinking images.
- Complete structured data out of the box. Coverage depends on your theme and apps.
- Headless defaults. On Hydrogen or a custom storefront you rebuild canonicals, sitemaps and redirects yourself.
Frequently asked questions
Does Shopify handle SEO automatically?
Partly. Shopify generates clean URLs from handles, outputs a canonical tag through the theme, builds an XML sitemap, writes a default robots.txt and creates a 301 when you change a handle. What it does not do is write your titles and descriptions, choose which filter URLs should be indexed, or guarantee complete product structured data. Treat the defaults as a starting point you verify, not a finished job.
Should I change product handles after launch?
You can, and Shopify will 301 the old path, but each change leaves a redirect behind and breaks any ad or external link that used the old URL. Set handles before launch wherever possible. If you must change one, make it a single well-chosen move rather than a series of small edits, and update internal links and feeds afterwards.
How do I stop Shopify filter URLs from appearing in search?
There is no admin setting that noindexes a filter combination. You either add theme logic or use an app to output a noindex tag for the combinations you do not want, or you keep the valuable facets and build them as real collections. Blocking them in robots.txt is a weak fix: the URLs can still be indexed from internal links, and you lose visibility into what Google does with them.
Do Shopify themes include product schema?
Some do, partially. Many themes output a Product block with name, price and availability. Fewer include the shipping and return details Google asks for in merchant listings, and app-injected review markup can conflict with the theme. Validate a live product URL in the Rich Results Test rather than trusting a theme feature list. If you also send a product feed through a sales channel, keep the feed and the page consistent.
Can I use wildcard redirects on Shopify?
No. Shopify’s URL redirects are one-to-one: each old path needs its own row, entered in the admin or imported as a CSV. There is no wildcard or regular expression support. For a migration with thousands of retired URLs, generate the full mapping from your old crawl and your new handles, import it, then check every old URL resolves in a single hop.
Does Shopify support hreflang for international stores?
Shopify Markets handles multiple domains and subfolders, and the storefront can output hreflang alternates for them. Whether yours are correct depends on your theme and your market configuration, so check the rendered HTML: every alternate should return a 200, point at the matching market URL, and include a sensible x-default. On a headless storefront you own that output yourself.
Sources
- Shopify’s own SEO documentation covering titles, descriptions and store settings
- Shopify URL redirects, one-to-one behaviour and CSV import
- Google’s product structured data requirements for merchant listings
- Google’s guidance on canonical tags and consolidating duplicate URLs
Audit what Shopify already outputs
We crawl your store, check the canonicals, handles, filter URLs and structured data your theme actually renders, and give you a prioritised fix list.