# Shopify SEO checklist: URLs, redirects, robots.txt, speed and product data

> How to improve SEO on Shopify: what the platform automates, then titles, handles and redirects, robots.txt.liquid, apps and speed, Markets and product feeds.

- URL: https://computese.com/shopify-seo/
- Author: Duong Quan Nguyen, CEO, Computese
- Published: 2024-06-16
- Updated: 2026-09-25
- Topics: SEO

## In short
- Shopify already generates sitemap.xml, a default robots.txt, canonical tags, product markup in its themes and, with Markets, hreflang tags. Shopify SEO is checking that output and doing the work the platform leaves to you.
- The /products/ and /collections/ prefixes are fixed; only the handle after them changes. Keep a redirect in place whenever a handle changes, and link product grids to /products/ URLs rather than collection paths.
- Leave robots.txt alone unless you have a specific reason, and edit it through robots.txt.liquid so Shopify's defaults keep updating. Hide single pages with noindex, the seo.hidden metafield or Unlisted status.
- Shopify names the theme, installed apps and third-party tags as the biggest factors in web performance, and uninstalling an app does not remove its theme code. Audit apps against the Core Web Vitals report.
- As of September 2026, Shopify Catalog sends products to AI channels such as ChatGPT and Microsoft Copilot whatever robots.txt says, and Google AI Mode and Gemini draw on Merchant Center, so complete product data now matters beyond search.

Shopify SEO is the work of getting a Shopify store's products, collections, pages and blog posts crawled, indexed under one URL each and shown with accurate titles and product data. Shopify already generates the sitemap, robots.txt, canonical tags and product markup. Your part is unique metadata, stable handles with redirects, lean apps, correct international setup and complete product data.

This guide covers what is specific to Shopify, from fixed URLs and robots.txt.liquid to Shopify Markets and the AI shopping channels Shopify now feeds, checked against Shopify's Help Center and developer documentation as of September 2026. A checklist closes it. The questions every store faces, whatever its platform (which category and filter pages deserve to rank, how to write product pages, what to do with discontinued products), are in our [e-commerce SEO guide](https://computese.com/e-commerce-seo/), and links work for a store as for any site: see [link building](https://computese.com/how-to-do-link-building-for-seo/).

## What Shopify handles for SEO, and what it leaves to you

Shopify's [SEO overview](https://help.shopify.com/en/manual/promoting-marketing/seo/seo-overview) lists what every online store gets without configuration: canonical tags added automatically, a generated sitemap.xml and robots.txt, title tags that themes build with the store name, and SSL switched on by default. The [sitemap](https://help.shopify.com/en/manual/promoting-marketing/seo/find-site-map) links products (with their primary image), collections, pages and blog posts and updates itself, and all current Shopify-supported themes and Theme Store themes include product structured data such as price, availability and reviews.

That is the plumbing. It does not decide what each page says, which URLs your templates link to, what your apps inject, or whether your product data is complete enough for Google. The table separates the two.

| Area                | What Shopify does                                                                            | What is still yours                                       |
| ------------------- | -------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
| Sitemap             | Generates `/sitemap.xml`, split into products, collections, blogs and pages, kept current    | Submitting it in Search Console, once per domain          |
| robots.txt          | Serves a default file that blocks cart, checkout, account and sorted or filtered collections | Changing it through robots.txt.liquid, only with a reason |
| Canonical tags      | Prints them from the theme                                                                   | Linking internally to the canonical URLs                  |
| Titles and snippets | Falls back to the page title plus the store name                                             | A unique title and meta description per page              |
| Structured data     | Outputs Product markup from the theme                                                        | Checking it after theme edits and app installs            |
| hreflang            | Adds tags automatically for Shopify Markets domains and subfolders                           | Making sure no app or theme adds a second set             |
| Speed               | CDN, image optimization, caching and compression                                             | Theme choice, apps and third-party tags                   |

## Work with Shopify's fixed URL structure

Every product, collection, page and blog post URL on Shopify is a fixed prefix plus a handle. According to Shopify's [Liquid documentation](https://shopify.dev/docs/api/liquid/basics), the handle is generated from the resource's title when it is created: lowercase, with spaces and special characters turned into hyphens, and a number appended when the title repeats (`potion`, then `potion-1`). Renaming the product later does not change the handle.

| Resource   | URL pattern                          | What you can change |
| ---------- | ------------------------------------ | ------------------- |
| Product    | `/products/<handle>`                 | The handle          |
| Collection | `/collections/<handle>`              | The handle          |
| Page       | `/pages/<handle>`                    | The handle          |
| Blog post  | `/blogs/<blog-handle>/<post-handle>` | Both handles        |

