Shopify Technical SEO: What It Handles, What You Control

Shopify technical SEO is mostly done for you: every store gets an automatic sitemap, canonical URLs, a sensible robots.txt, readable URLs and, with Markets, hreflang tags for each language and region. What you control is a short list: custom robots.txt rules through a robots.txt.liquid template (including rules for AI crawlers), which pages are hidden from search, redirects when URLs change, and how your menus and internal links are organized.
Facts come from the Shopify Help Center pages on robots.txt, site structure, sitemaps, hiding pages, Markets SEO and URL redirects (read October 23, 2026).
Handled for you, and what you control
| Area | What Shopify does | What you control |
|---|---|---|
| Sitemap | sitemap.xml with linked sitemaps for products, collections, pages and blog posts, updated automatically; one per international domain |
Submitting it to Search Console |
| Canonical URLs | Set automatically on every page; market versions get self-referencing canonicals | Nothing in normal setups |
| Hreflang | Added to every page from your market and language setup | Turning automatic tags off only if a theme or app adds its own |
| robots.txt | A default file with rules for cart, checkout, account, filtered and sorted collections | Extra rules in robots.txt.liquid |
| URLs and structure | Logical category hierarchy, no iframes, readable URLs with standard characters | Menus, link text, image file names |
| Bot traffic | Network-level bot management | Rules for specific crawlers in robots.txt |
| Hidden pages | Cart and other private pages blocked by default | Unlisted status, seo.hidden metafield, noindex code |
| Redirects | Creating 301s when you change or delete URLs |
You can edit robots.txt on Shopify through the robots.txt.liquid template; the Help Center documents it, with warnings.
robots.txt.liquid: when and how to edit
Shopify’s default robots.txt has rules worth knowing before you change anything:
Allow: /lets crawlers request public products, collections, pages, blogs and policies.Disallow: /admin,/cart/,/checkout,/checkouts/,/accountand/orderskeep private and per-customer pages out.Disallow: /collections/*+*keeps filtered collection pages from being crawled, because they duplicate the collection.Disallow: /collections/*sort_by*does the same for sorted versions.
Shopify says the default works for most stores. Reasons to customize it: blocking a specific crawler, adding a crawl delay for one bot, adding an extra sitemap URL, or disallowing a set of URLs your theme or an app creates.
To edit it:
- Go to Online Store, open the theme’s actions menu and click Edit code.
- Click Add a new template, choose robots, and click Create template.
- Add or remove directives with Liquid, keeping Shopify’s default rule groups.
- Save it in the published theme and test with a robots.txt tester.
Keep the Liquid default groups rather than replacing the file with plain text: Shopify keeps a Liquid template up to date as its defaults change, while plain-text rules go stale. Remove older workarounds (such as rules injected by a proxy service) first. Two cautions from Shopify: Support cannot help with this file, and a wrong rule can cost all your traffic. Also note that uploading a theme from the Themes page does not import robots.txt.liquid; ThemeKit and command-line uploads keep it.
If an older theme template still outputs rules the current default no longer has (Disallow: /search, Disallow: /policies/), Shopify suggests deleting the template to return to the current default: open Edit code, right-click robots.txt.liquid and choose Delete permanently.
AI crawlers
AI crawler access has two layers. At the network layer, Shopify handles bot management and recommends against putting a proxy in front of the store. At the robots.txt layer, you can allow or block specific user agents in robots.txt.liquid, but those rules are advisory and not every crawler follows them.
If you sell through agentic storefronts such as ChatGPT or Microsoft Copilot, your product data reaches them through Shopify Catalog, independently of robots.txt. Blocking AI crawlers stops open-web crawling only; what Catalog shares is controlled in your agentic storefront settings.
“Indexed, though blocked”
Search Console often reports URLs as “indexed, though blocked by robots.txt”. For cart, filter and sort URLs this is expected: Google found the URL through a link but was asked not to crawl it. Shopify says no action is needed in most cases, and if a normal page such as the homepage shows it, Google’s data is probably out of date.
Hide pages correctly
Three tools, for different jobs:
- Unlisted product status: the product is reachable only by direct URL. It is hidden from search engines, the sitemap, Shopify Catalog, collection pages, storefront search and recommendations. Use it for private or wholesale-only items.
seo.hiddenmetafield set to1: hides a page, blog post or product from sitemaps, search engines and store search, while it stays published. If a product has both, unlisted status wins.noindexcode intheme.liquid: hides a page from search engines but keeps it in storefront search; needs a code edit by handle.
A forgotten unlisted status or seo.hidden value is one of the first things to check in an SEO audit when a page never appears in Google.
Duplicate URLs and canonicals
Shopify sets a canonical URL on every page pointing to its primary version, so duplicates created by collections, variants or markets point back to one URL. With Markets, yourstore.com/products/shirt and yourstore.com/fr/products/shirt each have a self-referencing canonical and are linked by hreflang, so the French page is treated as a translation rather than a copy.
What you can still get wrong:
- two products with near-identical descriptions (for example, one per color) competing for the same query; use variants or write distinct pages;
- turning off Automatic hreflang tags (Online Store > Preferences > Social sharing image and SEO) without adding your own, which removes the language signals.
Multilingual setups are covered in Shopify multilingual SEO.
Redirects when URLs change
When you delete a product or change a handle, create a URL redirect to the closest live page. Shopify allows up to 100,000 redirects (20 million on Plus). Redirects only work from URLs that return “Page not found”; you cannot redirect a URL that still loads, or paths starting with /apps, /cart, /orders, /services or /shop, or fixed paths such as /collections/all. For thousands of redirects after a migration, Shopify suggests an app.
Site structure is the last lever: keep every page in a menu, use descriptive link text, and keep pages within three clicks of the homepage where possible, as Shopify’s site structure guidance recommends. Speed is the other technical area; see Shopify speed optimization. The Shopify SEO hub has the full checklist.
FAQ
Can you edit robots.txt on Shopify?
You can, by adding a robots.txt.liquid template to your theme and adding or removing rules with Liquid. Shopify Support does not help with these edits, and a wrong rule can block search engines from your store.
Does Shopify handle canonical tags? Shopify sets canonical URLs automatically on all pages, pointing to the primary version, and gives each market version a self-referencing canonical with hreflang tags.
Can I block AI crawlers on Shopify?
You can block specific AI crawlers in robots.txt.liquid, though crawlers are not obliged to follow it. Product data sent to agentic storefronts through Shopify Catalog is controlled separately, in your agentic storefront settings.