Is Shopify good for SEO?
Yes. Shopify does several technical jobs well without any setup:
- It builds and updates
/sitemap.xmlfor you, with child sitemaps for products, collections, pages, blogs and articles (Shopify). - It adds canonical tags that point duplicate product URLs back to the clean
/products/handleURL. - It ships a sensible
robots.txtthat blocks cart, checkout, search, sort and multi-filter URLs (Shopify). - It creates hreflang tags for each Markets domain or subfolder (Shopify).
Where Shopify stores lose is the part Shopify leaves to you: default titles, supplier descriptions, thin tag and vendor pages, theme links that point at duplicate URLs, deleted products with no redirect, and apps that slow the store down.
Shopify SEO optimisation: the 10 checks to do first
If you only have an hour, do these. They are the High-priority rows in the spreadsheet.
| # | Check | Where in Shopify | Time |
|---|---|---|---|
| 1 | Store is public, not in private mode | Online Store > Preferences > Store access | 1 min |
| 2 | One primary domain, others redirect | Settings > Domains | 5 min |
| 3 | sitemap.xml submitted in Search Console | Search Console > Indexing > Sitemaps | 2 min |
| 4 | Home page has its own title and meta | Online Store > Preferences | 10 min |
| 5 | Top 20 products have custom SEO titles and metas | Products > [product] > Search engine listing | 60 min |
| 6 | Every collection has an SEO title, meta and a short intro | Products > Collections > [collection] | 30 min |
| 7 | Product grid links go to /products/handle | Edit code > snippets (search for within:) | 15 min |
| 8 | 404s with clicks are redirected | Content > Menus > View URL redirects | 20 min |
| 9 | Leftover app code removed | Themes > Customize > App embeds, and snippets | 30 min |
| 10 | Low-CTR pages get rewritten titles first | Search Console > Performance > Pages | 30 min |
Why does Shopify create duplicate product URLs?
Every product on Shopify can be reached at /products/blue-backpack and also at /collections/bags/products/blue-backpack, once for each collection it belongs to. Variants add ?variant=123. Shopify's themes put a canonical tag on all of these that points back to /products/blue-backpack. We checked this on a live public Shopify store on October 14, 2026: the collection path, the variant URL, and filter and sort URLs all pointed their canonical at the clean URL.
So the duplicates are not the real problem. The real problem is internal links. Older and some paid themes build product cards with {{ product.url | within: collection }}, so every link in your grid points at the duplicate path. Google then spends crawl time on duplicates and your own links back the wrong URL. The fix is one change in the theme code: use {{ product.url }}. Our guide to Shopify duplicate product URLs walks through it.
Other Shopify pages that do not canonicalize away, and often get indexed as thin pages:
| URL pattern | What it is | Canonical (checked Oct 2026) | What to do |
|---|---|---|---|
/collections/shoes/red | Single-tag page | Points to itself | Noindex, or turn the good ones into real collections |
/collections/vendors?q=Brand | Vendor page | Points to itself | Noindex, or build a real brand collection |
/collections/types?q=Type | Product type page | Points to itself | Noindex |
/collections/all | Every product, no text | Points to itself | Make it a real collection, or keep it out of menus |
/collections/shoes?page=2 | Page 2 of a collection | Points to itself | Keep it that way (Google) |
/collections/shoes?filter.v.option.color=red | Filter | Points to base collection | Nothing to do |
The spreadsheet has the Liquid snippet for each noindex.
How do I edit SEO titles and meta descriptions in Shopify?
Each resource has a Search engine listing box near the bottom of its edit screen. Click the pencil icon to edit the page title, meta description and URL handle.
- Products: Products > [product] > Search engine listing
- Collections: Products > Collections > [collection] > Search engine listing
- Pages: Online Store > Pages > [page] > Search engine listing
- Blog posts: Content > Blog posts > [post] > Search engine listing
- Home page: Online Store > Preferences (title and meta description)
Shopify's field accepts up to 70 characters for a title, but Shopify itself recommends staying under 60 so results do not cut it off (Shopify). If you leave the meta empty, Shopify uses the start of your description, which on most products is a shipping line or a size table.
A product title pattern that works: [Product type + key detail] | [Brand]. For a fictional store: *Merino Wool Hiking Socks, Cushioned | Northwind Outdoors* (56 characters).
How do URL redirects work on Shopify?
Redirects live in Content > Menus > View URL redirects. Two rules surprise most store owners:
- Shopify only redirects a URL that is broken. If a product is still live at the old address, your redirect does nothing (Shopify). Unpublish or delete it first.
- Changing a handle offers a pre-ticked "Create a URL redirect" box. Leave it ticked. Untick it and the old URL becomes a 404.
Standard plans allow up to 100,000 redirects, and you can import them by CSV after a migration. Each month, open Search Console > Indexing > Pages > Not found (404), and redirect any old URL that still gets clicks to its closest live product or collection, not to the home page.
Shopify robots.txt and noindex: do not use both on one URL
Shopify lets you edit robots.txt.liquid (Online Store > Themes > Edit code > Add a new template > robots), but calls it an unsupported customization that can cost you all your traffic. Many Shopify SEO guides tell you to noindex tag or vendor pages and block them in robots.txt. That does not work: a URL blocked by robots.txt is never crawled, so Google never sees its noindex tag, and it can stay in the index (Google). Pick one per URL.
To hide a page or blog post, Shopify supports the seo.hidden metafield: create it once in Settings > Metafields and metaobjects > Metafield definitions (namespace and key seo.hidden, type Integer), then enter 1 on the item. Shopify says it hides the item from sitemaps, search engines and your store search (Shopify). On a product that means shoppers cannot find it in your store search either, so think twice before using it there.
Shopify speed and apps
Shopify's own report uses real visitor data: Analytics > Reports > search "web performance". Google's "good" thresholds are LCP 2.5 seconds or less, INP 200 ms or less, and CLS 0.1 or less (Shopify). The report marks app installs and theme changes, so a jump right after an install tells you where to look. The usual causes on Shopify are apps that left code in your theme after you uninstalled them, a lazy-loaded hero image, and popup, chat and upsell scripts.
Shopify Markets and hreflang
If you sell in several countries, use Markets with subfolders (/en-ca, /fr-ca) or country domains, set in Settings > Markets. Shopify then writes hreflang tags for you. Two things to check: do not force visitors to a country by IP (Googlebot mostly crawls from the US, so it may never see your other markets, Google), and translate the SEO title and meta in Translate & Adapt, not just the page.
What SEOmatic can and cannot do on Shopify
The spreadsheet has a "Can SEOmatic apply it?" column. Here is the short version, taken from what the app actually writes today.
| SEOmatic can do it (you approve first) | You do it by hand |
|---|---|
| SEO titles and meta descriptions on products, collections, pages and posts | Home page title and meta (Shopify has no API for it) |
| Product descriptions, collection text, post bodies, internal links | Canonical tags, theme code, robots.txt.liquid |
| Product image alt text and blog featured image alt text | Noindex on products and collections |
| Noindex on pages and blog posts (seo.hidden) | Markets, hreflang, translations |
| 301 redirects into Shopify's redirect table, when you click Apply | Removing apps and theme speed work |
| Product schema, after you add a one-time theme snippet | Store settings (domains, private mode) |
| Sitemap submission and recrawl requests through your Search Console |
Every change is recorded and can be undone.
Sources
- Shopify Help Center: SEO titles and descriptions, URL redirects, sitemap, robots.txt.liquid, hide a page, international SEO, web performance reports
- Shopify Dev: structured_data filter, theme SEO metadata
- Google Search Central: canonicals, pagination, faceted navigation, noindex, locale-adaptive pages
- Live canonical checks, October 14, 2026, on public Shopify stores: allbirds.com (product, variant, sort, pagination and vendor URLs) and puravidabracelets.com (a single-tag page).
How to use this with an AI assistant
If you use Claude, ChatGPT or another assistant that supports MCP, you can ask it to run the checklist on your own store. Connect SEOmatic: https://seomatic.ai/mcp, then paste one of the prompts below.
check_site works without signing in. Nothing goes live until you approve it.
Connect SEOmatic: https://seomatic.ai/mcp
Use SEOmatic to run the Shopify SEO checklist on mystore.com. Do not apply any change without my explicit yes.
1. Run check_site on mystore.com (no sign-in needed). Report: can Google index the home page (a password page blocks everything), what robots.txt blocks (including AI crawlers), and the top fixes it lists.
2. Run connect_seomatic so I can sign in and connect Google Search Console, then get_started.
3. Run these and keep the results:
- get_sitemaps_status: is sitemap.xml submitted for every domain I sell on, and does Google report errors?
- site_audit: duplicate or missing titles and meta descriptions, noindex leaks, canonicals pointing elsewhere, thin pages, slow pages, dead pages, broken internal links.
- find_ctr_outliers: products and collections that get impressions but few clicks.
- find_cannibalization: queries where two of my URLs compete.
- get_top_pages and compare_periods (last 3 months vs previous 3): pages that lost clicks.
- batch_inspect_urls on my 50 most important product and collection URLs: indexed or not, and the Google-chosen canonical.
4. For any single URL that looks wrong, use analyze_page_seo or crawl_page, and inspect_url_indexing.
5. Give me a table with: checklist area (Setup, Crawl control, Duplicate URLs, Titles and meta, Product content, Images, Structured data, Speed and apps, International, Redirects and 404s, Blog and links), the failing URL, what is wrong, and the exact Shopify admin path to fix it (for example Products > [product] > Search engine listing, or Content > Menus > View URL redirects).
Shopify-specific things to check while you do it:
- Collection-scoped product URLs (/collections/x/products/y) should canonicalize to /products/y. "Alternate page with proper canonical tag" is fine, not an error.
- Tag pages, /collections/vendors and /collections/types point their canonical at themselves; flag any that are indexed.
- Deleted products returning 404 that still had clicks.
- Never recommend blocking a URL in robots.txt and noindexing it at the same time.
6. Split the fixes into two lists:
- What SEOmatic can apply on Shopify after I approve: SEO titles and meta descriptions (products, collections, pages, blog posts), product descriptions and collection text, internal links in bodies, product image and blog featured image alt text, noindex on pages and blog posts, 301 redirects into Shopify's redirect table, sitemap submission.
- What I must do by hand: home page title and meta (Online Store > Preferences), theme code (canonicals, product card links, noindex on tag and vendor pages), robots.txt.liquid, apps and speed, Markets and translations.
7. Use create_seo_tasks to stage the first list as proposals. Then show_approval_cards so I can review them. Only call decide_seo_task when I say approve or dismiss for a specific task.
If I later want to undo a change, use get_task_rollback and then rollback_seo_task.What this does not do: SEOmatic does not edit your Shopify theme, robots.txt.liquid, apps, store settings or home page SEO fields. The assistant will list those for you to do by hand. create_seo_tasks only stages proposals. Nothing goes live until you approve it.
Go deeper
- GuideShopify duplicate product URLs: what is actually broken, and the one fix that matters
- GuideHow to noindex a page in Shopify
- GuideShopify URL redirect not working? Start here
- GuideShopify tag pages and SEO: which to keep, which to kill
- GuideShopify robots.txt: what the default file blocks and when to edit it
- GuideHow to change your Shopify home page SEO title and meta description
- GuideWhat to do with a deleted Shopify product's URL
Sources (32)
- help.shopify.com/en/manual/promoting-marketing/seo/adding-keywords
- help.shopify.com/en/manual/online-store/menus-and-links/url-redirect
- help.shopify.com/en/manual/online-store/add-edit-pages
- help.shopify.com/en/manual/online-store/blogs/writing-blogs/working-with-blog-posts
- help.shopify.com/en/manual/promoting-marketing/seo/find-site-map
- help.shopify.com/en/manual/promoting-marketing/seo/editing-robots-txt
- help.shopify.com/en/manual/promoting-marketing/seo/hide-a-page-from-search-engines
- help.shopify.com/en/manual/international/managing-international-domains/international-seo
- help.shopify.com/en/manual/products/product-media/add-alt-text
- help.shopify.com/en/manual/online-store/web-performance/web-performance-reports
- help.shopify.com/en/manual/online-store/themes/password-page
- help.shopify.com/en/manual/domains
- shopify.dev/docs/api/liquid/filters/structured_data
- shopify.dev/docs/storefronts/themes/seo/metadata
- allbirds.com/collections/mens/products/mens-dasher-nz-anthracite
- developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls
- developers.google.com/search/docs/crawling-indexing/crawling-managing-faceted-navigation
- developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading
- developers.google.com/search/docs/crawling-indexing/block-indexing
- developers.google.com/search/docs/crawling-indexing/robots/intro
- developers.google.com/search/docs/appearance/title-link
- developers.google.com/search/docs/appearance/snippet
- developers.google.com/search/docs/appearance/structured-data/product
- developers.google.com/search/docs/appearance/structured-data/merchant-listing
- developers.google.com/search/blog/2023/08/howto-faq-changes
- developers.google.com/search/docs/appearance/google-images
- developers.google.com/search/docs/appearance/core-web-vitals
- developers.google.com/search/docs/specialty/international/localized-versions
- developers.google.com/search/docs/specialty/international/locale-adaptive-pages
- developers.google.com/search/docs/crawling-indexing/http-network-errors
- developers.google.com/search/docs/crawling-indexing/301-redirects
- puravidabracelets.com/collections/all/accessories


