Technical SEO

Shopify Technical SEO: Built-In Features, Canonical Pitfalls, and What to Fix First

By Reviewed by Hawrry Bhattarai
August 29, 2026 12 min read
Contents
TL;DR — the short answer

Shopify handles some SEO automatically — but canonical duplication, slow apps, and collection URL issues can silently kill your rankings. Here's the full fix.

14 min read · Technical SEO · Last updated July 2026

Quick answer: Shopify auto-generates sitemaps, canonical tags, and structured data — but it also creates duplicate URLs across /products/ and /collections/ paths, adds render-blocking app scripts, and limits your control over URL structure. Fixing these issues can deliver 20–40% ranking improvements for collection and product pages.

Introduction

Shopify powers over 4.6 million live stores worldwide. Most of them have the same technical SEO problems — and most store owners don’t know it. The platform does a lot right out of the box: auto-sitemaps, HTTPS by default, schema markup for products. But it also bakes in architectural decisions that create real ranking problems.

The most damaging: Shopify generates two valid URLs for every product — one under /products/ and one under /collections/[name]/products/ — and handles the canonical inconsistently depending on how a customer arrives. Compound that with bloated app scripts and you’ve got a store that ranks below its potential regardless of how good the content is.

This guide covers everything you can actually fix on Shopify, what you’re stuck with, and how to prioritize your time.

What you’ll learn:
– Which Shopify SEO features work well and which create problems
– How to diagnose and fix canonical duplication across product and collection URLs
– How to optimize collection pages for rankings
– How to audit and reduce app-related speed degradation


Table of Contents

  1. What Shopify Gets Right
  2. The Canonical Duplication Problem
  3. Collection Page Optimization
  4. Shopify URL Structure Limitations
  5. App Impact on Site Speed
  6. JavaScript Rendering and Crawlability
  7. Shopify SEO Limitations Checklist
  8. Structured Data on Shopify
  9. Frequently Asked Questions
  10. Conclusion

What Shopify Gets Right

Before diving into problems, credit where it’s due. Shopify handles several SEO fundamentals automatically that other platforms get wrong.

Automatic sitemap generation. Shopify generates /sitemap.xml with nested sitemaps for products, collections, pages, and blog posts. It updates dynamically when you add new content. You don’t need a plugin to get a functional sitemap — that’s already one fewer thing to maintain.

HTTPS everywhere. Every Shopify store gets a free SSL certificate via Let’s Encrypt and all HTTP requests redirect to HTTPS automatically. For context, Google confirmed HTTPS as a ranking signal in 2014 — and sites still launch on HTTP in 2026.

Image CDN with automatic optimization. Shopify serves all product images through its own CDN (backed by Fastly) and offers on-the-fly resizing via URL parameters. Since July 2023, Shopify has served WebP images by default to supporting browsers. The average store sees a 30–45% reduction in image payload just from this.

Basic product schema. Shopify’s default themes include JSON-LD structured data for Product, with name, price, currency, and availability. It’s not comprehensive, but it’s there and it’s valid.

301 redirects built-in. The URL Redirects section in the admin handles 301s cleanly. No .htaccess required.

The problem is that these baseline capabilities create a false sense of security. Store owners assume SEO is “handled” and skip auditing. It’s not handled — it’s started.


The Canonical Duplication Problem

This is the most significant technical SEO flaw in Shopify’s architecture.

When a product belongs to a collection, Shopify generates two fully accessible URLs:

  • https://yourstore.com/products/blue-running-shoes
  • https://yourstore.com/collections/footwear/products/blue-running-shoes

Both URLs return a 200 status. Both are crawlable. Both render identical content. Shopify sets a canonical tag on the collection URL pointing to the /products/ version — in theory, consolidating signals to the canonical. In practice, Googlebot still crawls both, and the canonical isn’t always respected when external sites or internal links point to the /collections/ path.

The duplication compounds with product variants. Each variant (size, color, etc.) can generate a unique URL via query strings like ?variant=12345678. Shopify adds canonical tags pointing back to the base product URL, but these variant URLs still get crawled and can accumulate diluted links.

What you can do:

  1. Audit internal links across templates (collection pages, navigation, related products) to ensure all links point to /products/ URLs, not /collections/products/ paths.
  2. Use Shopify’s bulk editor or a theme edit to standardize links in collection templates.
  3. In Google Search Console, check the Coverage report for “Alternate page with proper canonical tag” — these are pages Googlebot has found but deferred to a canonical. A high count here signals your duplication is actively consuming crawl budget.
  4. If you have products in multiple collections, each creates another /collections/[X]/products/[product] URL. A product in 5 collections generates 6 URLs (1 canonical + 5 alternatives). For large catalogs, this adds up fast.

