/ โ† Ecommerce Audit Fixes / Shopify Ecommerce SEO
In this guide
  1. What Shopify decides for you
  2. Collection-path product links
  3. Search listing fields and handles
  4. Room for real content: metafields and sections
  5. Apps that help, and apps that leave a mess
  6. Tag pages, vendor pages and other thin views
  7. The fix, step by step
  8. Markets, speed and other Shopify specifics
  9. Questions and answers

What Shopify decides for you

Some parts of a Shopify store cannot be changed, and it saves time to accept them early rather than fight them.

Fixed by ShopifyWhat it means for SEO
URL prefixes: /products/, /collections/, /pages/, /blogs/You choose the handle after the prefix, not the prefix. Rankings are not held back by it; do not try to hide it with proxies or edge rewrites.
Canonical tags on products and collectionsThemes normally output canonical_url, which points collection-path and variant URLs at the main product URL.
XML sitemap at /sitemap.xmlGenerated automatically, split into product, collection, page and blog sitemaps. Submit it once in Search Console.
robots.txtA sensible default that blocks cart, checkout, internal search and many sort and filter combinations. It can be edited with a robots.txt.liquid template.
CheckoutRuns on Shopify's checkout and is not meant to be indexed.

What you do control is the theme, the apps, the content and the settings. That is where the Ecommerce Audit findings on Shopify stores usually trace back to.

๐Ÿ’ก A password-protected store is not indexed. If you launched recently, check that the password page has been switched off under Online Store preferences, and that you are not auditing a development or staging store by mistake.

Collection-path product links

Every Shopify product has one main URL, /products/harbour-sofa, but it is also reachable through each collection it belongs to, such as /collections/garden-sofas/products/harbour-sofa. The canonical tag on the collection-path version points to the main URL, so this is not a disaster. The trouble is that many themes link to products from collection grids using the collection path, via the Liquid within filter:

{%- comment -%} Links through the collection path {%- endcomment -%}
<a href="{{ product.url | within: collection }}">{{ product.title }}</a>

{%- comment -%} Links to the main product URL {%- endcomment -%}
<a href="{{ product.url }}">{{ product.title }}</a>

With the first version, your own internal links point search engines at thousands of non-canonical URLs, while the canonical tag says to use a different one. Crawlers spend time on the duplicates and have to reconcile mixed signals. Removing | within: collection from product card snippets, usually in files named something like card-product.liquid or product-grid-item.liquid, makes every internal link agree with the canonical.

The trade-off is that the breadcrumb on the product page may no longer know which collection the shopper came from. Most shops handle this by showing the product's main collection in the breadcrumb, set with a metafield, which is clearer anyway. The duplicate product URLs guide explains the general principle.

Search listing fields and handles

Each product, collection, page and blog post in the Shopify admin has a "Search engine listing" section at the bottom of its edit screen. It holds three things:

For a large catalogue, editing these one by one is slow. Shopify's product CSV export and import includes SEO title and SEO description columns, so you can write them in a spreadsheet and import them back. Collections do not have the same CSV route in the standard admin, but there are far fewer of them.

Changing handles

When you change a handle, Shopify offers a "Create a URL redirect" checkbox. Leave it ticked; it adds a permanent redirect from the old address. Only change handles where there is a clear gain, such as replacing hbr-3s-gry-2 with harbour-sofa, because every change creates a redirect and internal links should be updated to the new URL too. Existing redirects can be reviewed and exported from the URL redirects screen in the admin.

Room for real content: metafields and sections

Shopify's default product and collection templates give you one rich text description each. That pushes shops into cramming specifications, sizing, care and delivery notes into a single block, and leaves collections with nowhere to put buying help below the product grid.

Metafields solve this. You define them once in Settings under custom data, for example:

