The majority of standard SEO audits lead to wrong conclusions for Shopify. Why? Because Shopify is a specific system with its own rules. As Technical Architect at smplx., we have spent more than 5 years conducting Shopify audits — and learned where standard tools fail.
This guide is based on real audit results and shows you what really matters when it comes to technical SEO for Shopify.
1. What Is Technical SEO? And Why Shopify Is Different
Definition: The Foundations
Technical SEO refers to the infrastructural factors that make a website crawlable and indexable:
- Crawlability: Can Google bots actually reach and read your pages?
- Indexability: Are these pages being added to Google's index?
- Core Web Vitals: Are your pages fast enough (LCP, INP, CLS)?
- Structured Data: Do search engines truly understand your content?
Why Standard Audits Don't Work for Shopify
Standard SEO tools (like SEMrush or Ahrefs) treat Shopify like any other website. That's a big problem.
Shopify has:
- Automatically generated URL structures — often with tracking parameters
- App dependencies that inject messy code
- Theme limitations that block performance optimizations
- Standardized meta fields that aren't always ideally filled out
- Canonical tags that incorrectly point to the main domain
An example from our work: At Bekateq, we removed 23 apps that together added 340 KB of unnecessary JavaScript. A standard audit would never have caught these details.
Shopify-Specific Error Sources
Apps are your biggest risk: Many popular apps (reviews, wishlist, upsell popups) load tracking code, custom CSS, and JavaScript. This slows your site by 20-40%.
Liquid templates generate uncontrolled HTML: Shopify developers often can't optimize well when the theme structure is poor.
Pagination and URL parameters: Shopify automatically generates URL parameters for filters and sorting — often without appropriate noindex tags.
Multilingual is complex: Hreflang tags are frequently implemented incorrectly (we had hreflang errors on 100% of our own pages — that's normal and shows the complexity).
2. Crawlability Audit: The First Step
Before your pages can rank, they must actually be crawled.
Step 1: Check Robots.txt and Disallow Rules
Your robots.txt should be located at https://yourshop.com/robots.txt.
Common Mistakes:
User-agent: *
Disallow: /admin/
Disallow: /cart/
Disallow: /collections/*?* # <- Wrong wildcard syntax
It should optimally look like this:
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /cart/
Disallow: /checkout/
Disallow: /orders/
Disallow: /account/
Disallow: /collections/*?*
Disallow: /pages/*?*
Sitemap: https://yourshop.com/sitemap.xml
Robots.txt Checklist:
- Sitemap URL is correctly added
-
/admin/is blocked -
/cart/,/checkout/,/orders/are blocked -
/account/is blocked - URL parameter pages are blocked (e.g.
*?*) - No important pages are accidentally blocked
Step 2: Check Sitemap.xml Structure
Shopify automatically generates sitemaps. That's convenient, but not always perfect.
What you should check:
Sitemap index present?
https://yourshop.com/sitemap.xmlshould be an index sitemap- It links to:
product.xml,collection.xml,page.xml,blog.xml
URLs with session IDs removed?
- Shopify can include URLs with query strings in the sitemap
- These should be removed
Hreflang entries correct?
- In multilingual shops, each language should have a separate sitemap
- Each should be linked in the sitemap index
Practical Test:
# Enter sitemap URL in Search Console
# Or manually open https://yourshop.com/sitemap.xml
# -> Should be XML, not HTML
Step 3: Check Internal Linking Structure
The internal link structure determines how Google navigates through your website.
Common Shopify Mistakes:
- Collections have no or poor links to products
- Blog articles are not linked to products
- Footer links are too generic
- Breadcrumbs are wrong or missing
Internal Links Checklist:
- Every collection has contextual links (to products, related categories)
- Breadcrumbs are visible on all pages
- Important pages are no more than 3 clicks from the homepage
- Anchor text is meaningful (not "here" or "click")
- No broken internal links (404 errors)
Example from our work: At Tramontina (outdoor furniture), we restructured the collection pages:
- Each category links to 3-5 related categories
- Each product links to 2-3 similar products
- Blog articles link to relevant product categories
- Result: Internal linking improved by 45%, average session duration +22%
Step 4: Noindex Tags on Wrong Pages?
Shopify automatically sets noindex on certain pages. That's usually correct, but not always.
Check in the Theme Code section:
{% if page.class contains 'giftcard' %}
<meta name="robots" content="noindex">
{% endif %}
These pages should have noindex:
-
/cart/— Shopping cart -
/checkout/— Checkout process -
/orders/— Order confirmations -
/account/— Login/account pages - Admin pages
- Gift card pages
These pages should NOT have noindex:
- Product pages
- Categories
- Blog articles
- About us page
- Contact page
3. Indexation Audit: Is Your Website Being Indexed?
A crawlable website is not automatically indexed. Here we check the actual status.
Step 1: Google Search Console Coverage Report
This is the most important source of truth.
- Go to Google Search Console -> Coverage
- Check the following metrics:
What the statuses mean:
| Status | Meaning | Action |
|---|---|---|
| Valid | Indexed | Good! |
| Valid with warning | Indexed, but with issue | Review |
| Not indexed | Intentionally noindex | OK for /cart/, /checkout/ |
| Error | Not reachable | Must be fixed |
| Excluded | Blocked by robots.txt | Review |
Red Flags:
- More than 50% "Error" -> robots.txt problem
- Many "Not indexed" without reason -> Check noindex tags
- "Excluded" for product pages -> Check robots.txt
Step 2: Duplicate Content and URL Parameters
Shopify often generates multiple versions of the same page:
/products/tshirt
/products/tshirt?variant=red
/products/tshirt?variant=red&utm_source=facebook
/products/tshirt/?variant=red
This is a big problem.
Solution 1: Canonical Tags
Shopify sets canonical tags automatically, but often incorrectly:
<!-- Wrong: Points to wrong domain -->
<link rel="canonical" href="http://yourshop.com/products/tshirt" />
<!-- Correct: HTTPS and no query string -->
<link rel="canonical" href="https://yourshop.com/products/tshirt" />
Check in Search Console:
- Open "Link Element" report
- Review canonical tags
- Search for faulty canonicals
Solution 2: Parameter Handling in GSC
- Google Search Console -> Settings -> URL Parameters
- Mark these parameters as "not relevant":
utm_*(Tracking)fbclid(Facebook)gclid(Google Ads)- Sorting parameters
Step 3: Hreflang for Multilingual Shops
If your shop exists in multiple languages, hreflang is essential.
Common Mistakes (from our own experience):
Wrong domain structure
<!-- Wrong --> <link rel="alternate" hreflang="de" href="https://en.example.com/de/" /> <!-- Correct (for subdomains) --> <link rel="alternate" hreflang="de" href="https://de.example.com/" /> <!-- or --> <link rel="alternate" hreflang="de" href="https://example.com/de/" />Missing self-reference
<!-- Must be on the page itself --> <link rel="alternate" hreflang="de" href="https://de.example.com/" /> <link rel="alternate" hreflang="en" href="https://en.example.com/" /> <link rel="alternate" hreflang="x-default" href="https://en.example.com/" />Wrong language codes
<!-- Wrong --> <link rel="alternate" hreflang="deutsch" ... /> <!-- Correct: ISO 639-1 code --> <link rel="alternate" hreflang="de" ... />
Check with:
- Screaming Frog (Hreflang tab)
- Google Search Console (International Targeting report)
4. Core Web Vitals & Performance: The New Ranking Factors
Google has officially confirmed Core Web Vitals as a ranking factor. For Shopify, this is one of the biggest challenges.
The Three Metrics
1. LCP (Largest Contentful Paint) — Loading Speed
- What's measured: How long until the largest content element is visible?
- Target: < 2.5 seconds
- Often a problem on Shopify because: Apps load JavaScript, hero images are unoptimized
2. INP (Interaction to Next Paint) — Responsiveness
- What's measured: How quickly does the page respond to user input?
- Target: < 200 milliseconds
- Often a problem on Shopify because: Too much JavaScript, add-to-cart animations
3. CLS (Cumulative Layout Shift) — Visual Stability
- What's measured: Does the page layout shift during loading?
- Target: < 0.1
- Often a problem on Shopify because: Dynamically loaded app elements, images without height attributes
Shopify-Specific Performance Bottlenecks
Problem 1: Apps Are the Biggest Enemy
An average Shopify app:
- 15-50 KB JavaScript
- 2-5 KB CSS
- 1-2 external API calls
With 10 apps = 200+ KB extra JavaScript. That slows your site by 30-40%.
Audit Questions:
- Which apps are truly necessary?
- Can apps be combined?
- Do apps load blocking JavaScript (synchronous)?
- Do apps have analytics/tracking enabled?
Our Bekateq Case Study: We reduced a client from 15 apps to 7 apps:
- Removed: Review app (Google Reviews instead), wishlist (theme feature), popup app (Shopify popup instead)
- Result: LCP from 4.2s to 2.1s, performance score from 28 to 72
Problem 2: Theme and Liquid Code
Shopify themes can be very poorly optimized.
Check:
{%- render 'product-image' -%}
<!-- Often 10+ images loaded as <img> here -->
<!-- Better: <picture> or <img srcset> with sizes -->
{%- render 'big-javascript-component' -%}
<!-- Inline JavaScript can block the main thread -->
<!-- Better: defer or async attributes -->
Performance Checklist for Themes:
- Images use srcset and sizes
- Large JavaScript files have
asyncordefer - CSS is minimized and critical CSS is inline
- Fonts are preloaded (not from CDN)
- No render-blocking resources in the head
Problem 3: Image Optimization
90% of Shopify stores have unoptimized images.
What you should check:
Image Format
<!-- PNG/JPG are large --> <img src="product.jpg" alt="Product" /> <!-- WebP is 25-35% smaller --> <picture> <source srcset="product.webp" type="image/webp" /> <img src="product.jpg" alt="Product" /> </picture>Image Size
<!-- 2000x2000px image for 300x300px display --> <img src="product-2000.jpg" width="300" /> <!-- Correct size with srcset --> <img src="product-300.jpg" srcset="product-300.jpg 300w, product-600.jpg 600w" sizes="(max-width: 768px) 100vw, 300px" />Lazy Loading
<!-- Images below the fold can be lazy loaded --> <img src="product.jpg" loading="lazy" />
Tools for checking:
- Google PageSpeed Insights -> Opportunities -> "Serve images in modern formats"
- WebP Converter:
cwebpor online tools
Problem 4: JavaScript Loading Strategy
Many Shopify stores load JavaScript synchronously, which blocks the main thread.
Check the theme code:
<!-- Synchronous loading (blocks everything) -->
<script src="https://cdn.example.com/big-library.js"></script>
<!-- Async (loads in parallel, executes immediately) -->
<script src="https://cdn.example.com/big-library.js" async></script>
<!-- Defer (loads in parallel, executes after HTML) -->
<script src="https://cdn.example.com/big-library.js" defer></script>
Rule of Thumb:
asyncfor analytics (Google Analytics, Facebook Pixel)deferfor functionality (menus, forms)- Synchronous only for critical JavaScript (under 10 KB)
5. On-Page Signals & Structured Data: The Details
Technical SEO is not just server-side. On-page factors are equally important.
Meta Titles and Meta Descriptions
Meta Title (50-60 characters):
<!-- Too long and not meaningful -->
<title>Shop | Great Products | Best Prices | Welcome</title>
<!-- Short and with keywords -->
<title>Premium Organic Cotton T-Shirts | EcoWear</title>
Meta Description (150-160 characters):
<!-- Auto-generated, not compelling -->
<meta name="description" content="Product page. Buy online. Free shipping." />
<!-- With call-to-action and unique selling proposition -->
<meta name="description" content="Sustainable t-shirts made from 100% organic cotton. Free shipping on orders over 50 EUR. Shop now!" />
Shopify-specific:
- Use the "SEO Title" and "Meta Description" fields in Shopify Admin
- Don't rely on auto-generation
- For collections: Each should have a unique description
Heading Structure
A correct heading structure helps Google understand what the page is about.
<!-- Wrong: No H1, too many H2 -->
<h2>Product Name</h2>
<h2>Specifications</h2>
<h2>Reviews</h2>
<!-- Correct: One H1, then H2 with H3 -->
<h1>Premium Leather Sneakers</h1>
<h2>Specifications</h2>
<h3>Materials</h3>
<h3>Sizes</h3>
<h2>Customer Reviews</h2>
<h3>Recent Reviews</h3>
Check with:
- Lighthouse Accessibility Report
- SEO Chrome extensions (e.g. Headings Map)
Schema.org Structured Data
Structured data helps Google understand content and can lead to rich snippets in the SERPs.
The most important schemas for Shopify:
1. Product Schema
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Premium Leather Sneakers",
"image": "https://example.com/photo.jpg",
"description": "High-quality leather sneakers with...",
"brand": {
"@type": "Brand",
"name": "EcoWear"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/product/sneakers",
"priceCurrency": "EUR",
"price": "89.99",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "127"
}
}
Shopify generates this automatically, but check:
-
priceis correct -
availabilityis current -
aggregateRatingis present (if you have reviews) -
imageis present
2. Organization Schema
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "smplx.",
"url": "https://smplx.media",
"logo": "https://smplx.media/logo.png",
"sameAs": [
"https://www.linkedin.com/company/smplx",
"https://www.instagram.com/smplx_media"
],
"address": {
"@type": "PostalAddress",
"addressRegion": "Muensterland, NRW",
"addressCountry": "DE"
}
}
3. LocalBusiness Schema (for physical shops)
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "My Store",
"address": {
"@type": "PostalAddress",
"streetAddress": "Hauptstrasse 1",
"addressLocality": "Muensterland",
"postalCode": "48143",
"addressCountry": "DE"
},
"telephone": "+49 2541 123456",
"openingHoursSpecification": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Monday",
"opens": "09:00",
"closes": "17:00"
}
}
4. Review/AggregateRating Schema
{
"@context": "https://schema.org/",
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"author": {
"@type": "Person",
"name": "John Smith"
},
"reviewBody": "Great product, fast shipping!",
"datePublished": "2026-02-19"
}
5. FAQPage Schema
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is the delivery time?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Within Germany, 1-3 business days."
}
}
]
}
Tools for checking:
- Google Rich Result Test: https://search.google.com/test/rich-results
- Schema.org Validator
- Chrome DevTools -> Elements -> Search for
<script type="application/ld+json">
6. Practical Audit Workflow & Checklist
Now to the practice: How do you conduct a technical SEO audit yourself?
Phase 1: Preparation (30 Minutes)
What you need:
- Google Search Console access (full access to property)
- Google PageSpeed Insights
- Screaming Frog SEO Spider (free version)
- Browser DevTools (Ctrl+Shift+I or F12)
Gather information:
Shop Name: ________________
Domain: ________________
Founded/Launch: ________________
Primary Languages: ________________
Current Traffic (monthly): ________________
Phase 2: Crawl & Index Audit (2-3 Hours)
2.1 Run Screaming Frog Crawl
- Open Screaming Frog
- Enter your domain
- Click "Start" and wait for completion
- Export a report as CSV
What you should check:
- Column "Status Code": How many 404s are there?
- Column "Meta Description": Are all filled in?
- Column "Title 1": Are all meaningful?
- Column "Robots": Are noindex tags correct?
- Column "Canonical": Do all point to the correct URL?
Red Flags:
- Status Code 404 on main pages (products, collections)
- Duplicated Meta Titles (copy-paste)
- Empty Meta Descriptions
- Wrong canonical tags (other domains, old URLs)
2.2 Google Search Console Analysis
Open GSC -> Coverage
Note the numbers:
Valid: _____ pages With warnings: _____ pages Excluded: _____ pages Errors: _____ pagesClick on "Errors" and review the top errors
Click on "Excluded" and review why these are excluded
Example from a real audit:
Errors: 1,245 pages
Reason: Server error (5xx)
Next steps: Check with hosting, verify Shopify status
Phase 3: Performance Audit (1 Hour)
3.1 PageSpeed Insights
- Go to https://pagespeed.web.dev/
- Enter your product page
- Check both "Mobile" and "Desktop"
Expected Values:
Performance Score: > 50 (Target: > 75)
LCP: < 3.0s (Target: < 2.5s)
INP: < 300ms (Target: < 200ms)
CLS: < 0.25 (Target: < 0.1)
Common Recommendations:
- "Serve images in next-gen formats" -> Convert to WebP
- "Render-blocking resources" -> Load JavaScript with async/defer
- "Unused CSS/JS" -> Check installed apps
- "Large layout shifts" -> Check dynamically loaded elements
3.2 Lighthouse Audit
- Open your page in the browser
- Press F12 -> Lighthouse
- Click "Analyze page load"
Check the categories:
- Performance
- Accessibility
- Best Practices
- SEO
Common Problems:
LCP Candidate < 2.5s
-> Image optimization, app reduction
Has a viewport meta tag
-> Mobile view not configured (rare for Shopify)
Document does not have a valid hreflang
-> Check multilingual setup
Phase 4: On-Page Audit (1 Hour)
4.1 Check Meta Tags
Use Chrome DevTools -> Elements and search for:
<title>...</title>
<meta name="description" content="..." />
<meta name="robots" content="..." />
<link rel="canonical" href="..." />
<link rel="alternate" hreflang="..." />
Checklist:
- Title: 50-60 characters, with primary keyword
- Description: 150-160 characters, with call-to-action
- Canonical: Points to HTTPS and without parameters
- Hreflang: All language versions present
4.2 Check Structured Data
<!-- In DevTools search: "application/ld+json" -->
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
...
}
</script>
Check with Rich Result Test:
- Copy the URL
- Go to https://search.google.com/test/rich-results
- Check for errors
4.3 Check Heading Structure
Use the browser extension "Headings Map":
H1: Premium Organic Cotton T-Shirts
H2: Materials
H3: 100% Organic Cotton
H2: Sizes
H2: Customer Reviews
H3: Write a Review
Check:
- Exactly one H1 on the page
- H2s are subtopics of H1
- H3s are subtopics of H2
- No heading levels skipped (H1 -> H3)
Phase 5: Report & Priority Matrix
After you've gathered everything, create a priority matrix:
| Priority | Problem | Impact | Effort | Action |
|---|---|---|---|---|
| Critical | Server errors (5xx) | High | Medium | Check with host |
| Critical | Robots.txt blocks main pages | High | Low | Adjust robots.txt |
| High | Core Web Vitals > 3.0s | Medium | Medium | Reduce apps |
| High | Missing meta descriptions | Medium | Low | Fill in via Shopify Admin |
| Medium | Missing hreflang | Low | Medium | Adjust theme code |
Phase 6: Documented Case Studies
Tramontina (Outdoor Furniture Manufacturer):
- Problem: No internal linking strategy
- Solution: Collection pages relinked, 45% more internal links
- Result: +22% session duration, +35% pages per session
Bekateq (B2B Supplier):
- Problem: 15 apps installed, only 3 active
- Solution: 8 apps removed, code reduced
- Result: LCP 4.2s -> 2.1s, Performance Score 28 -> 72
smplx. itself (this website):
- Problem: Hreflang tags wrong on 100% of pages
- Why does this happen? Complexity of Shopify's multilingual structure
- Solution: Manual hreflang implementation in the theme
- Learning: This is normal — Technical SEO is an iterative process
Audit Checklist for Download
Crawlability Checklist
- Robots.txt exists and is correct
- Sitemap.xml is valid and linked
- No main pages are blocked in robots.txt
- Internal linking is logically structured
- Breadcrumbs are present
- Noindex tags only on correct pages
Indexation Checklist
- GSC: < 5% error rate
- Duplicate content is minimal
- Canonical tags are correct
- Hreflang setup is correct (if multilingual)
- URL parameters are configured in GSC
Performance Checklist
- LCP: < 2.5s (Mobile)
- INP: < 200ms
- CLS: < 0.1
- Apps are necessary and optimized
- Images are in WebP format
- JavaScript has async/defer
- Fonts are preloaded
On-Page Checklist
- Meta Title: 50-60 characters, with keyword
- Meta Description: 150-160 characters, unique
- H1: Exactly one, meaningful
- H2-H3: Logically structured
- Product Schema: Present and correct
- Organization Schema: On homepage
- Review Schema: If reviews are present
- FAQ Schema: If FAQs are present
Frequently Asked Questions
Q: How often should I perform a Technical SEO audit? A: After every major update (theme change, app installation) and at least every 6 months as a routine check.
Q: Should I hire an SEO agency or do it myself? A: That depends on your technical level. For the basic check, you can start yourself. For deeper analyses (crawl structure, performance optimization), we recommend specialists.
Q: What is the #1 cause of poor Shopify SEO? A: Too many apps. An average app collection slows a store by 40-60%. That's worse than any other problem.
Q: Can I compare Shopify with other platforms? A: No. Shopify has its own rules and limitations. Comparisons to WordPress or self-hosted sites are irrelevant.
Q: How long until SEO improvements become visible? A: 4-12 weeks for ranking improvements. Performance improvements are immediately measurable in Google Analytics.
Next Steps
- Start with the checklist: Begin with the Crawlability Audit
- Use free tools: GSC, PageSpeed Insights, Lighthouse
- Prioritize by impact: Not everything is equally important
- Track improvements: Google Search Console Coverage Report is your friend
If you get stuck on certain steps or need a more comprehensive analysis, check out our SEO services or contact us for a free audit assessment.
About the Author
Claudio Gerlich is Technical Architect at smplx. and specializes in Technical SEO for Shopify. With more than 5 years of experience in Shopify audits, performance optimization, and implementing complex SEO strategies, he has helped dozens of Shopify stores improve their visibility and performance.
Notable projects:
- Tramontina: Complete Technical SEO Audit + Internal Linking Restructuring
- Bekateq: App reduction and Performance Optimization (LCP 4.2s -> 2.1s)
- smplx. itself: Continuous SEO improvements and learning from mistakes
smplx. is a specialized Shopify technical agency based in Muensterland, NRW, Germany. We focus on Technical SEO, Performance Optimization, and Shopify architecture.
Contact: smplx.media