Back to Blog

Shopify SEO: The Issues That Cost Stores Traffic and How to Fix Them

·, SEO·Ecommerce SEO
shopify seoecommerce seoshopifycanonical tagsurl redirects

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/handle should carry a canonical tag that points to its /products/handle URL.
  • 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

IssueHow to checkFix
Wrong canonical on collection-aware URLsView source on a product URL that includes /collections/Restore the canonical to /products/handle
Internal links to duplicate URLsInspect product card links in collection gridsLink to the plain product URL
Not-found errors after handle changes or deletionsPage indexing report in Search ConsoleRedirect to the closest live page
Thin product descriptionsRead the copy on your top-selling productsRewrite with specs, uses, evidence and comparisons
Thin collection pagesCheck the H1, page title, meta description and introWrite collection copy and search listing fields
Crawlable filter and sort URLsRead /robots.txt and review crawled URLsKeep default rules; promote valuable filters to collections
Missing merchant listing fieldsRich Results Test on product URLsAdd 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.

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.