OwnerMetafieldTypeUsed for
Productcustom.dimensionsSingle line textSpecification table row
Productcustom.materialSingle line textSpecification table row and filters
Productcustom.careRich textCare section below the description
Productcustom.main_collectionCollection referenceBreadcrumb
Collectioncustom.buying_guideRich textBuying help below the grid

In an Online Store 2.0 theme you can then connect these to blocks in the theme editor without code, using the dynamic source button, or output them in Liquid:

{%- if product.metafields.custom.dimensions != blank -%}
  <tr><th scope="row">Dimensions</th>
  <td>{{ product.metafields.custom.dimensions }}</td></tr>
{%- endif -%}

Because the values live in structured fields, the same data can feed filters in the Search & Discovery app, specification tables and, if your theme or app builds it from them, Product markup. The product page guide and the category page guide explain what to put in them.

Apps that help, and apps that leave a mess

Apps are where Shopify stores gain features and lose control. For SEO, the common problems are:

Newer apps usually use app embeds and app blocks, which you can switch off in the theme editor without touching code. That is a good reason to prefer them when choosing between apps.

โš ๏ธ Before deleting any snippet from a theme, duplicate the theme and work on the copy. Search all theme files for the snippet name first, because a single render tag left behind will show an error on the live store.

Tag pages, vendor pages and other thin views

Shopify generates a number of listing views automatically. Most are useful to shoppers but thin as search landing pages:

A common approach is to add a noindex robots meta tag to tag views in theme.liquid, while leaving them usable:

{%- if current_tags -%}
  <meta name="robots" content="noindex, follow">
{%- endif -%}

Where a tag view matches something people genuinely search for, such as grey garden sofas, a dedicated collection with its own description is a better landing page than the tag URL. The faceted navigation guide covers choosing those. For robots.txt changes and crawl patterns on Shopify, see Shopify crawl fixes.

The fix, step by step

Step 1

Back up the theme and list installed apps

In the theme library, duplicate your live theme and do all code work on the copy, previewing it before publishing. Then list every installed app with what it adds to the storefront, such as reviews, filters, size charts or SEO markup, and note which ones use app embeds you can switch off in the theme editor. Add the Ecommerce Audit findings for your top products and collections so you know which problems each change is meant to fix.

Step 2

Link products by their main URL

In the theme code editor, search all files for within: collection. In product card and grid snippets, change {{ product.url | within: collection }} to {{ product.url }} so collection grids link to /products/handle directly. Preview a collection, hover over a few products and confirm the links no longer include the collection path. Set the breadcrumb to use a main collection metafield if it relied on the collection context.

Step 3

Fill in the search engine listing fields

Export products to CSV, then write a proper SEO title and SEO description for your priority products in a spreadsheet, using the product name, the key attribute and the brand. Import the file back and spot-check several products in the admin. For collections, edit the search engine listing section on each one directly. Leave handles alone unless they are unreadable codes, and keep the redirect checkbox ticked when you do change one.

Step 4

Add metafields for specs and lower collection text

Under Settings and custom data, define product metafields for the specifications you sell by, such as dimensions and material, plus a care field and a main collection reference. Add a rich text collection metafield for buying help. Connect them to blocks in the product and collection templates using dynamic sources, fill them for your priority products and collections, and check the values appear in View Source rather than only after scripts run.

Step 5

Clean up app code and duplicate markup

View Source on a product page and search for application/ld+json. If there is more than one Product block, decide which one to keep and switch off the others in the app or theme settings. Search theme files for snippets belonging to apps you have uninstalled, remove their render tags and snippet files on the duplicate theme, and check the storefront still works. Replace script-only review or size guide widgets with app blocks where available.

Step 6

Handle tag pages, handles and redirects

Add a noindex, follow robots meta tag for collection tag views in theme.liquid, and create proper collections for any tag combinations people actually search for. Review the URL redirects list for chains, where an old URL redirects to another URL that is itself redirected, and point each old address straight to its final destination. Update menus and internal links that still point at old handles.

Step 7

Re-test the templates and re-audit

