Technical SEO Audit Process for Shopify Websites
A practical, repeatable framework: what to review, which tools to use, how to prioritize findings, and a sample audit report.
| Quick summary A Shopify technical SEO audit covers six areas: crawlability & indexation, site architecture & URLs, on-page/template SEO, page speed & Core Web Vitals, structured data, and platform-specific Shopify constraints (themes, apps, liquid templates, checkout/cart limitations). Findings are prioritized using an Impact × Effort matrix, scored P0–P3, and tied to revenue-driving page templates (collection, product, blog) first. Tools: Google Search Console, Screaming Frog, Shopify’s own Online Store 2.0 settings, PageSpeed Insights/Lighthouse, Ahrefs/Semrush, and Shopify’s robots.txt/sitemap.xml editors. |
1. Pre-Audit Setup
Before crawling anything, confirm access and establish a baseline. Skipping this step is the most common cause of incomplete audits.
- Get admin access to the Shopify backend (Online Store → Themes, Preferences, Navigation) and read access to Google Search Console + Google Analytics (GA4).
- Identify the theme (OS 2.0 vs. legacy/vintage) — this determines which technical limitations apply.
- Note installed apps, especially SEO apps, page builders, and currency/language apps — these frequently inject duplicate code, extra scripts, or rogue redirects.
- Record baseline metrics: indexed page count (GSC Pages report), organic sessions, average position, and Core Web Vitals pass rate.
- Export the current sitemap.xml and a full URL list (Screaming Frog crawl or GSC) to compare against later.
2. What to Review
2.1 Crawlability & Indexation
- robots.txt — Shopify auto-generates this and only allows edits via a robots.txt.liquid template; check it isn’t blocking /collections, /products, or important assets.
- XML sitemap (sitemap.xml) — Shopify generates this automatically and it cannot be manually edited; verify it’s submitted in GSC and free of 404s or redirect chains.
- Index coverage in GSC — review Excluded categories: “Crawled – currently not indexed,” “Duplicate without user-selected canonical,” and “Page with redirect.”
- Orphan pages and pages with no internal links (common with old collections or seasonal product pages).
- Pagination handling on collection pages (?page=2, etc.) and whether it creates thin, duplicate, or non-canonical content.
2.2 Site Architecture & URL Structure
- URL structure: Shopify forces /products/, /collections/, /pages/, /blogs/ prefixes that cannot be removed without app-level workarounds — confirm this is understood and accounted for, not “fixed” with broken redirects.
- Duplicate URL paths from a product appearing in multiple collections (e.g., /collections/sale/products/x and /collections/new/products/x) — Shopify canonicalizes these by default, but theme customizations can break this.
- Navigation depth — can every product be reached within 3 clicks from the homepage?
- Faceted/filtered navigation (collection filters) — check whether filter URLs are indexable, noindexed, or blocked, and whether they’re generating crawl budget waste.
- Internal linking from blog content to collection/product pages.
2.3 On-Page & Template-Level SEO
- Title tags and meta descriptions at the template level (product, collection, blog, page) — Shopify uses Liquid variables, so a single broken template can affect thousands of URLs at once.
- H1 usage — many themes hardcode the H1 to the product/collection title; check for duplicates or missing H1s on custom pages.
- Canonical tags — Shopify sets these automatically; verify theme.liquid hasn’t been edited in a way that overrides or duplicates the canonical tag.
- Image alt text — particularly on product images, which are frequently left blank by default product feeds.
- Duplicate content from default “vendor” or “tag” auto-generated collection pages.
2.4 Page Speed & Core Web Vitals
- LCP, INP (replaced FID), and CLS scores for the homepage, a representative collection page, and a representative product page (mobile and desktop).
- Theme app bloat — count third-party app scripts injected into theme.liquid; each one is a common cause of slow Time to Interactive.
- Image optimization — Shopify auto-serves responsive images via srcset, but oversized source uploads and unoptimized hero banners still hurt LCP.
- Render-blocking JavaScript and CSS from the theme or apps.
- Font loading strategy and use of Shopify’s CDN for static assets.
2.5 Structured Data (Schema Markup)
- Product schema (Product, Offer, AggregateRating) — required for price/availability rich results.
- BreadcrumbList schema on collection and product pages.
- Organization/LocalBusiness schema on the homepage.
- FAQ/Article schema on blog content where applicable.
- Validate with Google’s Rich Results Test — Shopify themes often include partial or outdated schema by default.
2.6 Shopify-Specific Constraints
- URL handle changes — changing a product/collection handle breaks the URL with no automatic 301; this must be done manually under Online Store → Navigation → URL Redirects.
- Checkout and cart pages are not crawlable/indexable by design — confirm no resources are being wasted trying to “optimize” them.
- Variant URLs (?variant=12345678) — check these aren’t creating indexed duplicates.
- Multi-currency/multi-language (Shopify Markets) — verify hreflang implementation and that market-specific subfolders/subdomains are set up correctly.
- Theme switching history — a prior theme change is a common, overlooked cause of sudden ranking drops from lost redirects or altered markup.
3. Tools Used and What Each One Is For
| Tool | Primary use in this audit | Audit area |
| Google Search Console | Index coverage, sitemap errors, query/page performance, manual actions, Core Web Vitals report | Indexation, CWV |
| Screaming Frog SEO Spider | Full site crawl: titles, headings, status codes, canonicals, redirect chains, duplicate content | Architecture, on-page |
| PageSpeed Insights / Lighthouse | Field and lab Core Web Vitals data for key templates, mobile and desktop | Page speed |
| Shopify Admin (Themes, Navigation, Markets) | Theme code review (theme.liquid, robots.txt.liquid), redirect manager, Markets/hreflang setup | Platform constraints |
| Ahrefs or Semrush | Backlink profile, keyword rankings, site audit cross-check, organic traffic trends | Strategy, validation |
| Google Rich Results Test / Schema Markup Validator | Validate Product, Breadcrumb, and Organization schema | Structured data |
| Chrome DevTools (Network/Coverage tabs) | Identify render-blocking scripts and unused CSS/JS injected by apps | Page speed |
| Google Analytics 4 | Landing page behavior, bounce/engagement rate by template, organic conversion baseline | Business impact context |
4. How Findings Are Prioritized
Every finding is scored on two axes — SEO/revenue impact and implementation effort — then assigned a priority tier. This keeps the audit from becoming a long, unranked checklist that nobody actions.
4.1 Impact × Effort Matrix
- High impact: affects indexation, crawl budget, or Core Web Vitals at the template level (i.e., touches hundreds/thousands of pages at once).
- Medium impact: affects a specific page type or a moderate subset of high-traffic pages.
- Low impact: affects individual pages or is a minor best-practice gap with limited ranking influence.
- Effort is scored separately as Low / Medium / High based on whether the fix is a Shopify admin setting, a theme code change, an app reconfiguration, or a structural/migration-level change.
4.2 Priority Tiers
| Tier | Definition | Example |
| P0 — Critical | Blocking indexation or actively losing rankings/traffic now | Collection pages accidentally noindexed after a theme update |
| P1 — High | High impact, fixable within days; template-level on-page or speed issues | Missing canonical handling on filtered collection URLs |
| P2 — Medium | Moderate impact or higher effort; improves rankings/CTR over weeks | Thin/duplicate meta descriptions on 200 product pages |
| P3 — Low | Best-practice cleanup with limited standalone impact | Missing alt text on a handful of legacy blog images |
- Tie-break rule: when two findings have equal impact, prioritize whichever touches the highest-traffic or highest-converting template (product and collection pages before blog or static pages).
- Quick wins (high impact, low effort) are always surfaced at the top of the report regardless of tier, since they’re typically Shopify admin-level settings rather than code changes.
5. Sample Audit Report
Below is a condensed example of how findings are documented in the final deliverable. A real report typically runs 15–40 findings depending on site size.
5.1 Executive Summary (example)
| Site: example-store.myshopify.com (custom domain) — Theme: Dawn (OS 2.0) Indexed pages: 1,240 of 1,850 known URLs (67%) — below expected for site size. Core Web Vitals: Mobile LCP fails on 78% of product pages (field data, GSC). 3 critical (P0) issues found, all template-level and fixable without a developer. Estimated organic traffic recovery potential: 15–25% within 60–90 days after P0/P1 fixes. |
5.2 Findings Table (example excerpt)
| # | Area | Finding | Priority | Owner |
| 1 | Indexation | Collection filter URLs (?color=red) are indexed and competing with parent collection pages for the same keywords | P0 | Dev / Theme |
| 2 | Page speed | Hero banner images on homepage and top 10 collections are unoptimized, adding ~1.8s to LCP | P0 | Marketing |
| 3 | On-page | Product title tag template duplicates brand name twice (Liquid template error) | P0 | Dev / Theme |
| 4 | Structured data | Product schema missing “availability” field, blocking price/stock rich results | P1 | Dev / App |
| 5 | Architecture | 42 discontinued products return 404 instead of 301 redirecting to nearest category | P1 | SEO / Admin |
| 6 | On-page | 180 product images missing descriptive alt text | P2 | Content |
| 7 | Speed | Three installed apps inject render-blocking scripts site-wide (chat widget, reviews, upsell) | P1 | Dev / Apps audit |
5.3 Recommended Next Steps (example)
- Noindex or canonicalize faceted/filtered collection URLs (P0) — 1–2 days.
- Compress and resize hero/banner images; enable Shopify’s automatic image CDN sizing (P0) — 1 day.
- Fix the product title tag Liquid template to remove duplicate brand string (P0) — same day, single template edit.
- Add availability and price fields to Product schema, either via theme edit or a schema app (P1) — 2–3 days.
- Set up bulk 301 redirects for discontinued products via Shopify’s URL Redirects tool (P1) — 1 day.
- Audit installed apps; remove or defer-load non-essential scripts (P1) — 3–5 days, requires dev testing.
- Backfill alt text on product images, prioritizing top 100 best-sellers first (P2) — ongoing, content team.
6. Recurring Shopify Pitfalls to Flag
- Theme updates silently resetting custom canonical or meta tag edits made directly in theme.liquid.
- SEO apps writing conflicting meta tags alongside manually-set ones, creating duplicate <title> or <meta description> tags in the rendered HTML.
- Collection sorting/filter apps generating infinite crawlable URL combinations (faceted navigation crawl traps).
- Out-of-stock products being unpublished entirely instead of kept live with clear messaging, losing accumulated link equity and rankings.
- Blog URLs nested under /blogs/news/ by default with no way to flatten the structure without a migration.
This framework is template-driven by design: because Shopify renders pages from a small set of Liquid templates, most high-value fixes apply once and resolve issues across hundreds or thousands of URLs simultaneously — which is also why template-level findings are weighted highest in prioritization.
