Platforms: Shopify

Shopify SEO Audit:Technical Checks and QA

Shopify ships with sensible SEO defaults: an auto-generated sitemap.xml, self-referencing canonical tags, editable title tags, and a default robots.txt. Those defaults describe a fresh store. They do not guarantee that a customized storefront stays technically sound.

A theme update, a new SEO app, a bulk product import, or a migration can quietly change what Googlebot receives. This hub treats Shopify SEO as ongoing validation: crawl, detect, investigate, fix, recrawl, compare, and monitor.

Technical audit focus. Works with any Shopify theme, SEO app, or Shopify Plus setup.

Definition

What a Shopify SEO audit answers

A Shopify SEO audit checks what the storefront delivers, not what the admin settings say. It looks at the rendered HTML, status codes, canonical URLs, internal links, metadata, and structured data across every product, collection, page, and blog article.

Shopify can keep generating its sitemap and canonical tags while a Liquid edit emits a second canonical, an app injects duplicate Product schema, or a deleted product sends crawlers to a 404. Only a crawl shows it.

Three questions

Discovery, consistency, regression control

  • DiscoveryCan search engine crawlers reach the products, collections, pages, and blog posts that matter?
  • ConsistencyDo internal links, canonical URLs, sitemap entries, metadata, and structured data agree on which URL represents each page?
  • Regression controlDid a recent theme, app, catalog, or URL change introduce new problems or resolve old ones?

Start here

Shopify SEO audit checklist: What to check first

Fix the scope before you crawl. Pick representative page types (product, collection, page, blog article, homepage), list priority URLs by revenue or organic traffic, and record a baseline crawl before any change. Without a baseline, you cannot tell a new defect from an old one.

First-pass checks and the evidence of a problem
CheckWhat to inspectEvidence of a problem
Crawl coverageProducts, collections, pages, blog postsImportant pages absent from the crawl
Status codesInternal URLs and priority landing pagesUnexpected 4xx or 5xx responses
IndexabilityMeta robots, X-Robots-Tag, canonical targetsImportant pages noindexed or canonicalized elsewhere
URL consistencyInternal links, sitemap.xml, canonical URLsSeveral URL patterns for the same product
MetadataTitle tags, meta descriptions, H1sMissing or repeated values across a template
Structured dataProduct, Offer, and BreadcrumbList markupInvalid, conflicting, or duplicated entities
Change detectionCurrent crawl against the baselineNew issues appearing after a release

Treat crawler findings as diagnostic evidence, not a verdict. Some flagged URLs are expected Shopify behavior. Others are genuine defects.

Discovery

Crawlability, indexation, and URL discovery

Most checklists treat sitemaps, internal links, and indexation separately. The useful work is reconciling them. Shopify's sitemap.xml is an index that splits into child sitemaps for products, collections, pages, and blogs, so export all of them.

  1. Export every sitemap URL

    Pull URLs from the sitemap index and each child sitemap, not just the top-level file.

  2. Crawl the live storefront

    Start at the homepage and follow internal links only, so the crawl reflects what navigation actually exposes.

  3. Compare the two lists

    Sitemap URLs the crawl never found are orphan candidates. Crawled URLs missing from the sitemap often reveal collection-aware product paths or parameter URLs.

  4. Validate priority URLs

    Confirm a 200 status code, an indexable meta robots value, a self-referencing canonical, and a crawl depth of about three clicks or fewer.

  5. Review robots.txt.liquid

    Check custom rules that might block collections, search, or filtered URLs you actually want indexed.

  6. Reconcile with Google Search Console

    Compare against the Pages report. Look for priority URLs marked Crawled, currently not indexed, or Duplicate, Google chose different canonical than user.

A product in the sitemap with no internal links usually fell out of collection navigation. A product Google canonicalizes elsewhere usually means internal links and canonical tags disagree.

Consistency

Duplicate URLs and canonical consistency

Shopify serves the same product at several addresses. That is expected. The audit question is whether those alternatives are controlled or leaking into internal links, sitemaps, and the index.