Publish the updated theme, then check one product, one collection and one tag view with URL Inspection in Search Console, confirming the canonical, title, robots meta tag and content are what you expect. Rerun the Ecommerce Audit across your priority pages and compare with the first run. After any theme update or new app installation, repeat the View Source checks, because both often bring back the same issues.

Markets, speed and other Shopify specifics

Questions and answers

1. Can I remove /products/ and /collections/ from Shopify URLs?

No. Shopify fixes these prefixes and you can only change the handle that follows them. Some shops try to hide them with proxies or edge rewrites, but that tends to break things and adds risk for no clear gain. Search engines are perfectly happy with the prefixes, and many very successful stores rank well with them. Put your effort into good handles, titles and content instead, and make sure internal links use the main product URL consistently.

2. Does Shopify create duplicate content?

It creates several URLs for the same content, such as products reachable through collection paths and variant parameters, but it also adds canonical tags pointing to the main version, so this is handled reasonably well by default. The part you control is your internal linking. If your theme links to products through collection paths, change it to link to the main product URL. Tag views, vendor listings and blog tag archives are the other common source of thin near-duplicates.

3. Do I need an SEO app for Shopify?

Not necessarily. Shopify already handles canonicals, sitemaps and robots.txt, and you can edit titles and meta descriptions in the admin or through CSV. An SEO app can save time on large catalogues, for example by bulk-editing fields or checking for missing alt text. The risk is that some apps add their own structured data or scripts that duplicate what the theme already does. If you install one, check what it adds to the page source and switch off overlapping features.

4. How do I edit robots.txt on Shopify?

Shopify generates robots.txt automatically, and you can customise it by adding a robots.txt.liquid template to your theme. The template lets you keep Shopify's default rules and add your own, for example to block a particular filter pattern. Be careful, because a mistake can block important pages from crawling. For most stores the default file is sensible and needs no change. The Shopify crawl and robots guides go through safe edits in more detail.

5. Why do my Shopify product pages show two sets of review stars in testing tools?

Usually because both the theme and a review app output Product structured data, each with its own rating, or because the review app adds a separate block alongside the theme's. Testing tools then show two products or conflicting values. View Source on a product page and search for application/ld+json to see every block. Keep one complete Product block that includes the rating and switch off the duplicate in the app or theme settings.

6. Will changing a product handle lose its rankings?

Changing a handle changes the URL, so there is always some short-term risk, but Shopify's redirect checkbox adds a permanent redirect from the old address, which passes visitors and most signals to the new one. Only change handles where the old one is genuinely poor, such as a supplier code, and update internal links, menus and any ads to the new URL. Avoid changing the same handle repeatedly, which builds redirect chains and confuses reporting.

7. Should Shopify collection tag pages be indexed?

Usually not. Tag views such as a collection filtered by a colour tag tend to have the collection's title and description with a subset of products, which makes them thin duplicates. A noindex robots meta tag on tag views, added in theme.liquid, keeps them usable for shoppers without offering them as search landing pages. Where a tag combination matches a real search, create a proper collection for it with its own title, description and handle instead.

Audit your Shopify store pages

The Ecommerce Audit checks product page completeness, category page depth, Product and review schema, faceted navigation, product images, internal links and product page speed across your top pages.

Open Ecommerce Audit Fixes โ†’
๐Ÿ’ฌ Got a problem?
Related Guides: All Ecommerce Audit Fixes  ·  Shopify Crawl Fixes  ·  Shopify JSON-LD Fixes  ·  Fixing Weak Product Page SEO  ·  Learning Hub

About aiwebpageseo

aiwebpageseo.com is a data-driven SEO and AEO (Answer Engine Optimisation) platform providing a free suite of technical SEO tools. Rather than relying on AI-theorised assumptions, the platform analyses live URL performance, delivering objective diagnostics, page speed metrics, CLS debugging, and site crawl data alongside actionable technical tutorials.