E-commerce SEO: how Google finds your products

An online store has the same SEO basics as any site, plus problems of its own: thousands of near-identical URLs from filters and sorting, products that sell out, and descriptions shared with every other shop that stocks the same item. This guide covers that store-specific side, as Google describes it.

The facts here come from Google Search Central: Help Google understand your ecommerce website structure, Designing a URL structure for ecommerce websites, Managing crawling of faceted navigation URLs, Pagination, incremental page loading, and their impact on Google Search, Merchant listing (Product, Offer) structured data and Creating helpful, reliable, people-first content. Where we give our own advice, we say so. For the general steps (titles, Search Console, links) see our SEO basics for small business websites.

The short answer

Link every product you want found from a category page with plain <a href> links. Give each product, variant and results page one clean URL and use it everywhere. Stop filter and sort combinations from turning into millions of crawlable pages. Keep stock status true on the page and in your markup, and write product text that says more than the manufacturer's sheet.

Category and product pages

Google says it "generally doesn't look at the structure of URLs to work out the structure of a site" and that, as a general rule, "the more links a page has to it within a site, the higher the relative importance of the page".

So the path should run from menus to category pages, from category pages to sub-categories, and from those to every product. Google warns that if category pages don't link to all their products, it "might not find all of your products by crawling alone", because Googlebot "generally doesn't try to submit searches into a search box". When linking every product is not possible, a sitemap or a Merchant Center feed can list the pages crawling would miss. Our robots.txt and XML sitemaps guide covers the sitemap, and Google Merchant Center basics covers the feed.

Two more points from the same page: use real <a href> links rather than JavaScript click events for navigation, and link your best sellers from the home page or other content if you want Google to see them as important. Our view: give each category page a short, useful introduction, not just a grid; see our internal linking guide for anchor text.

Product URLs and variants

Google's URL advice for stores, in short:

  • Use descriptive words in paths: /product/black-t-shirt-with-a-white-collar rather than /product/3243.
  • Use ?key=value parameters (?color=green) rather than bare values (?green), and don't repeat the same parameter.
  • Don't link internally to temporary parameters such as session IDs, tracking codes or "nearby" locations.
  • Don't use fragments (#black) to show different content: "Google does not use fragment identifiers in indexing."

For sizes and colours, Google asks that "each variant can be identified by a separate URL", as a path (/t-shirt/green) or a parameter (/t-shirt?color=green). If you use optional parameters for variants, the URL without the parameter should be the canonical one. Use the same URL in internal links, sitemaps and canonical tags, with a self-referencing canonical on every indexable page. Our canonical tags guide explains the tag, and product structured data covers variant markup.

Filters, sorting and URL parameters

Filters for size, colour, brand and price (Google calls this faceted navigation) are useful to shoppers but, built on URL parameters, "can generate infinite URL spaces". Google names two costs: overcrawling, and slower discovery of new pages because crawl time goes to useless URLs.

If you don't need filtered pages in Google, Google suggests blocking them with robots.txt (it gives disallow: /*?*color= style rules as an example), or putting filters in URL fragments, which it ignores. In its words, "Oftentimes there's no good reason to allow crawling of filtered items"; allow the product pages and an unfiltered listing instead. A canonical tag pointing to the unfiltered page, or nofollow on filter links, are weaker options that Google calls "generally less effective in the long term".

If some filtered pages should rank (say, a colour that people search for), keep the filter order fixed in the URL, use the standard & separator, and return a real 404 when a combination has no results rather than redirecting to a general error page. For sort orders such as ?order=price, Google suggests noindex or a robots.txt rule so it does not index the same list twice. Which to use is in our robots.txt or noindex section.

Pagination and "load more"

Long categories use page numbers, a "load more" button or infinite scroll. Google crawls links in href attributes and its crawlers do not click buttons, so products that only appear after a click or scroll may never be found. Google's advice for paginated pages:

  • Link each page to the next with <a href>, and consider linking every page back to the first.
  • Give each page its own URL (for example ?page=2) and its own canonical. "Don't use the first page of a paginated sequence as the canonical page."
  • Don't use # fragments for page numbers.
  • The same title and description on every page of a sequence is fine.

Google also says it no longer uses rel="next" and rel="prev", though other search engines may. Our view: keep a plain paginated version behind any "load more" button, so every product has a crawlable link.

Out-of-stock and discontinued products

Google's merchant listing markup has an availability property with values including InStock, OutOfStock, BackOrder, PreOrder and Discontinued ("The item has been discontinued."). Keep that value, the page text and your Merchant Center data in step; how the offer fields fit together is in our product structured data guide.

For empty categories, Google is specific: use a noindex robots meta tag on a category with no items, and if your store removes an empty category from browsing, "consider returning a 404 (not found) HTTP status code for the page".

Our view on single products, based on that:

  • Out of stock for now: keep the page live with a 200 status, mark it out of stock, and offer a restock email or close alternatives.
  • Discontinued, with a direct replacement: a permanent redirect to the new model.
  • Discontinued, nothing close: keep the page if it still helps people (manuals, parts), otherwise return a 404 or 410. Avoid sending every old product to the home page.

Status codes, redirects and soft 404s are covered in broken links, 404s and redirects.

Duplicate product descriptions

Many shops paste the manufacturer's description, so the same text appears on many sites. Google's self-check for content asks "Does the content provide original information, reporting, research, or analysis?" and whether content that draws on other sources avoids "simply copying or rewriting those sources".

Our view: keep the specifications (they are facts), and add what only you know: who the product suits, how it compares with others you sell, sizing notes, real photos, starting with your best sellers. Duplicates inside your own store (one product in several categories, print or tracking URLs) are a canonical job, not a writing one; see our canonical tags guide.

A note on Shopify and WooCommerce

Google's URL guide says: "If you're using an ecommerce platform, you can most likely skip this section, as the platform has most likely already considered these issues for you." Our view: that is true of the core platform, but themes, filter apps and plugins add their own URLs. On either platform, check which filter and sort URLs your setup produces and whether they are crawlable, using Search Console's page indexing report. For Shopify-specific setup (titles in the admin, product URLs inside collections, robots.txt.liquid, redirects), see our Shopify SEO guide. We compare the two platforms (fees, ownership, upkeep) in Shopify vs WooCommerce, and cover switching in moving from WooCommerce to Shopify; before opening, run through our e-commerce launch checklist, and track sales with GA4 e-commerce tracking.

When you sell online, our website development service builds on WooCommerce, the e-commerce plugin for WordPress, and we plan categories, filters and product URLs before the first product goes in.

Frequently asked questions

Should filtered category pages be indexed?

Usually not. Google suggests blocking filter URLs you don't need in Search with robots.txt and letting it crawl product pages plus an unfiltered listing. If a filtered page should rank, keep its URL stable and return a 404 for combinations with no results.

Should page 2 of a category canonicalise to page 1?

No. Google says not to use the first page as the canonical; give each paginated page its own URL and its own canonical, and link the pages in sequence with normal links.

What should I do with an out-of-stock product page?

If it is coming back, keep the page live and mark it out of stock on the page and in its structured data. If it is discontinued, redirect to a direct replacement or return a 404 or 410.

Can I use the manufacturer's product description?

You can, but Google's helpful content questions favour original information over copied or rewritten text. Keep the specifications and add your own detail, starting with your most important products.