Shopify product and collection URL patterns
URL patternWhat it isHealthy signal
/products/classic-tCanonical product URLSelf-referencing canonical, listed in sitemap
/collections/classics/products/classic-tCollection-aware product pathCanonical points to /products/classic-t
/products/classic-t?variant=123456Variant parameter URLCanonical points to the base product
/collections/classics?sort_by=price-ascendingFiltered or sorted collectionCanonical to the base collection, not linked as a destination
/collections/classics?page=2Paginated collectionSelf-referencing canonical on each page
Clean product card link
<a href="{{ product.url }}">
{%- comment -%} /products/classic-t {%- endcomment -%}

Internal links point straight at the canonical product URL.

Collection-aware link
<a href="{{ product.url | within: collection }}">
{%- comment -%} /collections/classics/products/classic-t {%- endcomment -%}

The canonical may be correct, but thousands of internal links now point at non-canonical paths.

Export every internal link target from your crawl and group by URL pattern. Flag products with more than one canonical, canonicals pointing to a different product, and canonical targets that redirect or 404. Full investigation: Shopify duplicate product URLs and canonical issues.

Redirect validation

Redirects and deleted product URLs

Shopify manages redirects through URL Redirects in the admin and can create one automatically when a product handle changes. Deleted products, discontinued collections, and CSV redirect imports are where gaps appear.

Shopify redirects only fire when the source path returns a 404, so a redirect for a URL that still resolves never triggers. Audit redirects as a workflow, not a list of rules.

For fixed prefixes, handle changes, and deleted product scenarios, see Shopify URL redirects and deleted products.

Redirect audit checks

  • Old product URLs returning 404 with no relevant replacement
  • Redirects to irrelevant destinations, such as the homepage (often treated as a soft 404)
  • Multi-hop redirect chains and loops after repeated handle changes
  • Internal links still pointing to redirected or removed URLs
  • CSV imports with wrong source paths, missing leading slashes, or full domains
  • Coverage for collections, pages, and blog articles, not only products

Regression testing

Theme, Liquid, and app-related SEO regressions

After every release, ask one question: what changed in the storefront's SEO output? Themes are built from Liquid templates, sections, and snippets, and apps inject code through app embeds and theme app extensions. Compare before-and-after HTML for each template type.

  1. 01

    Titles, H1s, and canonicals

    Title tags and H1s missing, duplicated, or rewritten. Canonical tags removed from theme.liquid or emitted twice.

  2. 02

    Duplicated structured data

    Product and BreadcrumbList markup output by the theme and an SEO app at the same time.

  3. 03

    Internal link patterns

    Product cards switching from /products/ URLs to collection-aware paths after a theme update.

  4. 04

    JavaScript-only content

    Prices, descriptions, or links that appear only after JavaScript runs, plus unexpected changes to meta robots, hreflang, or pagination markup.

  5. 05

    Leftovers from uninstalled apps

    Scripts, snippets, and injected markup that remain after an app is removed. These may slow LCP without causing an indexing defect, so separate performance regressions from SEO regressions.

Test on an unpublished theme preview before publishing to catch most of these early. Release workflow: Shopify SEO checks after a theme update.

Migration QA

Shopify migration SEO validation

Moving from WooCommerce, Magento (Adobe Commerce), BigCommerce, or a custom platform changes almost every URL, because Shopify enforces fixed prefixes such as /products/, /collections/, /pages/, and /blogs/. Treat the migration as an audit with three checkpoints.

01Before

Before migration

Crawl the old store, export URLs with traffic or backlinks, and map each old URL to its Shopify destination.

Record: status codes, canonical targets, titles, and the old-to-new URL map.

02Launch

At launch

Import the redirect CSV, test redirects for each page type, and check destination status codes, canonicals, sitemap output, and key templates.

Record: redirect test results and any failed mappings.

03After

After launch

Crawl the new store, compare old and new URL inventories, investigate unexpected 404s and redirects, and watch Search Console indexing.

Record: before-and-after crawl comparison and indexing trends.

Matching URL counts do not prove a migration worked. A redirect can resolve with a 200 on the wrong product. Full process: Shopify SEO migration checklist.

Templates

On-page SEO and structured data at scale

On Shopify, most on-page defects come from shared templates, not individual pages. The goal is to tell a one-off content gap from a template defect affecting hundreds of products.

01Metadata

Titles, descriptions, and headings

Find missing or duplicate title tags, meta descriptions, and H1s, including Liquid title variables that make every variant read the same.

  • Duplicate titles
  • Meta descriptions
  • Multiple H1
  • Title templates
02Content

Product page completeness

