Shopify renders pages on the server, so the rendering problem that trips up most JavaScript-heavy platforms is already solved for you. Crawlers, including AI crawlers that skip JavaScript execution entirely, receive fully-formed HTML. That’s a genuine advantage. The real work is using the platform’s structure well and knowing where it creates problems you have to actively avoid.
This guide covers the mechanics specific to Shopify: URL paths, duplicate content, structured data, site speed, and the blog as a content engine. Most of it applies whether you’re running a basic theme or a heavily customised storefront. For a broader look at how platform choice affects SEO, see the platform SEO overview.
URL structure and the duplicate-content problem
Shopify creates two valid URLs for every product that lives inside a collection: /products/your-product and /collections/your-collection/products/your-product. Both serve the same page. Both are crawlable. That’s the core Shopify duplicate-content issue, and it comes up in almost every Shopify SEO audit.
Shopify handles this with canonical tags. When a product is accessed via the collection path, the platform automatically inserts a <link rel="canonical"> pointing to the clean /products/your-product URL. In practice, this tells Google which version to index, and it works. The problem surfaces when themes or apps add their own canonical logic and override or remove the default, or when developers hard-code collection-scoped URLs in internal links. Check your theme’s product.liquid (or its equivalent in a newer Online Store 2.0 theme) to confirm canonical tags are intact and pointing to the /products/ path.
Internal links matter here too. If your navigation, collection pages, or recommendation widgets link to /collections/your-collection/products/your-product rather than /products/your-product, you’re spreading link equity across two versions of the same URL. Standardise internal links to the canonical path.
Collection pages and faceted filters
Collection pages are your category equivalents, and they carry real ranking potential for category-level search terms (“mens running shoes,” “organic skincare”). Treat each collection like a landing page: give it a descriptive title, a unique meta description, and a short introductory paragraph above the product grid. Many stores skip this, which means their collection pages compete on nothing but product titles.
Faceted navigation (filters by size, color, price range) generates parameterised URLs. Whether Shopify exposes these as crawlable paths or keeps them client-side depends on your theme implementation. If your filtered URLs are crawlable, they can cause crawl waste and thin-content issues at scale. Check that your robots.txt or canonical handling excludes or consolidates filter combinations that don’t warrant independent indexing.
Editing title tags and meta descriptions
Shopify lets you edit the page title and meta description for every product, collection, and page through the admin interface. The SEO section at the bottom of each product or collection edit screen is where this lives.
One thing to know: by default, many Shopify themes append your store name to the title tag, producing something like “Black Running Shoes | Your Store Name.” This is usually fine, but keep it in mind when counting characters. Your actual title content (the part you control) should fit in around 50 characters to leave room for the store name suffix without the full string getting truncated in search results.
Meta descriptions don’t affect rankings directly, but they affect click-through rate in organic results and they’re what AI engines often pull when summarising what a page is about. Write them as a one or two sentence pitch, not a keyword list.
Product structured data
Structured data is where most Shopify stores leave ranking potential on the table. Google uses Product schema to generate rich results in search (star ratings, price, availability) and AI engines use it to answer “best product for X” queries with cited sources.
What your theme actually outputs varies widely. Many themes include some Product schema, but it’s often incomplete: missing aggregateRating, omitting offers.availability, or skipping brand. If your theme’s schema is thin, you can either edit it in product.liquid or install a schema app. Editing the theme gives you more control; apps are faster to set up but add another dependency.
Here is a valid minimal Product JSON-LD block to work from:
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Merino Wool Running Socks",
"image": [
"https://example.com/images/merino-socks-black.jpg"
],
"description": "Lightweight merino wool running socks with arch support and moisture-wicking fibre.",
"sku": "MWS-001-BLK",
"brand": {
"@type": "Brand",
"name": "Your Brand Name"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/products/merino-wool-running-socks",
"priceCurrency": "AUD",
"price": "24.95",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "142"
}
}
Place this in a <script type="application/ld+json"> block in your product.liquid template, populating values dynamically from Liquid variables. The aggregateRating block should only be included if you actually have reviews, with real counts pulled from your review app’s data. For a deeper look at how schema affects both traditional rankings and AI answers, see the guide to schema markup for AI search.
Image alt text
Every product image should have a descriptive alt text. In Shopify’s admin, you can set alt text on each image in the Files section or directly on the product image. Most themes use the product title as a fallback when alt text is missing, which is better than nothing but less useful than a description that includes the product’s key features.
Good alt text describes what’s in the image: “Black merino wool running socks on a white background” is more useful to both search engines and screen readers than “sock” or “product-image-001.” For product images where variant is relevant (color, size), include it in the alt text.
The Shopify blog as a content engine
Shopify includes a built-in blog, and it’s genuinely useful for SEO if you treat it as a content strategy rather than an afterthought. Topical authority, the idea that Google and AI engines trust sources that cover a topic in depth, is built through a cluster of related articles that answer questions your buyers have before and after purchase.
A running shoe store that publishes guides on pronation, training plans for beginners, and how to care for technical fabrics builds topical authority around running footwear. That authority lifts the collection and product pages too. The articles also generate internal linking opportunities to those pages, and they attract backlinks that pure product pages rarely earn.
The blog integrates with your theme and generates clean, crawlable URLs under /blogs/your-blog-name/post-slug. It’s a solid publishing surface. Fokal’s Shopify publishing adapter connects directly to this blog, so content drafted and approved in Fokal publishes to your store without manual copy-paste.
Site speed and theme bloat
Shopify pages often carry significant JavaScript and CSS weight from themes, third-party apps, and chat widgets. Core Web Vitals, particularly Largest Contentful Paint and Cumulative Layout Shift, affect Google rankings and user experience. A theme that looked fast in a demo can perform poorly under the full weight of a production app stack.
The main levers:
| Issue | What to look for |
|---|---|
| Unused app scripts | Apps that were installed and removed often leave <script> tags in the theme |
| Large product images | Compress images before upload; Shopify serves responsive sizes but starts from your original |
| Render-blocking scripts | Third-party scripts (chat, analytics, loyalty) loading in <head> without defer or async |
| Theme feature bloat | Parallax effects, animations, and video backgrounds that add JS weight |
| Too many apps | Each app that injects into the storefront adds latency |
Run a Lighthouse audit on your product and collection pages from a clean browser (private tab, no extensions) to get an accurate baseline. For a comparison with how speed issues affect other platforms differently, see the WordPress SEO guide.
Apps versus manual work
Shopify’s app ecosystem has SEO apps that offer automatic schema injection, meta tag management, image compression, and redirect handling. They can save time, especially on large catalogs. The tradeoff is that each app adds code to your storefront and introduces a dependency you’ll need to maintain.
Manual edits through the theme code give you precise control and no runtime overhead. For most stores, a hybrid approach works well: handle schema and redirects manually (one-time setup, high value), use an app for bulk image compression (high volume, low complexity).
Avoid installing multiple SEO apps simultaneously. They often write conflicting canonical tags or inject duplicate schema, which creates exactly the problems you’re trying to solve.
AI citations and product queries
AI engines like ChatGPT, Perplexity, and Google AI Overviews are increasingly answering product and brand queries directly. “Best merino running socks” or “what’s a good gift for a trail runner” can surface specific products, often with brand attribution. Being cited depends on the same signals that drive organic rankings, but with a few additions: complete schema (so the AI can extract structured facts), high-quality descriptive content (so it has something to quote), and external mentions (reviews, editorial coverage, forum discussions).
Schema matters more in this context than many store owners realise. An AI engine looking for “a water-resistant jacket under $200” can extract that from a properly structured Offer block in your Product schema. Without it, the page may rank but still not get cited. Tracking whether your products appear in AI-engine answers is a separate discipline from tracking keyword rankings. Fokal tracks AI visibility across ChatGPT, Perplexity, and AI Overviews on a schedule, so you can see whether your products are being cited alongside competitors. More on the broader picture at AI SEO.
What to do next
If you’re auditing SEO for a Shopify store, start with the highest-impact items: confirm canonical tags are correct on product pages, check that Product schema is complete, and look at your Core Web Vitals for the product and collection templates. Then build out the blog with a topic cluster around your most important collection. That combination covers the technical foundation and the content authority layer that compound over time.
Quick checklist
- Verify canonical tags on product pages point to
/products/not/collections/.../products/ - Standardise internal links to canonical product URLs
- Add unique descriptive text to collection pages
- Edit title tags and meta descriptions on all key product and collection pages
- Check that Product schema includes
offers,brand, andaggregateRating(if you have reviews) - Add descriptive alt text to all product images
- Run Lighthouse on product and collection pages; fix render-blocking scripts
- Audit installed apps for leftover scripts from uninstalled apps
- Start or expand the Shopify blog with a topic cluster targeting buyer questions
- Track AI visibility for your key product queries