Before we write a single product description for a new client, we run 38 checks. Most of them have nothing to do with keywords. They exist because Shopify generates URLs, canonical tags, sitemaps and schema in ways that quietly leak crawl budget and split ranking signals, and no amount of good copy fixes a collection that Google is indexing four different ways. So this is the Shopify SEO checklist in the order we actually work through it: platform traps first, structure second, content last.
If you're looking for a generic on-page checklist, there are hundreds. Title tag under 60 characters, one H1, alt text on images. Fine, and all of it is in here near the end. But the checks that change traffic on a Shopify store are the ones you can't lift from a template, because they depend on your theme, your app stack, your variant structure and how many products you've hidden from a channel without realising they're still in your sitemap.
Part 1: URL and duplication traps (checks 1–11)
This is where most Shopify stores lose. Not to competitors. To themselves.
1. /collections/all versus your real collections. Every Shopify store has a /collections/all URL, and most themes link to it from somewhere in the footer or a "Shop all" button. It contains every product you sell, which means it competes with every category page you've built. Failure mode: Google picks /collections/all as the ranking page for a category term, the user lands on an unsorted 400-product grid and bounces. Check where it's linked from and whether it's indexed.
2. Product URLs inside collections. Shopify will serve the same product at /products/handle and /collections/handle/products/handle. The canonical usually points to the clean version, but themes and apps break this often enough that we check the rendered HTML rather than trusting it. Failure mode: dozens of duplicate paths per product on a large catalogue.
3. Variant URLs with ?variant=. These are self-referencing in most themes, but check what happens when a variant selector rewrites the URL and an app injects links to specific variants. Failure mode: hundreds of near-identical URLs consuming crawl budget on a store with size and colour options.
4. Paginated collection URLs. ?page=2 onward. They should canonicalise to themselves, not to page 1. If they canonicalise to page 1, products only reachable from page 4 lose their internal link path. Failure mode: deep catalogue products never get crawled. We see this most on stores with 20 products per page and 600 SKUs.
5. Filter and sort parameters. Shopify's native filtering uses ?filter.v.option, and third-party filter apps add their own. Decide which are crawlable and which get blocked. Failure mode: combinatorial explosion — five filters with four values each generate more URLs than you have products.
6. Trailing slash and case consistency. Shopify is forgiving; Google is not always. Pick one form and make internal links match.
7. Old URLs after a redesign or migration. Shopify's URL redirect tool takes a CSV, and there is no excuse for a 404 on a page that ranked. Failure mode: a replatform that drops 30% of organic traffic in week two because nobody exported the old URL list. If you're mid-move, our Shopify migration notes cover the redirect mapping in more detail.
8. Blog and article URL structure. Shopify forces /blogs/{blog-handle}/{article-handle}. You can't flatten it, so at least make the blog handle sensible. "news" is the default and it's a wasted keyword slot.
9. Page versus collection for category content. Some stores build category landing pages as Pages because the theme allows more layout freedom, then link to the real collection separately. Two URLs, one intent. Pick one.
10. Redirect chains. Handle changes over three years stack up: /products/old → /products/older → /products/current. Flatten them.
11. Locale and market URLs. If you sell to India and the UAE from one store, Shopify Markets creates /en-ae style paths. Check hreflang is present and reciprocal. Failure mode: your AED pricing page outranks your INR page for Indian searchers, and everyone sees the wrong currency.
Part 2: Indexing and crawl (checks 12–19)
12. Sitemap behaviour on hidden products. This is the one almost nobody checks. Shopify's auto-generated sitemap includes products that are published to the Online Store channel. Unpublish from Online Store and they leave. But products where you've merely emptied the collection, removed the theme link, or set inventory to zero with "continue selling" off are still in the sitemap and still indexed. Failure mode: Google Search Console fills with soft 404s and "crawled, not indexed" on 200 dead product pages, and your genuinely important pages get crawled less often.
13. robots.txt.liquid. Shopify lets you edit robots via a Liquid template. Most stores never touch it and inherit sensible defaults. If someone has touched it, verify what they blocked. We've inherited stores where a developer blocked /collections/ entirely to "fix duplication".
14. noindex tags in theme.liquid. Search the theme for "noindex". Cart, account and search pages should have it. Product pages should not. A stray conditional can noindex an entire template.
15. Search Console property setup. Both www and non-www, plus every market subfolder. Submit the sitemap.xml root, not the child sitemaps.
16. Coverage report triage. Read the actual URL samples, not the graph. Group by pattern.
17. Crawl stats. If Googlebot spends most of its requests on parameter URLs, you have a structure problem, not a content problem.
18. Password page and staging themes. A duplicate theme on a myshopify.com preview URL is harmless. A live staging store with the password removed is not.
19. Third-party subdomains. Review apps, help centres and landing page builders on subdomains often ship with their own indexing rules. Check them.
Part 3: Shopify technical SEO checklist — theme and speed (checks 20–27)
The technical half of this list is where a Shopify store differs most from WordPress, because you don't control the server and you can't cache your way out of a bloated theme.
20. Schema in the theme, not in an app. Most premium themes output Product schema. Many output it twice, once in the theme and once from a review app, and the two disagree on price or availability. Failure mode: rich results drop out with no error message. Validate the rendered page, not the template.
21. Breadcrumb schema and visible breadcrumbs. Collection → product breadcrumbs help Google understand hierarchy on a flat URL structure. Shopify's hierarchy is flat by design, so breadcrumbs do real work here.
22. Organization and LocalBusiness schema. One instance, on the homepage, with your real GST-registered entity name if you're in India.
23. LCP element identification. Not the score. The element. On a Shopify product page it's almost always the featured image or a hero video. If your LCP is 3.1s because the theme loads a 1.4MB JPEG at full width on mobile, no meta description will save the ranking.
24. App script audit. Count the scripts loading on a product page. We routinely find 14 to 20 on stores that have accumulated apps over three years, including apps uninstalled months ago whose script tags were never removed. Each one is main-thread time. SwiftStore is the tool we built for this — it scans PageSpeed, fixes what it can automatically and tracks the score so a theme update doesn't silently undo the work. Deeper theme surgery is a separate job; that's what Shopify speed optimization covers.
25. Image formats and sizing. Shopify serves WebP automatically when you use the image_url filter with the right parameters. Older themes hardcode dimensions and skip it entirely.
26. Mobile rendering of the collection grid. Test on a real mid-range Android on a 4G connection, not a throttled desktop tab. Indian mobile traffic is the majority of traffic for most D2C brands we work with.
27. Core Web Vitals in Search Console, field data not lab. Lab scores flatter you. Field data is what Google uses.
Part 4: Shopify SEO settings worth changing on day one
There are only a handful of settings in the admin that touch SEO directly, and most stores get two of them wrong.
28. Homepage title and meta description. Under Online Store → Preferences. The default is your store name and nothing else. Write a real title with your primary category term in it.
29. Store name versus title suffix. Shopify appends your store name to page titles in most themes. If your brand name is 22 characters, your product titles have 38 characters of usable space. Decide whether the suffix earns its place.
30. Collection handles set once, deliberately. Changing a handle later means a redirect. Set /collections/silk-sarees, not /collections/collection-1.
31. Google Analytics 4 and Search Console verified through the same property. And check that GA4 isn't double-firing from both the theme and the Google & YouTube channel. It happens constantly and it corrupts every organic number you look at afterwards.
Part 5: Shopify collection page SEO checklist (checks 32–35)
Collections are where category search terms get won, and Shopify's default collection template is close to useless for ranking. It's a title, then a grid.
32. Collection description that isn't 40 words. You need enough copy to establish topical relevance, placed where it doesn't push the grid below the fold. Above-grid intro of two to three sentences, longer body below the products. Most themes need a small template edit for this.
33. Internal linking between related collections. A "Shop by fabric" block linking cotton, linen and silk collections from each other does more for those pages than any external link you'll realistically get.
34. Faceted navigation that doesn't create indexable junk. If a filter combination represents genuine search demand — "cotton kurta sets under 2000" — it deserves its own collection with its own URL and copy. Everything else stays parameter-based and out of the index. On stores with a few thousand SKUs, this is the difference between a navigable catalogue and a maze; FilterPro handles the filtering and search side while you make the indexing decisions.
35. Products in more than one collection, with a canonical home. Fine to do. Just make sure your internal links point consistently to the clean product URL.
Part 6: Content, deliberately last (checks 36–38)
36. Keyword-to-URL mapping before writing. One primary term per URL, written down in a sheet. Two pages targeting "organic cold pressed coconut oil" is a self-inflicted wound.
37. Product page copy that answers purchase questions. For Indian D2C specifically: COD availability, return window, shipping timeline, GST invoice, and FSSAI or BIS details where the category requires them. These aren't SEO copy, but they're what the search intent actually wants, and they reduce the bounce that follows a ranking.
38. Duplicate manufacturer descriptions. If you're a reseller and you've pasted the supplier's copy, you're one of forty stores with identical text. Rewrite the top 50 by revenue first. Ignore the tail until those work.
Only now do we brief content. Everything above it is a multiplier on the writing, and writing is a multiplier on nothing if the page is invisible.
A worked example: what fixing duplication is actually worth
Take a store with 480 products and eight collections. Each product is reachable at its clean URL plus, say, three collection-prefixed paths, plus four indexed variant URLs. That's 480 × 8 = 3,840 URLs where 480 would do. Add paginated collection pages canonicalising wrongly, and filter parameters, and you can pass 6,000 crawlable URLs on a store that sells 480 things.
Googlebot's crawl allocation on a store that size is finite. If 85% of requests go to duplicates, your new product pages wait days to be discovered instead of hours. Cut the duplicates and the same crawl budget covers your real pages six times over. That's not a ranking factor in the direct sense. It's the reason new pages start ranking in a week rather than a month, which on a festive-season launch calendar is the whole difference.
Free Shopify SEO tools versus paid apps
Blunt answer: for a store under roughly 500 SKUs, the free stack does 90% of this checklist. Search Console, PageSpeed Insights, Screaming Frog's free tier for up to 500 URLs, Google's Rich Results Test, and your browser's view-source. That's it. Those five tools cover every check in parts 1 through 3.
Paid SEO apps in the Shopify App Store mostly do three things: bulk-edit meta fields, inject schema, and flag broken links. Bulk meta editing is genuinely useful if you have thousands of products. Schema injection is usually the wrong fix, because it layers a second Product schema on top of your theme's and you end up debugging a conflict you created. Broken link scanning is a Screaming Frog crawl.
What we'd actually pay for: a crawler licence, and speed tooling that keeps working after you stop looking. Not a plugin that promises an SEO score out of 100. Those scores optimise for the plugin's checklist, not for search.
Is there a Shopify SEO checklist PDF?
We don't publish one, and here's why. A PDF gives you 38 line items with no way to tell which three matter for your store. A store with 60 products and a clean theme has almost none of the duplication problems in part 1 and should skip straight to collections and content. A store with 4,000 SKUs, a filter app and a theme customised by three different developers has nothing but part 1 problems.
The order matters more than the list. If you want the list applied to your store with the failure modes actually confirmed rather than assumed, a free audit is the faster route, and it takes us a rendered-HTML crawl rather than a template.
Shopify SEO for a brand-new store: what to do in what order
New stores have an advantage: nothing is broken yet. Sequence for the first 60 days, assuming you're pre-launch or just launched.
- Set collection and product handles properly before you have any links pointing at them. Handles are cheap to change on day one and expensive on day 200.
- Fix the homepage title, verify Search Console, submit the sitemap. An hour of work.
- Check /collections/all isn't linked from your footer, and check what your theme does to paginated canonicals. Two things, ten minutes each, and they're the two most common inherited problems on stores we take over.
- Validate Product schema on one product page before you publish 300 more with the same broken markup.
- Then write. Top 20 products and your five most commercially important collections. Not the blog.
The blog comes after the money pages rank, not before. A new store publishing three articles a week while its collection pages have 40-word descriptions has the priority exactly backwards. We say this to founders regularly and it's rarely popular.
Where this needs a developer and where it doesn't
Checks 28 to 31 and 36 to 38 are admin and copy work. Anyone on your team can do them this week. Checks 2, 4, 20, 21 and 32 are theme edits in Liquid, and getting them wrong breaks a live template. Check 5 needs a judgement call on faceted navigation that depends on your search demand data.
If you don't have someone who reads Liquid, the theme-level items are the ones to hand over. That's the bulk of what a Shopify developer spends their first week on when they inherit an existing store, and the reason we do it before content rather than after is that rewriting 300 product pages on a structure that's still leaking is paid work that returns nothing.
Pick three checks from part 1 and run them on your store today. Open a product page, view source, search for "canonical", and see whether it matches the URL in your address bar. Then click to page 2 of your biggest collection and do the same. If both are wrong, you've found more upside in five minutes than a month of blog posts would have given you.


