Shopify SEO: The Issues That Cost Stores Traffic and How to Fix Them
Shopify SEO is mostly about fixing the platform-specific problems that leak traffic: duplicate product URLs created by collection paths, handle changes without redirects, thin product and collection pages, crawlable filter URLs, and incomplete product structured data. Shopify already generates canonical tags, a sitemap and a robots.txt file, so losses usually come from theme edits, apps and content decisions rather than missing basics.
Below are the issues to check, how to spot each one, and what to change.
Key takeaways
- Shopify already generates canonical tags, a sitemap and a robots.txt file (Shopify Help Center), so lost traffic usually comes from theme edits, apps and content decisions, not missing basics.
- A Shopify product opened through a collection path such as
/collections/shirts/products/handleshould carry a canonical tag that points to its/products/handleURL. - Shopify warns that if you edit a product's handle too often, the product might not display in search engine results, per the Shopify Help Center.
- Google's merchant listings require a product name, an image and an offer with a price above zero and a currency, per Google Search Central.
What Shopify already handles
Before you install an SEO app, know what the platform does by default. According to the Shopify Help Center, "auto-generated canonical tags are added to pages to prevent duplicate content from appearing in search results." The same page says "your website's sitemap.xml and robots.txt files are automatically generated." Themes "automatically generate title tags that include your store name" and "automatically include schema markup for products."
The sitemap "contains links to all your products, primary product image, pages, collections, and blog posts," and Shopify updates it as you add content (Shopify Help Center). Submit it in Google Search Console and leave it alone.
The problems start when a theme, an app or a merchant decision works against these defaults.
Duplicate product URLs from collection paths
A Shopify product can be reached at its own URL, /products/handle, and at collection-aware URLs such as /collections/shirts/products/handle. Shopify's developer documentation for the Liquid within filter, which builds those collection-aware links, says: "Because a standard product page and a product page in the context of a collection have the same content on separate URLs, you should consider the SEO implications of using the within filter" (Shopify developer docs).
To check, open a product from a collection page so the address includes /collections/, view the page source, and find the rel="canonical" tag. It should point to the /products/handle URL. If a theme edit or an app has changed it, fix that first.
Then look at the links themselves. Google advises: "When linking within your site, link to the canonical URL rather than a duplicate URL" (Google Search Central). If your collection grid links to collection-aware URLs, every product's internal links point at a duplicate. In themes that do this, the product card usually contains something like:
{{ product.url | within: collection }}
Outputting the plain product URL instead sends those links to the canonical address:
{{ product.url }}
This is a theme code change, so make it on a duplicate theme and preview before publishing.
Changing handles without redirects
The handle is the editable part of a product or collection URL. Shopify's advice when editing a product's handle is "don't edit it too often or the product might not display in search engine results" (Shopify Help Center). When you change a collection's handle, Shopify offers to create a URL redirect from the previous handle, which "ensures that customers who click a link to the old URL are redirected to the new URL" (Shopify Help Center).
For everything else, create redirects in the admin under Content, then Menus, then View URL redirects. Two rules in Shopify's documentation catch people out: "You can redirect only from broken URLs," and "If the URL still loads a valid webpage, then the URL redirect won't work." Standard plans allow up to 100,000 redirects, Plus allows more, and you can import redirects from a CSV file (Shopify Help Center).
Situations where traffic tends to disappear:
- A product is deleted instead of redirected to a close substitute
- A handle is tidied up long after launch, and old links and rankings now point at a not-found page
- A store moves from another platform without mapping old URLs to new ones, which Shopify's SEO FAQ lists among the reasons a store may not show in search results (Shopify Help Center)
After any catalog cleanup, check the Page indexing report in Search Console for URLs that return not found.
Thin product pages
A product page with a title, a price and a few lines of specs gives search engines and shoppers little to go on, especially when the copy is the manufacturer's text that other retailers also use. Shopify's own guidance suggests including "product specifications such as size, material, weight," "suggested uses for the product," "benefits of the product, including evidence," and "engaging details, such as stories about the product" (Shopify Help Center). Its guidance on optimizing a store for AI adds comparison information with similar products, sizing guides, material information and care instructions (Shopify Help Center).
We wrote a separate guide on rewriting product descriptions so AI assistants can use them. To see where your catalog stands, the free Shopify AI visibility audit asks ChatGPT, Gemini and Claude buyer questions written for your store and checks up to 2,500 products for descriptions AI can quote, with 3 free audits.
Thin collection pages
Collections are where category searches land, but a collection that is only a title and a product grid has little to rank with. Shopify uses the collection's title to generate the page's H1, so put the category phrase shoppers search for in that title (Shopify Help Center).
Then add a short introduction that helps shoppers choose between products, link to related collections and buying guides, and write the collection's page title and meta description in its search engine listing rather than leaving them to defaults.
Filtered and sorted collection URLs
Filters and sort options create many URLs that show the same products in a different subset or order. Shopify's default robots.txt already blocks some of them. The rule Disallow: /collections/*+* "keeps filtered collection pages from being crawled, because they duplicate content that's already on the collection page," and Disallow: /collections/*sort_by* keeps sorted pages out "because they return the same products in a different order" (Shopify Help Center). Shopify's storefront filters use URL parameters such as filter.p.product_type and filter.v.option.color (Shopify developer docs).
For faceted navigation you don't need indexed, Google's advice is to "use robots.txt to disallow crawling of faceted navigation URLs," and it describes rel="canonical" and rel="nofollow" as "generally less effective in the long term" (Google Search Central).
Read your store's own /robots.txt to see which patterns are covered before changing anything. Shopify calls editing robots.txt.liquid "an unsupported customization" and warns that "incorrect use of the feature can result in loss of all traffic" (Shopify Help Center).
If a filtered view matches something shoppers search for by name, such as a specific material or color, make it a real collection with its own handle, title and copy. A filter URL is a view; a collection is a page you can optimize.
Variant URLs
Shopify themes can link to a specific variant with a ?variant= query parameter, which Shopify calls a variant deep link (Shopify developer docs). Google's guidance for that setup: "If you use optional query parameters to identify variants, use the URL with the query parameter omitted as the canonical URL" (Google Search Central). Open a variant link, view source, and confirm the canonical tag points to the base product URL.
Incomplete product structured data
Theme markup covers the basics, but Google's merchant listings have specific requirements: a product name, an image, and an offer with a price and currency, where "merchant listing experiences require a price greater than zero" (Google Search Central). Recommended properties such as a GTIN, brand, availability, shipping details and return policy are worth checking, because theme output varies.
Apps can also add a second, conflicting block of Product markup. Run a few product URLs through Google's Rich Results Test and look for duplicate items or missing fields. If you need to build or compare markup by hand, the free schema markup generator outputs Product JSON-LD.
Products that are hard to reach
Shopify's site structure guidance says "each page should have a link in your online store menus" and "pages shouldn't be more than 3 clicks away from the home page, wherever possible" (Shopify Help Center).
Google makes a related point about category pages: "If category pages don't include direct links to all products in a category, Googlebot might not find all of your products by crawling alone." Products reachable only through on-site search are at risk, because "Googlebot generally doesn't try to submit searches into a search box as part of crawling a site" (Google Search Central).
A checklist in priority order
| Issue | How to check | Fix |
|---|---|---|
| Wrong canonical on collection-aware URLs | View source on a product URL that includes /collections/ | Restore the canonical to /products/handle |
| Internal links to duplicate URLs | Inspect product card links in collection grids | Link to the plain product URL |
| Not-found errors after handle changes or deletions | Page indexing report in Search Console | Redirect to the closest live page |
| Thin product descriptions | Read the copy on your top-selling products | Rewrite with specs, uses, evidence and comparisons |
| Thin collection pages | Check the H1, page title, meta description and intro | Write collection copy and search listing fields |
| Crawlable filter and sort URLs | Read /robots.txt and review crawled URLs | Keep default rules; promote valuable filters to collections |
| Missing merchant listing fields | Rich Results Test on product URLs | Add image, price, currency and identifiers |
The first rows affect every product at once, so they come first. The later rows are page-by-page work you can spread over weeks.
Related reading
Shopify Collection Page SEO: How to Make Collections Rank
Shopify collection page SEO: match each collection to a category search, write copy that helps shoppers choose, link products cleanly and keep filter URLs out.
Read more →Your Shopify Product Descriptions Are Invisible to AI: Here's What to Fix
Many Shopify stores have product descriptions that AI can't use. Thin content, no structure, nothing quotable. Here's how to rewrite them so ChatGPT, Gemini and Claude have something to recommend.
Read more →Canonical Tag Best Practices: Setting rel=canonical So Google Uses It
Canonical tag best practices from Google's docs: self-referencing absolute URLs, one method per page, matching sitemaps and links, and mistakes to avoid.
Read more →Ready to optimize your search rankings?
XeoRank connects to Google Search Console, analyzes content gaps with AI, and gives you actionable fixes — from the terminal or dashboard.