Flag product pages missing descriptions, specifications, size or material details, and alt text on primary product images.

  • Thin descriptions
  • Specifications
  • Image alt text
03Schema

Product and Offer markup

Check that price, priceCurrency, and availability match the visible page, and that only one Product entity exists per page.

  • Product schema
  • Offer
  • Duplicate entities
  • Rich Results Test
04Identifiers

Breadcrumbs and product identifiers

Validate BreadcrumbList markup and confirm SKU, GTIN, and brand values are present and consistent.

  • BreadcrumbList
  • SKU
  • GTIN
  • Brand

Group findings by template. If 400 products share the same missing meta description, fix the product template once rather than editing 400 products.

Rendering

Performance, rendering, and AI crawler access

This part of the audit confirms that crawlers receive the content you think they receive. Review Core Web Vitals (LCP, INP, CLS) by page type and device, and compare them before and after theme releases and app installs, since app scripts are a frequent cause of regressions.

For deeper coverage, see JavaScript SEO and the technical SEO course.

Rendering checks

  • Titles, descriptions, prices, availability, and links present in raw HTML
  • No JavaScript errors blocking reviews, variant data, or related products
  • robots.txt.liquid rules for Googlebot, Bingbot, GPTBot, ClaudeBot, and PerplexityBot match your policy
  • Structured product data matches what shoppers see

Workflow

Prioritize issues and verify fixes

Priority depends on four factors: how many URLs are affected, how commercially important they are, how severe the defect is, and whether a shared template keeps spreading it.

Issue priority matrix
PriorityExampleNext action
CriticalBest-selling product pages return 404 or are accidentally noindexedInvestigate and correct immediately
HighA theme update adds duplicate canonicals across the product templateFix the template and recrawl affected URLs
HighMigration redirects send valuable old URLs to irrelevant destinationsCorrect the mapping and validate each destination
MediumHundreds of product pages share duplicate titlesFix the title template with a scalable pattern
LowA few low-value images lack descriptive alt textSchedule based on accessibility and search value
  1. Establish a baseline

    Crawl URLs, status codes, metadata, canonicals, structured data, and internal links.

  2. Make the change

    Record the affected templates, URLs, and intended outcome.

  3. Recrawl and compare

    Check which issues disappeared, which persisted, and which appeared for the first time.

  4. Confirm and monitor

    Verify the fix, then keep the new crawl as the next baseline.

For each issue, log the first detection date, affected URLs, responsible team, fix applied, and verification result.

Ongoing QA

Ongoing Shopify SEO monitoring

Run scheduled crawls weekly or monthly depending on catalog size, plus an extra crawl after each of these events. Crawl comparison does not prove ranking gains on its own, so pair it with Search Console and analytics data.

Theme changes

  • Theme updates or switches
  • Liquid template edits

App changes

  • SEO app installs or removals
  • Configuration changes

Catalog changes

  • Product imports and bulk edits
  • Catalog cleanup

URL changes

  • Handle changes and redirect uploads
  • Migrations, domains, Shopify Markets
  • Navigation or collection restructuring

FAQ

Shopify SEO audit questions

How often should I run a Shopify SEO audit?

Run a full audit at least quarterly, with lighter scheduled crawls between them and an extra crawl after every theme, app, catalog, or URL change.

Does Shopify handle canonical tags automatically?

Yes, by default. Collection-aware product URLs canonicalize to /products/ URLs. Custom themes and apps can still remove, duplicate, or override those tags.

Why does my Shopify store have duplicate product URLs?

Shopify serves each product under /products/ and under every collection it belongs to, plus variant parameters. It becomes a problem when internal links point to non-canonical versions.

Can I edit robots.txt on Shopify?

Yes. Create a robots.txt.liquid template in your theme. Edit carefully, because a wrong rule can block collections or products from being crawled.

What should I check after uninstalling a Shopify app?

Check for leftover scripts, snippets, and app embeds, duplicate or orphaned structured data, and any change to titles, canonicals, or page speed.

Crawl the storefront, then compare it

Shopify SEO problems rarely come from a single product. They come from templates, apps, catalog changes, and migrations, so the reliable check is a full crawl before and after each change. SiteAuditLint runs that crawl from your own computer and keeps the history for comparison.

Free version audits up to 100 URLs per crawl. Pro adds audit history and comparison.