Shopify Technical SEO Audit: 15 Issues We Find on Every Store
A practitioner's guide to Shopify technical SEO. These are the 15 most common issues we catch when auditing Shopify stores — and how to fix each one.
Shopify is one of the most SEO-friendly platforms you can build on — hosted CDN, automatic XML sitemaps, canonical tags on paginated collections, clean URL structures. But that doesn't mean your store is SEO-ready by default. Every Shopify store has a set of technical issues that come standard with the platform or appear as soon as you start adding apps, themes, and products at scale.
Here are the 15 issues we most commonly find when running a StoreVitals health scan on Shopify stores.
1. Duplicate Product URLs (/products/ vs /collections/[collection]/products/)
Shopify creates two valid URLs for every product: /products/[handle] and /collections/[collection]/products/[handle]. Both serve the same content. Shopify adds a canonical pointing to the /products/ URL, but many themes override this — and many apps add collection-specific product pages without proper canonicalization. Audit every product page canonical tag in your theme's product.liquid.
2. Paginated Collection Pages Without Canonical or Hreflang
Collection pages with pagination (/collections/shoes?page=2) should either be canonicalized to the first page or have rel=next/prev (deprecated but still used by some crawlers). Shopify's default behavior varies by theme and Shopify version. Check that paginated URLs aren't being indexed as standalone pages.
3. App-Injected JavaScript Blocking Render
Every app you install has a chance to add a render-blocking script to your theme. Chat widgets, loyalty programs, upsell tools, review widgets — each adds JavaScript that delays your page's First Contentful Paint. Run a DOM size and render-blocking check on your homepage and product pages after any new app install.
4. Missing or Thin Meta Descriptions
Shopify doesn't require meta descriptions — many merchants ship hundreds of products with no description at all. Google will auto-generate one from your page content, but auto-generated descriptions have lower click-through rates. Prioritize meta descriptions on your top 50 products by traffic or revenue.
5. Product Images Without Alt Text
Shopify's media uploader doesn't enforce alt text. Every image uploaded without alt text is a missed accessibility and SEO opportunity. Product images especially matter — they appear in Google Image Search, and alt text directly affects image ranking signals. Audit every product's media library.
6. Slow Liquid Theme Templates
Heavy Liquid templates with complex logic, large Metafield queries, or deeply nested section structures can generate slow server-side response times. Use Shopify's built-in Speed Report and Lighthouse to measure TTFB on collection pages. If TTFB exceeds 600ms, your theme is likely the culprit.
7. Redirect Chains from Product and URL Restructures
Every time you change a product handle, collection name, or page URL, Shopify creates a redirect. Over time, many stores accumulate chains: /old-product → /redirect1 → /current-product. Each additional hop adds latency and dilutes any link equity passed through the redirect. Audit and flatten redirect chains regularly.
8. Blog Posts Without Internal Links to Products
Shopify's blog is frequently underused as an internal linking tool. Blog posts that rank for informational queries should link to relevant product and collection pages. Run a content audit to identify top-ranking blog posts that lack internal links to monetizable pages.
9. Missing Structured Data on Product Pages
Google's product rich results — price, availability, rating stars in SERPs — require valid JSON-LD Product schema. Many Shopify themes include basic Product schema, but it frequently has errors: missing required fields, incorrect price format, missing @context. Validate your product schema with Google's Rich Results Test.
10. Broken Links in Navigation and Footer
As you evolve your store — retiring products, restructuring collections, removing pages — navigation links become broken. A 404 in your main navigation is indexed by Googlebot and signals site quality issues. Scan navigation links monthly.
11. Theme Assets Served Without Long-Cache Headers
Shopify serves theme assets (JS, CSS, fonts) through their CDN with long cache headers by default. However, apps often inject resources from their own domains without proper caching. A single uncached third-party script loaded on every page costs ~200-400ms per visit. Audit third-party resource caching in DevTools Network tab.
12. Sitemap Not Including All Products
Shopify's automatic sitemap (/sitemap.xml) includes products, collections, blog posts, and pages — but it has a limit of 5,000 items per sitemap index file. Stores with large catalogs should verify their sitemap includes all products, and that no products are excluded due to availability settings like "continue selling when out of stock" edge cases.
13. Missing HSTS and Security Headers
Shopify serves all stores over HTTPS, but security headers like HSTS, Content-Security-Policy, X-Content-Type-Options, and X-Frame-Options vary by plan and configuration. Run a security headers scan to verify your store passes baseline security checks.
14. Product Descriptions Duplicated Across Variants
Stores that sell variants (colors, sizes) sometimes create separate products for each variant instead of using Shopify's variant system. This creates dozens of near-duplicate product pages. Google typically groups these as duplicates and chooses one to rank — often not the one you want.
15. No 404 Monitoring
Shopify's analytics don't surface 404 pages by default. As your store evolves, broken URLs accumulate — from retired products, renamed collections, changed URLs, and expired sale pages. Set up Google Search Console to surface 404 errors, and run a monthly scan to catch new ones before they cost you traffic.
Running Your Own Audit
A StoreVitals health scan catches most of these issues automatically — broken links, missing alt text, redirect chains, security headers, structured data presence, render-blocking scripts, and more. Run it weekly and fix critical issues as they appear, rather than once a year when traffic drops.