Technical SEO is the unglamorous half: can a crawler reach the right URL, is there one hostname, and are you wasting crawl time on filtered junk? Shopify already does more of this than a self-hosted shop. You can still break it with a password page, two domains or a noisy SEO app.
Last reviewed: September 2026. For titles and product copy, use the Shopify SEO checklist. For product-only work, use product page SEO.
Make the store public, set one primary domain, confirm the sitemap, check canonicals on products, and do not duplicate structured data. Then cut crawl waste from faceted URLs and leftover apps. Speed has a separate list.
Technical SEO → on-page SEO → content → internal links → structured data. ALT: Chain from technical SEO to structured data on a Shopify store.
1. Indexation and the password page
A password-protected store will not rank. Remove the password when you intend to be found. In Preferences, confirm you have not asked search engines to stay out if you want the shop public. Shopify’s admin wording changes. Look for the preference that discourages indexing.
Check that important templates are not noindexed by a leftover app or a theme snippet someone pasted years ago. View source on the homepage and a product. Search for noindex.
2. One hostname
Pick www or non-www (or the root you actually want) and set it as the primary domain in Shopify. Both versions should redirect. If store.myshopify.com still ranks after launch, the primary domain or redirects were incomplete. After a platform move, use an SEO-safe migration checklist.
Shopify admin Domains page showing a primary domain. Capture from a current store. ALT: Shopify Domains settings with a primary custom domain marked.
3. Sitemap, robots and Search Console
Shopify generates /sitemap.xml. Submit that sitemap in Google Search Console for the property that matches your primary domain. If you see strange URLs in the sitemap after a migration, fix redirects and leftover products rather than inventing a second sitemap app.
Shopify lets you customise robots.txt through a theme file. Shopify documents this in the help centre. Do not block /collections or /products because a blog said “thin pages”. Block only paths you understand.
4. Canonicals and duplicate paths
The same product can sit in several collections. Shopify’s default product canonical should point at the product URL, not a collection-tagged copy. Confirm on a live product if you use an SEO app or custom Liquid. Two conflicting canonicals are worse than one default.
Sorted and filtered collection URLs can multiply. You cannot delete faceted navigation if you need it to sell. You can avoid creating extra collections that only exist as keyword clones.
5. Structured data
Online Store 2.0 themes usually output Product JSON-LD. Test a product with Google’s rich results or schema testers. If an SEO app injects a second Product graph, turn one of them off. FAQ schema belongs only on visible FAQs. Hidden FAQ blocks are a bad idea. See SEO vs AEO vs GEO for why the visible answer matters.
| Check | Done when |
|---|---|
| Store is public | No password, no accidental noindex on the whole shop |
| Primary domain | One hostname, the other redirects |
| Sitemap in Search Console | Submitted for the same host shoppers use |
| Product canonical | One clear product URL in the HTML |
| Product schema | One Product graph, matching visible price and name |
| robots.txt | Unchanged, or changed with a written reason |
| Mobile speed | Hero and apps are not crushing LCP (see speed checklist) |
6. Speed and hreflang
Slow pages waste the crawl you earned. Use the speed checklist rather than repeating it here. If you sell in more than one language or country, Shopify Markets and hreflang need a careful setup. Do not invent country folders in the theme without reading Shopify’s current Markets documentation.
International SEO is easy to get wrong. If you only sell in India from one domain, you do not need a Markets project this week.
NP SoftTech can check templates, redirects and leftover apps. That sits under Shopify development or migration. Send the live URL.