The prefixes are not negotiable. Shopify's [redirect documentation](https://help.shopify.com/en/manual/online-store/menus-and-links/url-redirect) calls `/products`, `/collections` and `/collections/all` fixed Shopify paths, and blog posts always sit under `/blogs/` and their blog's handle, as the [article object](https://shopify.dev/docs/api/liquid/objects/article) shows. Two consequences follow. A store that moves to Shopify changes almost every URL it had; Shopify's [migration guide](https://help.shopify.com/en/manual/migrating-to-shopify) gives the example of an old `/policies/shipping-policy` page that becomes `/pages/shipping-policy`, and each such change needs a redirect. And the handle is the only keyword-bearing part of the path, so write it once, well, before launch.

### Duplicate product URLs through collection paths

A product can also be reached inside a collection, at an address such as `/collections/sale/products/blue-shirt`. Themes build these links with the Liquid [`within` filter](https://shopify.dev/docs/api/liquid/filters/within), and Shopify's own documentation warns that the collection-aware page and the standard product page show the same content on separate URLs. A product in ten collections can be linked at eleven addresses.

Google groups such duplicates and picks one to index. A `rel="canonical"` tag is a strong signal for that choice, and Google's [canonicalization guide](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls) adds that internal links should point at the canonical URL, not a duplicate. Shopify themes print the canonical tag from the `canonical_url` object in `theme.liquid`, as the [theme metadata guide](https://shopify.dev/docs/storefronts/themes/seo/metadata) describes, and Shopify's Horizon theme links its [product cards](https://github.com/Shopify/horizon/blob/main/snippets/product-card.liquid) to the plain `product.url`. Three checks:

1. Search your theme code for `within`. If product grids use it, change the links to `product.url`, so crawlers meet one URL per product.
2. Open a product from a collection page and view the source. The canonical link should name the `/products/` URL; if it names the collection path, a theme or app customization has changed it.
3. Crawl the store and list URLs that contain `/collections/` and `/products/` together. Any that are linked internally are links you can fix.

## Edit titles, meta descriptions and alt text

Every product, collection, page and blog post has a search engine listing section in the admin, with three fields: page title, meta description and URL handle.

| What you are editing | Where in the Shopify admin                                      |
| -------------------- | --------------------------------------------------------------- |
| Home page            | Online Store > Preferences, "Social sharing image and SEO"      |
| Product              | Products > the product > Search engine listing                  |
| Collection           | Products > Collections > the collection > Search engine listing |
| Page                 | Online Store > Pages > the page > Search engine listing         |
| Blog post            | Content > Blog posts > the post > Search engine listing         |

Shopify's [keyword guide](https://help.shopify.com/en/manual/promoting-marketing/seo/adding-keywords) recommends titles of 60 characters or fewer (the field accepts 70) and meta descriptions of about 160. The editors for [products](https://help.shopify.com/en/manual/products/add-update-products) and [pages](https://help.shopify.com/en/manual/online-store/add-edit-pages) warn that titles over 70 characters may be cut off in results. Google sets no fixed limit and [truncates title links](https://developers.google.com/search/docs/appearance/title-link) to fit the device, so put the words that identify the page first, and avoid titles that differ by a single word across a whole catalogue. Three Shopify behaviours are worth knowing:

- **Blank fields fall back.** A product with no SEO title gets the theme's default: its title plus the store name. That is acceptable for a long tail of products and weak for your top sellers and collections.
- **The title field is the `h1`.** Shopify builds the page heading from the title you give the product, collection, page or post, so that title should say plainly what the page is.
- **Google may rewrite the snippet.** If a result shows different text, view the page source: if `<title>` and `<meta name="description">` match what you entered, Shopify is doing its part and the search engine chose other text.

Alt text is set per image. For a product image, open the product, click the image and choose **Edit alt text**; for a collection or blog post featured image, choose **Update**, then **Edit image**. Describe what the photo shows ("Navy merino crew-neck sweater, folded"), not a list of keywords; the same text serves screen reader users, which our [accessibility guide](https://computese.com/how-to-improve-website-accessibility/) covers. File names matter too, and Shopify [cannot rename an uploaded file](https://help.shopify.com/en/manual/promoting-marketing/seo/optimize-site): rename it on your computer before uploading, or replace the image to fix a name like `IMG_0042.jpg`. The rest of on-page work, from headings to internal links, is the same on Shopify as anywhere; our [on-page SEO guide](https://computese.com/on-page-seo/) goes through it.

## Change handles without losing traffic

Changing a handle changes the URL, and every link, bookmark and search result that points to the old one then reaches a 404 page, which is why the product and collection editors tell you not to edit handles often. When you do, the admin offers a redirect: for [blog posts](https://help.shopify.com/en/manual/online-store/blogs/writing-blogs/working-with-blog-posts) and pages, **Create a URL redirect** is pre-selected, and the [collection editor](https://help.shopify.com/en/manual/products/collections/collection-settings) asks whether to create one. After any handle change, confirm the redirect exists under **Content > Menus > View URL redirects**, where you can also create redirects by hand or import them from a CSV file.

![A search result points to an old product address that now leads to an empty page, and an orange redirect arrow carries the visit on to the same product at its new address.](https://computese.com/images/blog/shopify-seo/redirect.10f4795594-1536.webp)

*A changed handle is a new URL: without the redirect, every link and search result that points to the old one ends at a 404.*

Shopify's [URL redirect rules](https://help.shopify.com/en/manual/online-store/menus-and-links/url-redirect) explain most redirects that seem not to work:

- **A redirect only fires on a broken URL.** If the old address still loads a page, the redirect is ignored. This is why a hidden collection or a draft product can be redirected while it returns 404, and why Shopify deletes that redirect automatically when you make the item visible again.
- **Some paths cannot be redirected:** the fixed paths above, URLs that start with `/apps`, `/application`, `/cart`, `/carts`, `/orders`, `/services` or `/shop`, and collection tag-filter URLs, which Shopify treats as valid even when no product has the tag.
- **There is a ceiling:** 100,000 redirects, or 20,000,000 on the Plus plan.
- **Markets inherit them.** One redirect from `/products/blue-t-shirt` also applies under market subfolders such as `/en-ca/`, unless you create a separate one for that subfolder.
- **They are 301s, and browsers and search engines cache them.** Removing a redirect does not stop it for visitors who already followed it.

For a migration, build the redirect list before the domain moves, import it as a CSV, then test the old URLs that had the most traffic and links. The [migration guide](https://help.shopify.com/en/manual/migrating-to-shopify) asks for the same check. Our [SEO service](https://computese.com/services/seo/) plans migrations and replatforming as a cutover: a URL inventory from crawl, logs and analytics, a one-to-one redirect map, verification on staging and monitoring after launch.

## Leave robots.txt alone unless you have a reason

Every store serves a default robots.txt, and Shopify's [robots.txt documentation](https://help.shopify.com/en/manual/promoting-marketing/seo/editing-robots-txt) lists its key rules as of September 2026:

- `/admin`, `/cart/`, `/checkout`, `/checkouts/`, `/account` and `/orders`: private, per-customer pages.
- `/collections/*+*`: collection pages filtered by combined tags.
- `/collections/*sort_by*`: sorted collection pages, which list the same products in another order.

Those are the key entries, not the whole file. Public content (products, collections, pages, blog posts and policies) stays crawlable. To change the file, add a `robots.txt.liquid` template in the theme's code editor (**Online Store > Edit code > Add a new template > robots**). Shopify's warnings are unusually blunt: it is an unsupported customization that Shopify Support cannot help with, and incorrect use can lose a store all its traffic.

Good reasons to edit it are narrow: blocking a URL pattern that wastes crawling, such as a parameter an app adds; adding host-specific rules when Shopify Markets serves different domains; blocking or allowing a particular crawler; or listing an extra sitemap. Shopify's [developer guide](https://shopify.dev/docs/storefronts/themes/seo/robots-txt) shows how to add a rule while keeping the default groups; its example blocks every URL with a `q=` parameter for all crawlers:

```liquid
{% for group in robots.default_groups %}
  {{- group.user_agent }}
  {%- for rule in group.rules -%}
    {{ rule }}
  {%- endfor -%}
  {%- if group.user_agent.value == '*' -%}
    {{ 'Disallow: /*?q=*' }}
  {%- endif -%}
  {%- if group.sitemap != blank -%}
    {{ group.sitemap }}
  {%- endif -%}
{% endfor %}
```

Keep the loop over `robots.default_groups`. Shopify updates those defaults, and a template rewritten as plain text freezes the file as it was on the day you pasted it. Two further traps: uploading a theme from the Themes page does not import `robots.txt.liquid` (Shopify CLI and Theme Kit keep it), and an old custom template can keep rules the current default has dropped, such as `Disallow: /search` and `Disallow: /policies/`. Deleting the template restores the current default.

The "Indexed, though blocked by robots.txt" status in Search Console is normal on Shopify, and usually needs no action.

> [!IMPORTANT]
> robots.txt stops crawling, not indexing. Google [only sees a `noindex` tag](https://developers.google.com/search/docs/crawling-indexing/block-indexing) on a page it is allowed to fetch, so never block a URL in robots.txt that you are trying to remove with `noindex`.

### Hide a page or product from search

Shopify offers three ways to keep something out of search while it stays live, described in its guide to [hiding a page from search engines](https://help.shopify.com/en/manual/promoting-marketing/seo/hide-a-page-from-search-engines):

- **A `noindex` meta tag** added to the `<head>` of `theme.liquid` with a Liquid condition, for a template (`template contains 'search'`) or a single handle. The page drops out of search engines but stays in your storefront search.
- **The `seo.hidden` metafield**, an integer set to `1` on a product, page or blog post.
- **Unlisted status**, for products that should be reachable only by their direct URL.

| Where the product still appears | `seo.hidden` = 1 | Unlisted status |
| ------------------------------- | ---------------- | --------------- |
| Search engines                  | No               | No              |
| Sitemap                         | No               | No              |
| Storefront search               | No               | No              |
| Shopify Catalog (AI channels)   | No               | No              |
| Collections and recommendations | Yes              | No              |
| Third-party sales channels      | Yes              | No              |
| Its own product page            | Yes              | Yes             |

## Get the store indexed, then audit it

Search engines cannot index what they cannot reach. Shopify's [SEO FAQ](https://help.shopify.com/en/manual/promoting-marketing/seo/frequently-asked-questions) lists the usual blockers: a store still in private mode (the setting behind the storefront password), a store on a trial, which search engines do not index, and a migration without redirects. Once the store is public:

1. **Verify the domain in Search Console.** Shopify's [sitemap guide](https://help.shopify.com/en/manual/promoting-marketing/seo/find-site-map) uses a URL-prefix property and the HTML tag method, pasting the tag under `<head>` in `theme.liquid`; a DNS record works too.
2. **Submit `/sitemap.xml`,** and repeat for every international domain you use. Languages you publish are added to each domain's sitemaps automatically.
3. **Inspect a product, a collection and a blog post** with URL Inspection. It shows the rendered page Google sees, which is also how Shopify suggests confirming a missing title or `h1` (usually caused by theme edits or an app).

Shopify runs bot management for every store at the network level. To let your own audit crawler through as an authorized visitor (Shopify documents the setup for Screaming Frog, Sitebulb, JetOctopus and OnCrawl), use [Web Bot Auth](https://help.shopify.com/en/manual/promoting-marketing/seo/crawling-your-store): create a signature under **Online Store > Preferences > Crawler access**, valid for up to three months and one domain, and add its `Signature-Input`, `Signature` and `Signature-Agent` headers to the crawler's requests. Search engines do not need it to index the store. What an audit should look for is the subject of our [technical SEO guide](https://computese.com/technical-seo/).

## Check the product structured data your theme outputs

Shopify's own themes print product markup with the [`structured_data` Liquid filter](https://shopify.dev/docs/api/liquid/filters/structured_data). It outputs a schema.org `Product` for a product without variants and a `ProductGroup` for one with variants, with an `Offer` carrying the price, currency, availability and URL. In Horizon it is one line in the [product section](https://github.com/Shopify/horizon/blob/main/sections/product-information.liquid):

```liquid
<script type="application/ld+json">
  {{ closest.product | structured_data }}
</script>
```

For merchant listings, Google [requires](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing) a `Product` with `name`, `image` and `offers`, and an `Offer` with `price` and `priceCurrency`; it recommends `availability`, `brand`, `sku` and a `gtin` among others. The filter covers the required part. What breaks it in practice:

- **A customized theme** that no longer outputs the markup. Search the product template for `structured_data` or `application/ld+json`.
- **An app that adds its own Product markup** on top of the theme's, which leaves two descriptions of one product that can disagree. Keep one source.
- **Empty fields.** The filter exports what the product holds; in Shopify's own example, a product with no description outputs an empty `description`. The fix is in the product data, not in the code.

Test one product with variants and one without in the Rich Results Test after every theme update or app install, then check a live product with URL Inspection. How markup, feed and page must agree is covered in the [e-commerce guide](https://computese.com/e-commerce-seo/).

## Find what slows the store: theme, apps and tags

Shopify's [performance guide](https://help.shopify.com/en/manual/online-store/web-performance/improving-web-performance) names the three biggest factors in a store's web performance: the theme, the apps installed, and third-party code added by hand, including tag managers and the tags inside them. The infrastructure is already handled: a CDN run by Cloudflare, an image CDN that resizes, compresses and often serves WebP, HTTP/2, one-year browser caching, compression and minification. Scanner advice to add a CDN or enable compression does not apply to a Shopify store.

Apps are the part owners underestimate. Shopify's troubleshooting steps start with apps that load assets on the storefront, and it warns that uninstalling an app does not automatically remove its code from your theme.

![Three app modules are cabled to script blocks plugged into a store page. A fourth block, in orange, has no app left above it but is still plugged in, next to a stopwatch.](https://computese.com/images/blog/shopify-seo/apps.5889450ecf-1536.webp)

*Deleting an app removes the app, not always the code it added to your theme; leftover scripts keep loading on every page.*

Measure before changing anything. Shopify's Web performance report uses [real-user data](https://help.shopify.com/en/manual/online-store/web-performance/overview) from Chromium browsers and Firefox, reports the 75th percentile, and bases the store's score on the home page, the most visited product page and the most visited collection page over the last seven days. PageSpeed Insights uses Google's Chrome UX Report instead, so the two can differ. The targets are Google's [Core Web Vitals thresholds](https://developers.google.com/search/docs/appearance/core-web-vitals): Largest Contentful Paint within 2.5 seconds, Interaction to Next Paint under 200 milliseconds and Cumulative Layout Shift under 0.1. Google says good scores align with what its core ranking systems seek to reward.

| Symptom                               | Likely cause on Shopify                                         | What to do                                                                       |
| ------------------------------------- | --------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Slow LCP on product pages             | Lazy-loaded or animated main image; render-blocking app scripts | Load the main image eagerly with `fetchpriority="high"`; defer or remove the app |
| Poor INP (taps and clicks feel slow)  | Too much JavaScript from the theme, apps or the tag manager     | Audit every script; remove unused apps, pixels and tags                          |
| Layout shifts                         | App widgets injected after load; images without dimensions      | Reserve space; render images with `image_tag`, which adds width and height       |
| Slow, heavy collection pages          | Many products per page, many sections, page transitions         | Turn on pagination, trim sections, compare with animations off                   |
| Scores dropped with no content change | A new app, theme update or tag                                  | Compare the report before and after; roll back the change                        |

Shopify's [theme performance guidance](https://shopify.dev/docs/storefronts/themes/best-practices/performance) adds one rule with direct SEO weight: render product information and navigation in Liquid and HTML, not client-side JavaScript, which delays LCP and harms SEO. It also sets the bar for the Theme Store: an average Lighthouse performance score of at least 60 across the home, product and collection pages. Treat that as a floor, not a target.

## Set up Shopify Markets for international SEO

Shopify Markets can give each country or region its own URL, or serve every market from one. Shopify's [international domains guide](https://help.shopify.com/en/manual/international/managing-international-domains) sets out the trade-offs:

| Method              | Example                        | Shopify's SEO note                                                                    |
| ------------------- | ------------------------------ | ------------------------------------------------------------------------------------- |
| Subfolders          | `example.com/fr-ca`            | Simplest to set up and benefits from the primary domain's existing search standing    |
| Subdomains          | `ca.example.com`               | Free to set up, but may take longer to build authority                                |
| Country domains     | `example.ca`                   | Each domain builds its own authority, so this takes the most time and effort          |
| Primary domain only | `example.com` for every market | No region-specific URLs, so it won't help you win search traffic in secondary markets |

Rules that catch stores out: international domains need the Basic plan or higher and a custom domain (never `myshopify.com`); language-only subfolders such as `/fr` exist only on the primary market, so secondary markets use language plus country, such as `/fr-ca`; two domains in one market must target different languages, or they duplicate each other; and deleting a market turns its URLs into 404s unless you import redirects.

hreflang is automatic. Shopify's [hreflang guide](https://shopify.dev/docs/storefronts/themes/seo/hreflang) explains that the tags are injected through `content_for_header` in `theme.liquid`, use region codes such as `fr-ca` for country markets and language codes such as `fr` for broader ones, update when markets change, and stay in sync with each page's canonical URL. The danger is a second set: Shopify warns that adding your own tags on top of the automatic ones produces duplicate or conflicting annotations. If a theme or app already outputs hreflang, turn off **Automatic hreflang tags** under **Online Store > Preferences**. You need your own tags only for cases Markets cannot see, such as separate Shopify stores on different domains; build them from the `localization` object, and follow Google's rule that [each version lists itself and every other version](https://developers.google.com/search/docs/specialty/international/localized-versions).

Be careful with automatic redirection. Shopify can send visitors to the market that matches their browser language and location (it does not redirect customers within the EU). Google's [multi-regional guidance](https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites) advises against redirecting on a guess of the user's language, because it can stop users and search engines from seeing every version, and notes that most Google crawls originate from the US. Keep a visible country and language selector with plain links, and submit a sitemap for each domain.

## Send products to Google with the Google & YouTube channel

The [Google & YouTube channel](https://help.shopify.com/en/manual/online-sales-channels/marketplaces/google) is managed by Google and syncs your products and store information to Google Merchant Center, where eligible stores selling in the United States can appear in Shopping tab listings for free. It is also the route Shopify documents for Google's AI shopping surfaces, covered below. The [channel requirements](https://help.shopify.com/en/manual/online-sales-channels/marketplaces/google/requirements) are where most products get stuck:

- **Store:** out of private mode, a valid payment provider, a refund policy and terms of service linked in the footer menu, and at least one visible contact method (email, phone, address or contact form).
- **Identifiers:** a GTIN on each variant where the product has one; otherwise an MPN and brand in the channel. Wrong identifiers keep products unpublished and can get the Merchant Center account suspended.
- **Categories and attributes:** a Google product category, plus age group, gender, colour and size for apparel, a UPC, EAN or JAN for music, films and video games, and an ISBN for books.
- **Variants:** product options, including variants, must be in English to sync.
- **Shipping:** only rates in the General shipping profile sync; some countries require shipping costs, or offers are disapproved.

If you connect an existing Merchant Center account, the channel overwrites the product feed you had, so decide which system owns the feed before you connect it.

## Shopify and AI shopping assistants

As of September 2026, Shopify's [agentic storefronts](https://help.shopify.com/en/manual/online-sales-channels/agentic-storefronts) let customers discover and buy your products inside AI channels: ChatGPT, Google AI Mode and Gemini, Microsoft Copilot and Meta. They are on by default for eligible stores, managed under **Sales channels > Agentic**, and work in two modes. ChatGPT acts as a referrer, and the purchase happens in your online store checkout; in Google AI Mode and Gemini, Copilot and Meta, customers can pay in a Shopify-powered direct checkout without leaving the conversation, when direct checkout is on. How these agentic checkouts work across Google, OpenAI and the card networks is covered in [the future of e-commerce](https://computese.com/the-future-of-ecommerce-business/).

The data does not come from crawling your theme. Products reach ChatGPT and Copilot through [Shopify Catalog](https://help.shopify.com/en/manual/online-sales-channels/agentic-storefronts/products), which sends title, description, options, images, price and availability and keeps them current; Meta receives them through the Facebook and Instagram channel; and [Google AI Mode and Gemini](https://help.shopify.com/en/manual/online-sales-channels/agentic-storefronts/google) draw on Google Merchant Center, which makes the Google & YouTube channel's product data the input for Google's AI shopping as well. Direct checkout there currently requires a store based in, and selling to, the United States.

![Magnifying-glass crawlers stop at a padlocked gate in front of a store, while an orange pipe carries product cards from the store past the gate to three chat windows.](https://computese.com/images/blog/shopify-seo/catalog.63e0f131e8-1536.webp)

*Blocking AI crawlers in robots.txt closes one path only; products reach agentic storefronts through Shopify Catalog regardless.*

That changes what robots.txt can do. Rules in `robots.txt.liquid` affect only crawlers on the open web; they do not stop Shopify Catalog from sending products to the channels you have activated. The controls are the channel settings and, to hide a product everywhere, Unlisted status, which also removes it from Google and your sitemap. Every store also serves agent discovery files at `/agents.md`, `/llms.txt` and `/llms-full.txt`, carrying the store name, sitemap link, policies and discovery endpoints, and you can change their content with `agents.md.liquid` and matching templates. You do not need an app to generate them.

What improves your visibility is the same product data that helps search. Shopify's [AI guidance](https://help.shopify.com/en/manual/promoting-marketing/seo/optimizing-store-for-ai) asks for detailed specifications, comparisons with similar products, sizing, materials and care instructions, and structured attributes, and offers the free Shopify Knowledge Base app to review and customize the FAQs that AI shopping agents use to answer questions about your store. Two measurement notes: orders from AI channels appear in the admin with channel or referrer attribution, and Google Analytics and custom pixels do not fire in Google AI Mode and Gemini's direct checkout. How Google picks sources for its AI answers is in our guide to [AI Overviews](https://computese.com/ai-overviews-in-search/).

## The Shopify SEO checklist

1. Take the store out of private mode and off the trial before you expect it in search.
2. Verify every domain in Search Console and submit its `/sitemap.xml`.
3. Write a unique title (about 60 characters) and meta description for the home page, every collection, your top products, pages and posts.
4. Rename image files before uploading them, and add alt text that describes each product, collection and post image.
5. Decide handles before launch, and keep a redirect from the old handle whenever you change one.
6. Before a migration or domain move, import a redirect CSV for every old URL, then test the most visited ones.
7. Link product grids to `/products/` URLs, and confirm the canonical on a collection-path product URL.
8. Leave the default robots.txt unless you have a written reason; if you edit it, use Liquid and keep the default groups.
9. Hide pages with `noindex`, `seo.hidden` or Unlisted status, never with robots.txt alone.
10. Run a product with variants and one without through the Rich Results Test after each theme or app change.
11. Review the Web performance report monthly; remove apps that do not earn their cost, and the code they leave behind.
12. With Markets, prefer subfolders, keep a single source of hreflang and submit one sitemap per domain.
13. Install the Google & YouTube channel and complete GTINs (or MPN and brand), Google product categories, policies and contact details.
14. Review **Sales channels > Agentic** and the product details AI channels receive; use Unlisted only for products that should disappear everywhere.

If you want this done for you, our [SEO service](https://computese.com/services/seo/) starts with a technical audit of crawling, rendering, indexing, speed and structured data, including product and merchant markup, and reports from Search Console, server logs and field data. Shopify and Google Merchant Center are among the platforms and tools it works with.

## Key terms
- **Handle**: The last part of a Shopify URL, generated from a resource's title when it is created: lowercase, with words joined by hyphens. Changing the title later does not change the handle; editing the handle changes the URL.
- **Canonical URL**: The one URL you want indexed when the same content is reachable at several. Shopify themes print it from the canonical_url Liquid object, and Google treats it as a strong signal, not a command.
- **Collection-aware product URL**: A product URL inside a collection path, such as /collections/sale/products/blue-shirt, built by the within Liquid filter. It shows the same content as the product's /products/ URL.
- **robots.txt.liquid**: The theme template that generates a Shopify store's robots.txt. Editing it with Liquid keeps Shopify's default rules, which Shopify updates over time, and adds or removes rules around them.
- **Unlisted status**: A Shopify product status that leaves a product reachable only by its direct URL: hidden from search engines, the sitemap, store search, collections, recommendations and Shopify Catalog.
- **structured_data filter**: The Liquid filter that turns a product into schema.org JSON-LD: a Product when it has no variants and a ProductGroup when it has variants, with Offer data for price and availability.
- **hreflang**: An annotation that tells search engines which language and region a URL targets and where its other versions are. Shopify adds it automatically for Markets domains and subfolders.
- **Core Web Vitals**: Google's field metrics for loading (Largest Contentful Paint), responsiveness (Interaction to Next Paint) and visual stability (Cumulative Layout Shift). Shopify's Web performance report measures them from real visits.
- **Google & YouTube channel**: The Shopify sales channel, managed by Google, that syncs products, shipping and store details to Google Merchant Center for free listings, ads and Google's AI shopping surfaces.
- **Shopify Catalog**: Shopify's product data feed to AI channels. It sends eligible products (title, description, options, images, price, availability) to agentic storefronts such as ChatGPT and Microsoft Copilot, independently of robots.txt.

## Common questions

### Is Shopify good for SEO?

Shopify handles the technical basics well: sitemaps, a sensible default robots.txt, canonical tags, HTTPS, a CDN and product structured data in its themes. Its limits are fixed URL prefixes such as /products/ and /collections/, and the scripts that apps and tag managers add. Rankings still depend on what your pages say, the links you earn and the product data you send to Google.

### Can I remove /products/ or /collections/ from Shopify URLs?

No. Shopify treats /products and /collections as fixed paths, so the only part of a product or collection URL you control is the handle after the prefix. Choose handles before launch, and redirect any handle you later change.

### Why is my Shopify store not showing up on Google?

Shopify lists the usual causes: the store is new, it is still in private mode, it is on a trial plan (search engines do not index trial stores), or it was migrated without redirects from the old URLs. Verify the domain in Search Console, submit /sitemap.xml and use URL Inspection on a product page to see what Google sees.

### Do I need a Shopify SEO app?

Not for the basics, which the platform generates. Apps help with specific jobs such as large redirect lists, image optimization or broken-link monitoring, and with audits. Every app that adds code to the storefront costs some speed, so install one for a specific job and remove its leftover theme code if you uninstall it.

### How long do SEO changes take to show on Shopify?

Shopify says edits to title tags can take a couple of weeks to appear, because search engines have to crawl the page again. Requesting indexing in Search Console's URL Inspection tool can speed up a single URL, but Google does not guarantee when it recrawls.

### Should I block AI crawlers in robots.txt on Shopify?

Blocking them in robots.txt.liquid only limits crawling of your public pages. It does not stop Shopify Catalog from sending product data to the agentic storefronts you have activated; those are managed under Sales channels > Agentic in the admin. Setting a product to Unlisted hides it from AI channels, but also from Google and your sitemap.

## Sources
1. [SEO overview](https://help.shopify.com/en/manual/promoting-marketing/seo/seo-overview), Shopify Help Center
2. [Finding and submitting your sitemap](https://help.shopify.com/en/manual/promoting-marketing/seo/find-site-map), Shopify Help Center
3. [Liquid basics: object handles](https://shopify.dev/docs/api/liquid/basics), Shopify Developers
4. [Liquid objects: article](https://shopify.dev/docs/api/liquid/objects/article), Shopify Developers
5. [Creating and managing URL redirects](https://help.shopify.com/en/manual/online-store/menus-and-links/url-redirect), Shopify Help Center
6. [Migrate to Shopify](https://help.shopify.com/en/manual/migrating-to-shopify), Shopify Help Center
7. [Liquid filters: within](https://shopify.dev/docs/api/liquid/filters/within), Shopify Developers
8. [How to specify a canonical URL with rel="canonical" and other methods](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls), Google Search Central
9. [Add SEO metadata to your theme](https://shopify.dev/docs/storefronts/themes/seo/metadata), Shopify Developers
10. [Horizon theme: snippets/product-card.liquid](https://github.com/Shopify/horizon/blob/main/snippets/product-card.liquid), Shopify on GitHub
11. [Adding keywords for SEO to your Shopify store](https://help.shopify.com/en/manual/promoting-marketing/seo/adding-keywords), Shopify Help Center
12. [Adding and updating products](https://help.shopify.com/en/manual/products/add-update-products), Shopify Help Center
13. [Creating and editing pages](https://help.shopify.com/en/manual/online-store/add-edit-pages), Shopify Help Center
14. [Influencing your title links in search results](https://developers.google.com/search/docs/appearance/title-link), Google Search Central
15. [Optimizing your site structure for search engines](https://help.shopify.com/en/manual/promoting-marketing/seo/optimize-site), Shopify Help Center
16. [Adding and managing blog posts](https://help.shopify.com/en/manual/online-store/blogs/writing-blogs/working-with-blog-posts), Shopify Help Center
17. [Managing collection settings](https://help.shopify.com/en/manual/products/collections/collection-settings), Shopify Help Center
18. [Editing robots.txt.liquid](https://help.shopify.com/en/manual/promoting-marketing/seo/editing-robots-txt), Shopify Help Center
19. [Customize robots.txt](https://shopify.dev/docs/storefronts/themes/seo/robots-txt), Shopify Developers
20. [Block Search indexing with noindex](https://developers.google.com/search/docs/crawling-indexing/block-indexing), Google Search Central
21. [Hiding a page from search engines](https://help.shopify.com/en/manual/promoting-marketing/seo/hide-a-page-from-search-engines), Shopify Help Center
22. [Frequently asked questions about SEO](https://help.shopify.com/en/manual/promoting-marketing/seo/frequently-asked-questions), Shopify Help Center
23. [Crawling your store](https://help.shopify.com/en/manual/promoting-marketing/seo/crawling-your-store), Shopify Help Center
24. [Liquid filters: structured_data](https://shopify.dev/docs/api/liquid/filters/structured_data), Shopify Developers
25. [Horizon theme: sections/product-information.liquid](https://github.com/Shopify/horizon/blob/main/sections/product-information.liquid), Shopify on GitHub
26. [Merchant listing (Product, Offer) structured data](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing), Google Search Central
27. [Improving your online store performance](https://help.shopify.com/en/manual/online-store/web-performance/improving-web-performance), Shopify Help Center
28. [Overview of web performance](https://help.shopify.com/en/manual/online-store/web-performance/overview), Shopify Help Center
29. [Understanding Core Web Vitals and Google search results](https://developers.google.com/search/docs/appearance/core-web-vitals), Google Search Central
30. [Performance best practices for Shopify themes](https://shopify.dev/docs/storefronts/themes/best-practices/performance), Shopify Developers
31. [International domains](https://help.shopify.com/en/manual/international/managing-international-domains), Shopify Help Center
32. [Use hreflang tags in your theme](https://shopify.dev/docs/storefronts/themes/seo/hreflang), Shopify Developers
33. [Tell Google about localized versions of your page](https://developers.google.com/search/docs/specialty/international/localized-versions), Google Search Central
34. [Managing multi-regional and multilingual sites](https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites), Google Search Central
35. [Google & YouTube](https://help.shopify.com/en/manual/online-sales-channels/marketplaces/google), Shopify Help Center
36. [Google & YouTube channel requirements](https://help.shopify.com/en/manual/online-sales-channels/marketplaces/google/requirements), Shopify Help Center
37. [Shopify agentic storefronts](https://help.shopify.com/en/manual/online-sales-channels/agentic-storefronts), Shopify Help Center
38. [Shopify Catalog and product discovery for agentic storefronts](https://help.shopify.com/en/manual/online-sales-channels/agentic-storefronts/products), Shopify Help Center
39. [Selling on Google AI Mode and Gemini](https://help.shopify.com/en/manual/online-sales-channels/agentic-storefronts/google), Shopify Help Center
40. [Optimizing your store for AI](https://help.shopify.com/en/manual/promoting-marketing/seo/optimizing-store-for-ai), Shopify Help Center