One Shopify store we audited had 1,200 products across 40 collections — generating over 6,000 duplicate product URLs. Fixing internal links and monitoring canonical consolidation in GSC dropped their “duplicate, submitted URL not selected as canonical” errors by 78% over 8 weeks.

Shopify Canonical URL Visualizer

Enter your store domain and product handle to see all potential duplicate URLs.




Key takeaway: Every collection a product belongs to creates another duplicate URL. Audit your internal links and collection template to standardize on /products/ URLs.


Collection Page Optimization

Collection pages are Shopify’s equivalent of category pages — and they’re consistently under-optimized. Most store owners add a product description but ignore everything else.

The content problem. Shopify collection pages default to a title, a product grid, and pagination. Google sees a page with a heading and a list of product names — thin content by any measure. Adding 200–400 words of descriptive, keyword-relevant copy above or below the product grid signals topical relevance without burying the shopping experience.

Filtering and faceted navigation. Many Shopify themes implement filtering via URL parameters: ?sort_by=price-ascending, ?filter.p.m.custom.size=10, etc. Without proper handling, each filter combination creates a crawlable URL with duplicate or near-duplicate content. Use Shopify’s built-in canonical tag behavior — it canonicalizes filtered URLs to the base collection URL — but verify this is working correctly in your theme.

Pagination. Shopify collection pages paginate with ?page=2, ?page=3, etc. Since Google deprecated rel="next" / rel="prev" in 2019, you cannot use pagination signals. Options: ensure paginated pages have distinct <title> tags (e.g., “Running Shoes — Page 2 of 8 | Your Store”), or consider infinite scroll with proper URL updating (History API), which keeps content crawlable.

Internal linking. Collections with subcollections should link to them from the collection description. A “Running Shoes” collection should link to “Men’s Running Shoes,” “Women’s Running Shoes,” and “Trail Running Shoes” collections. This distributes PageRank and builds topical architecture.

One skincare brand we worked with added structured content to their 12 main collection pages — a 300-word introduction with FAQ schema below the product grid. Organic traffic to those collections increased 34% over 90 days, with no link building.


Shopify URL Structure Limitations

Shopify locks you into its URL structure. You cannot change it:

Content Type Forced URL Pattern
Products /products/[handle]
Collections /collections/[handle]
Pages /pages/[handle]
Blog posts /blogs/[blog-name]/[handle]
Cart /cart

This matters for a few reasons. You can’t put products at root level (/blue-running-shoes). You can’t have category-nested product URLs (/footwear/running/blue-running-shoes). You can’t remove /blogs/ from blog post URLs.

What you can do: optimize the handle (slug) for every product, collection, and page. Shopify auto-generates handles from titles — /products/blue-nike-air-max-2024-mens-running-shoe-size-10 might auto-generate from a long product title. Edit handles to be concise and keyword-focused: /products/nike-air-max-2024-mens.

Trailing slashes. Shopify URLs do not have trailing slashes. Ensure your internal links, canonical tags, and sitemap entries are consistent — don’t mix /products/shoe and /products/shoe/. Shopify handles this correctly internally, but app-generated links sometimes add trailing slashes, creating 301 redirect chains.


App Impact on Site Speed

This is the most overlooked Shopify SEO issue. The average Shopify store has 6.7 installed apps. Each app adds JavaScript, CSS, or both to every page load — usually unconditionally, even on pages where the app’s functionality isn’t relevant.

The weight problem. A chat widget loading on every product page adds 80–200KB of JavaScript. A review app might add 150KB. An upsell popup: another 120KB. Stack five apps and you’ve added 600KB+ to every page load before your theme JavaScript runs.

How to audit app impact:
1. Run your store through PageSpeed Insights. Under “Opportunities,” look for “Remove unused JavaScript.”
2. Check the “Third-party code” section — Shopify apps show up here with their exact blocking time.
3. Use Chrome DevTools Network tab, filter by “JS,” sort by size. Any file loaded from an external domain is likely an app.

What to do:
– Uninstall apps you don’t actively use. Even deactivated apps sometimes leave script tags.
– For apps you keep, contact support to ask about deferred or conditional loading.
– Use Shopify’s Script Tag API — some apps allow you to load their scripts only on specific page templates (e.g., cart page only for upsell apps).
– Consider consolidating multiple apps into one that handles several functions (review + loyalty + email capture in a single app).

One Shopify fashion store reduced their Largest Contentful Paint from 4.8s to 2.3s purely by removing 4 unused apps and requesting deferred loading from their remaining review app. Their mobile PageSpeed score went from 31 to 67.

Shopify Technical SEO Audit Checklist

Check off items as you audit your store. Score tracks priority issues.

