SolutionsCase StudiesAI ToolsResourcesAboutContact
Get Your Free AI Automation Audit Book a Free 30-Minute Strategy Call

Shopify

Shopify Technical SEO Checklist (2026)

By Taimur Hassan SiddiquiUpdated 2026-09-227 min read

Technical SEO on Shopify is a shorter list than on a self-hosted platform, because Shopify makes many decisions for you. That is a relief and a limitation. You will not misconfigure a server, but you also cannot fix everything from a settings page. The items below are the ones that are both in your control and worth the effort, numbered in roughly the order to check them.

Work through the list on a duplicate of your theme wherever code edits are involved, and keep a log of what you changed. Most technical SEO damage on Shopify comes from theme updates, app installs, and well-meaning edits that no one documented.

Crawlability, robots.txt, and the sitemap

Before anything else, make sure search engines can reach the store at all. A surprising number of live stores still carry a leftover from launch. Shopify generates a default robots.txt that blocks checkout, cart, account, and internal search paths, and it is sensible for almost every store. Since 2021 you can customize it through a robots.txt.liquid template in the theme, but only edit it for a specific reason, such as blocking a parameter your apps generate, and never block CSS, JavaScript, or the CDN.

The sitemap lives at /sitemap.xml and links to child sitemaps for products, collections, pages, and blogs. It updates automatically and only includes items published to the Online Store sales channel. If a product is missing, check its channel availability before assuming a bug.

  • 1. Password protection is off (Online Store > Preferences). A password page blocks all crawling.
  • 2. No sitewide noindex left in theme.liquid from development. Search the theme code for "noindex".
  • 3. The primary domain is set and every other connected domain, including the myshopify.com address, redirects to it.
  • 4. Google Search Console is verified for the custom domain and the sitemap is submitted.
  • 5. Open /robots.txt and confirm it lists the sitemap and blocks only what you expect.
  • 6. Open /sitemap.xml and spot-check that key collections and products are present.
  • 7. Pages you want out of the index use the seo.hidden metafield, which adds noindex and removes the page from the sitemap, rather than a theme-level noindex alone.

Canonicals on every template

Shopify's duplicate URL patterns are well known: the same product reachable at /products/handle and /collections/x/products/handle, with optional ?variant= parameters on top. Your theme's canonical tag is what resolves this, and it should use Shopify's canonical_url object rather than a hard-coded value.

  • 8. View source on a product page reached from a collection and confirm the canonical points to the plain /products/ URL.
  • 9. Confirm the canonical on a paginated collection (?page=2) is self-referencing, not pointing to page one, so deep products remain discoverable.
  • 10. Check that no app has injected a second canonical tag.
  • 11. Confirm the homepage canonical is the bare root domain with no trailing parameters.

Redirects for discontinued products and changed handles

Deleting a product in Shopify does not create a redirect; the URL becomes a 404 immediately. If the page had backlinks or ranked, that equity is gone. Before deleting, decide where the visitor should go: the replacement product, the parent collection, or a related item. Set the redirect in Online Store > Navigation > URL redirects, or import a CSV for bulk changes.

An alternative for products that may return is to keep them published, mark them sold out, and hide them from collections if desired. The page stays live with its ranking history intact.

  • 12. Never delete a product with search traffic or backlinks without a redirect to the closest replacement.
  • 13. When editing a handle, accept Shopify's offer to create the redirect automatically.
  • 14. Export your redirect list quarterly and flatten any chains (A to B to C).
  • 15. Review Search Console's page indexing report for 404s that once received clicks.

Pagination, sorting, and faceted URL bloat

Collection pages paginate with ?page=N, and themes usually add ?sort_by= for ordering. Google no longer uses rel=next/prev, so what matters is that each paginated page is reachable through crawlable links and carries a self-referencing canonical, while sorting parameters canonicalize back to the unsorted collection.

