The Shopify SEO Checklist
Shopify handles the store infrastructure for you: an automatic sitemap, canonical tags, a free SSL certificate, and a redirect to HTTPS. The work it leaves is on the catalogue itself, where a hundred products can each carry a templated title and a blank alt text. This checklist covers the 22 checks that sit in that gap.
Twenty-two checks for a Shopify store, from the password setting that stops a crawler at the door to the alt text on every product image. Every row names the admin path, the frequency, and the time it takes.
What Shopify Handles for You
Every Shopify store has an automatic sitemap.xml listing products, primary product images, collections, pages, and blog posts, and the file updates itself when content changes. Canonical tags are added automatically. A free TLS certificate is issued, and the store redirects to the secure version. A robots.txt file is generated with sensible defaults that keep the cart, the checkout, internal search, and some filtered collection URLs out of the results.
That is a strong starting point, and it is why a Shopify store usually has no technical problems at all. The trouble starts at scale. A catalogue of four hundred products with four hundred templated titles is a technical problem the platform cannot solve, because the template is doing exactly what it was told to do.
The One Setting That Stops Everything
A password-protected store has a sitemap that a crawler cannot reach, which is the most common reason a new Shopify store fails to submit its sitemap. Check the store is public before you check anything else, and the password field is a one-minute fix with a large consequence.
This page sits inside the complete technical SEO checklist, and the platform-specific work it covers is the same work the general pages cover, with the exact admin path to each setting.
Handled by Shopify
The 22 Shopify SEO Checks
Every check with the admin path it lives in, how often to run it, and how long it takes.
| # | Check | Frequency | Tool | Time |
|---|---|---|---|---|
| 1 | Confirm the store is not password protected | Once, then on launch | Shopify admin | 2 min |
| 2 | Submit the store sitemap in Search Console | Once, then monthly | GSC | 10 min |
| 3 | Review robots.txt for accidental blocks | Quarterly | Browser + theme code | 20 min |
| 4 | Set a unique SEO title on every product | Per product | Search engine listing | 2 min each |
| 5 | Set a unique meta description on every product | Per product | Search engine listing | 2 min each |
| 6 | Write clean URL handles without parameters | Per product | URL handle field | 1 min each |
| 7 | Find duplicate and templated titles across the catalog | Quarterly | Screaming Frog | 45 min |
| 8 | Check every collection page for a distinct title | Quarterly | Screaming Frog | 30 min |
| 9 | Confirm one H1 per template and no extra ones from apps | Quarterly | View source | 30 min |
| 10 | Write descriptive alt text on product images | Per upload | Media editor | 30 sec each |
| 11 | Translate alt text for every market | Per market | Media editor | 30 sec each |
| 12 | Fix sold-out products that read as soft 404s | Monthly | GSC > Pages | 20 min |
| 13 | Confirm the canonical on variant and filtered URLs | Quarterly | Screaming Frog | 30 min |
| 14 | Check the sitemap for thin and empty pages | Monthly | GSC + sitemap.xml | 25 min |
| 15 | Fix the Core Web Vitals on product templates | Quarterly | PageSpeed Insights | 40 min |
| 16 | Check the AI channel visibility in the catalog | Monthly | Sales channels > Agentic | 15 min |
| 17 | Review the AI crawler rules in robots.txt | Quarterly | robots.txt.liquid | 15 min |
| 18 | Check which URLs appear in AI Overviews | Monthly | GSC > Generative AI | 15 min |
| 19 | Write the product copy past the boilerplate line | Per priority product | Product editor | 30 min each |
| 20 | Set the homepage title and description | Once, then on change | Online Store > Preferences | 5 min |
| 21 | Check the Open Graph image on every template | Quarterly | Theme editor | 20 min |
| 22 | Check the internal link structure from collections to products | Quarterly | Screaming Frog | 30 min |
Where the SEO Fields Live
One panel does four things, and the fallback matters more than the panel.
1 The Search Engine Listing panel
Products, collections, pages, and blog posts all use the same panel. Open the resource, click Edit website SEO, and you get three fields: the page title, the meta description, and the URL handle. The handle is the only one with no fallback, so set it before the product goes live rather than after.
2 What happens when you leave them blank
The title falls back to the visible page title, which is usually a reasonable answer for a product and a bad one for a collection. The description falls back to a snippet of body copy, which reads like a sentence lifted out of context. A catalogue where every description is an excerpt reads as duplicate content to Google and as noise to a shopper, which is why the first bulk job on a new store is filling in the descriptions.
3 The homepage sits somewhere else
The homepage title and description are not on the homepage panel. They live under Online Store, then Preferences. The store name also has to be set somewhere, because the theme template appends it to the page title, and that is how a 55-character title ends up as a 70-character title in the results.
4 Editing a custom robots file without breaking it
Shopify only uses a robots.txt.liquid file if somebody created one, because the default is generated outside the theme. When you do need to customise it, build on the default robots object rather than replacing it, since the platform updates those defaults and a careless rule can cut off the whole catalogue. Add the AI crawler rules, or a sitemap line, and leave the rest alone.
The Catalogue Problem
Where the technical part of Shopify SEO turns into a content problem.
The default SEO fields on a product produce a title built from the product name and the store name, which is exactly right for one product and useless for four hundred. Google has said for years that repeated boilerplate that makes pages hard to distinguish is a problem, and a catalogue where every title differs only by the SKU is the textbook version of it.
1 Find the templated titles first
Crawl the store with Screaming Frog, export the title tags and the meta descriptions, then sort the export by title and look for exact duplicates. Repeat for the descriptions. The rows that come back with the same string forty times are the rows to fix, and they are almost always the rows carrying the most impressions, because a templated title on a high-traffic product is the one that costs the most.
2 Fix them in a batch, not one at a time
Shopify accepts a product CSV, and the SEO title and description are columns in it. Export the products, fill in the two columns, and reimport. Clicking through four hundred products in the admin is the reason most catalogues never get fixed.
3 Alt text is the cheapest image work you will do
Most stores leave alt text blank on most images, and the field is in the media editor, under Information. Keep it to about 125 characters, write what the image actually shows, and include the product term naturally. A photo of the stitching detail on a merino base layer should say so, because identical alt text on every image in a gallery adds nothing for a crawler or for a screen reader.
4 Sold-out products are a soft 404 waiting to happen
Squarespace and Shopify both warn that text such as no longer available can make Google treat the page as a soft 404. If the product is coming back, keep the page with a restock note and a clear date. If it is gone for good, redirect it to the closest product rather than leaving an empty page indexed.
Shopify SEO and AI Search
Where a store shows up when a shopper asks an assistant instead of a search engine.
Your store is not a closed door
Shopify's own documentation states that a store can be indexed by search engines and language models without signatures. What Web Bot Auth controls is access for first-party tools such as auditors and accessibility scanners, not indexing.
The catalog feeds the agentic storefronts
The robots file governs crawlers coming through the open web, and it does not stop Shopify Catalog from sending product data to the agentic storefronts you have activated. A decision about one does not decide the other.
Test a real buyer query
The search preview under Sales channels, then Agentic, then Explore runs real queries against the catalog. It shows where your products sit, which is the only way to know whether an assistant is finding you at all.
Read the Generative AI report
Search Console now has a Generative AI section under Performance, then Search results. It shows which URLs appear in AI Overviews and AI Mode, which turns AI visibility from a guess into a report you can act on.
Structured data is the citation layer
Shopify marks up products, collections, articles, and events by default. Keeping that clean is what lets an answer engine parse and quote you, and it costs nothing beyond not breaking it.
Allow the retrieval bots by name
GPTBot, ClaudeBot, PerplexityBot, and OAI-SearchBot are separate from the training bots. Allowing the first group and blocking the second is a defensible position, and it is a decision you make explicitly rather than by default.
Get the Full Checklist as a Template
Every checklist in the library, in a printable PDF and a spreadsheet with a Status and an Owner column, so the work can be assigned and tracked between passes.
The data is open source under CC BY 4.0 on GitHub. The broader platform work is in the technical SEO checklist.
Shopify SEO FAQs
Direct answers on the catalogue, the sitemap, the plugin question, and AI visibility.
Yes, for a store with a clean catalogue. The platform generates the sitemap, adds canonical tags, issues a free SSL certificate, and redirects to HTTPS on its own. The ceiling is set by what you leave to the default: titles that differ only by SKU, alt text on every product image, and a robots file somebody edited and broke.
The usual reason is a password-protected store. A crawler cannot reach the sitemap behind a password, so the most common launch failure is not a settings mistake. Check that the store is public, that the sitemap URL loads, and that the child files for products and collections return a valid response.
Under 60 characters, even though Shopify accepts 70. A longer title is more likely to be shortened in the results, and it is shortened worst on mobile where the space is narrowest. The field renders through the page_title Liquid object, so a theme that adds the store name will push your careful title over the line.
Not for the basics, because Shopify already covers the sitemap, the canonicals, and the structured data. A plugin earns its place on the two things the platform does badly: a catalogue of hundreds of templated titles, and alt text on every image in the media library. For those two jobs, a bulk editor or a CSV round trip is faster than clicking.
That is a commercial decision rather than a technical one, and the store is not really a closed door. Shopify's own documentation states that a store can be indexed by search engines and language models without signatures. What the Web Bot Auth feature controls is access for first-party tools such as auditors and accessibility scanners.
Variants are the usual source. Each colour and size gets a URL, and if the titles differ only by the variant name Google sees a set of near-identical pages. Give each variant a title that names the actual difference, link the variants to the parent product, and let the canonical point at the product rather than the variant.
It is the channel where AI shopping assistants can find your products. The store still sends product data to the agentic storefronts you have activated, independent of what your robots file says. The search preview tool under Sales channels, then Agentic, then Explore lets you run a real buyer query and see where your products sit in the catalogue.
Export the sitemap and compare it against a crawl. The pages in the crawl and not in the sitemap are the ones Google has decided are not worth indexing, and each one is a page competing for attention with the ones that should rank. Fix the content, redirect it, or let it 404, but do not leave it indexed and empty.