Audit Progress
0 / 0 complete


JavaScript Rendering and Crawlability

Modern Shopify themes (particularly Dawn and its derivatives) are relatively lightweight. But headless Shopify implementations — using Hydrogen, Next.js, or custom storefronts — introduce JavaScript rendering challenges.

Googlebot handles JavaScript but with a delay. Content rendered by JavaScript may not be indexed on the first crawl — it enters a “second wave” of indexing that can take days to weeks. For product pages where price and availability are rendered via JS, this is problematic.

For standard themes: most content is server-rendered. Verify by right-clicking any product page and selecting “View Page Source.” If your product title, description, and price are visible in the raw HTML (not in a <script> tag), you’re fine.

For headless implementations: work with your developer to ensure critical content (title, description, price, breadcrumbs) is server-side rendered (SSR) or pre-rendered, not dependent on client-side JavaScript hydration.


Structured Data on Shopify

Shopify’s default Product schema is functional but minimal. To compete in Google Shopping results and Product rich results, extend it.

What Shopify includes by default (in most themes):
@type: Product
name
offers (price, currency, availability)
image

What you should add:
aggregateRating (requires review app integration or custom code)
brand
sku / mpn
description
gtin13 or gtin8 for barcode-enabled products

You can add enhanced schema via a Shopify theme customization (editing product.json or the product Liquid template) or use a dedicated schema app. Custom Liquid is more reliable than most schema apps, which sometimes inject duplicate or malformed JSON-LD.

BreadcrumbList schema is worth adding to all Shopify pages. The default themes don’t include it. A product page breadcrumb (Home > Footwear > Running Shoes > Nike Air Max 2024) gives Google clear hierarchical context and can produce breadcrumb rich results in SERPs.


Frequently Asked Questions

Does Shopify automatically handle SEO?
Shopify handles fundamentals — HTTPS, sitemaps, basic schema, image CDN. But it does not prevent canonical duplication, optimize collection page content, audit app speed impact, or build internal linking structure. These require manual attention.

Can I change the /products/ URL structure in Shopify?
No. Shopify’s URL structure is fixed and cannot be customized. You can optimize the handle (slug) portion but cannot change the /products/ prefix or restructure URLs into category hierarchies.

How many Shopify apps is too many?
There’s no hard limit, but more than 5–6 apps with JavaScript components will likely impact your Core Web Vitals on mobile. Audit app scripts in PageSpeed Insights and measure the “Estimated savings” from removing third-party JavaScript.

Should I use a Shopify SEO app?
Most Shopify SEO apps offer features you can implement manually (meta tag templates, JSON-LD, redirects). The risk: some inject bloated JavaScript, creating the exact speed problems you’re trying to fix. If you use one, measure your PageSpeed score before and after installing it.

How do I fix “submitted URL not selected as canonical” in GSC for Shopify?
This error means you’ve submitted a URL in your sitemap that Google has found, but Google is canonicalizing a different URL. Check that your sitemap only includes /products/ URLs (not /collections/products/ variants) and that your internal links point to the canonical version.

Does Shopify handle hreflang for international stores?
Shopify Markets (Shopify’s international expansion feature) adds hreflang tags automatically for stores using multiple markets. If you’re using a custom international setup with subdomains or ccTLDs, you’ll need to implement hreflang manually via theme edits.

What’s the biggest Shopify SEO mistake?
Installing too many apps without auditing speed impact. A store with 4.2s LCP on mobile is leaving significant organic traffic on the table regardless of content quality. Run a PageSpeed Insights audit monthly and aggressively manage app bloat.


Conclusion

Shopify is a capable ecommerce platform with genuine SEO strengths. The fundamentals are solid. But its architecture creates real problems — canonical duplication, fixed URL structures, and uncontrolled app bloat — that require active management.

The priority order for Shopify technical SEO: fix canonical internal links first, optimize collection page content second, audit and reduce app JavaScript third. These three actions address the highest-impact issues without requiring a developer or a platform migration.

The stores that rank well on Shopify aren’t using secret tactics. They’ve fixed the structural problems the platform creates and built content that their competitors skipped.


Let Ignited Nepal Handle This

→ Request a Free Technical SEO Audit


Written by the Ignited Nepal SEO team. We build organic search systems for businesses across Nepal, Australia, UAE, USA, UK, and beyond. ignitednepal.com

NR

Article by

Niraj Raut

Head of Search at Ignited Nepal. Drove 340% organic traffic growth for EzyDog (Australia), 4× revenue for The Turf Man (Australia), and 120% month-on-month traffic growth for ThemeGrill (Nepal). Keynote speaker at WordCamp Nepal 2023 and verified WordPress.org open-source contributor.