Filtering is where Shopify stores generate the most unnecessary URLs, and two systems are involved. Tag-based filtering creates paths like /collections/shoes/blue, which Shopify treats as indexable pages with their own canonicals. The Search & Discovery app's storefront filters create ?filter.v.option.color=blue parameters, which canonicalize back to the base collection. Tag pages can be useful landing pages when they have real search demand and a description, but a store with 50 collections and 40 tags can produce thousands of thin combinations.

  • 16. Paginated pages are indexable, self-canonical, and linked with real anchor tags, not only a JavaScript "load more" button.
  • 17. Sort parameters canonicalize to the unsorted collection URL; most themes already do this through canonical_url.
  • 18. Pagination size is reasonable (24 to 48 products) so deep products are not buried on page 12.
  • 19. Indexed URLs in Search Console are audited for /collections/*/tag patterns and counted.
  • 20. Tag pages you do not want indexed carry a noindex when current_tags is present, or the theme links to Search & Discovery filters instead of tag paths.
  • 21. The base collection page is never noindexed by mistake when adding tag logic; test on a duplicate theme first.

Theme weight: apps, scripts, and images

The single largest technical SEO gain on most Shopify stores is removing weight the theme has accumulated. Every app that adds a storefront script increases load time, and many leave code behind after uninstall. Images are the other half of the problem: uploading a 4,000-pixel file and relying on CSS to shrink it costs every mobile visitor.

  • 22. Every installed app is listed, and any not used in the last 90 days is removed.
  • 23. After each uninstall, theme files are searched for the app's name and leftover snippets and script tags are deleted.
  • 24. Apps that offer theme app extensions use them, since those load only where enabled.
  • 25. Images are served through the CDN with width parameters and srcset, so mobile gets mobile-sized files and WebP where supported.
  • 26. Web fonts are limited to two families, with the primary one preloaded.
  • 27. Duplicate functionality is removed: two analytics tags, two chat widgets, two review scripts.

Core Web Vitals on the templates that matter

Google reports Core Web Vitals per URL group, and for a Shopify store the groups that matter are the product template and the collection template. Fixing the homepage alone changes little. The thresholds are LCP under 2.5 seconds, INP under 200 milliseconds, and CLS under 0.1, measured on mobile.

  • 28. The product image or hero loads early with fetchpriority set to high, and is never lazy-loaded.
  • 29. Main-thread JavaScript is reduced, especially scripts from apps that run on every page, to bring INP under 200 milliseconds.
  • 30. Space is reserved for images, badges, and review widgets so they do not push content down as they load.
  • 31. The Core Web Vitals report in Search Console is reviewed monthly, filtered to mobile.

hreflang for Shopify Markets

If you sell in more than one country or language, Shopify Markets can serve localized versions of the store on subfolders (/en-ca/), subdomains, or separate domains. When configured through Markets, Shopify adds hreflang tags automatically for each localized version, which tells Google which URL to show in each country. The common failures are in configuration and translation, not in the tags themselves.

  • 32. Each market has a distinct URL structure and hreflang tags render in the page source.
  • 33. The canonical on each localized page points to itself, not to the primary market.
  • 34. Product titles, descriptions, and meta fields are translated through Translate & Adapt or a translation app, not only the interface strings.
  • 35. No IP-based automatic redirects between markets, since they prevent Google from crawling each version; a recommendation banner does the job instead.

JSON-LD validation and the monthly routine

Most themes output Product JSON-LD with name, image, price, currency, availability, and SKU, and many review apps add AggregateRating. Conflicts between the two are common, and a mismatch between schema and the live product can cost you rich results.

Technical SEO is not a one-time task on Shopify because the theme and apps keep changing. Build a short monthly routine and keep it.

  • 36. The Rich Results Test passes on a product, a collection, and a blog post.
  • 37. If two Product blocks appear, one is disabled; usually the app's, unless it is the only source of ratings.
  • 38. Organization schema with logo and sameAs links exists on the homepage if the theme lacks it.
  • 39. BreadcrumbList schema is present where the theme renders breadcrumbs, and the visible breadcrumbs match it.
  • 40. Schema price and availability stay in sync with the actual product.
  • 41. Monthly: Search Console indexing errors, Core Web Vitals, and manual actions are reviewed.
  • 42. Monthly: the store is crawled with a desktop crawler to catch new duplicate URLs and broken links.
  • 43. After any theme update or app install: PageSpeed Insights is re-run on the product template.

Need someone to work through this list on your store?

We audit and fix Shopify technical SEO issues, from canonicals and redirects to theme weight, and start every engagement with a free strategy call.

Book a Free 30-Minute Strategy Call โ†’