An ecommerce SEO project for an online store with thousands of products is first a matter of putting things in order, and only then a matter of copy. The store usually has far more URLs than products: every combination of filters, every sort order and every listing page produces a new URL.
The typical outcome: important categories that Google’s bot rarely visits, new products that are slow to appear in the results, and dozens of near-identical versions of the same list.
Ecommerce SEO at scale: more URLs than products
Crawling is what Google’s bot does when it works its way through a site, following links and reading pages. The time it gives to any one site is limited: if that time goes on “red shoes, size 38, sorted by price”, there is less left for the “running shoes” category, which is the one that actually brings in buyers.
We start with an inventory: how many URLs exist, how many are indexed (kept by Google in its database, from where they can appear in the results) and how many receive visits. We compare a crawl of the site run with a crawler tool, the reports in Google Search Console (the free tool in which Google shows how it sees your site) and, where the hosting provides them, the server logs, which show which URLs the bot actually requests.
A category tree built around how people search
Categories answer general searches (“sofa bed”, “water filter”) and, as a rule, have the greatest potential in the store. We build them from keyword research, not from the structure in the stock management software: if people search for “cordless drill”, it deserves a category of its own, not just a filter.
Each important category gets a short, useful piece of text: what you will find there, how to choose, how the subcategories differ. Not a wall of text crammed into the bottom of the page and written for bots. Internal links do the rest: breadcrumbs (the path from the homepage to the product), links between related categories, similar products, buying guides that point to categories.
Filters, sorting and pagination without duplicate pages
The canonical tag is how a page tells Google which URL counts as the main version when the same content can be seen at several URLs. It is a recommendation, not an order, so it is not enough on its own.
We split filters into two groups: those that match a real search (brand, type, sometimes material) and convenience filters (price, sorting, combinations of many attributes).
- Filters with demand of their own: a stable URL, their own title and text, a link from the category, a place in the sitemap.
- Convenience filters: either a canonical to the base category or a block in robots.txt (the file that tells the bot what not to crawl); not both, because a blocked page can no longer be read.
- Sort orders and tracking parameters: a canonical to the URL without parameters.
- Pagination: each page in the series has a canonical pointing to itself, not to the first page, otherwise the products on the later pages are left with no path leading to them.
Out-of-stock products, discontinued products and structured data
Structured data is code added to the page, using the schema.org vocabulary, that tells the search engine there is a product here with a given price, a given availability and given reviews. Google can display it directly in the results, but that is Google’s decision, and the data must be identical to what the shopper sees.
Stock needs written rules that are applied automatically, because with thousands of products nobody can keep track of them by hand.
- Temporarily out of stock: the page stays, with the availability updated and alternatives offered.
- Withdrawn for good, with a replacement: a permanent (301) redirect to the product that takes its place.
- Withdrawn for good, with no replacement: the page responds that it no longer exists (404 or 410); a bulk redirect to the homepage can still be treated by Google as a missing page.
- Seasonal: the same URL from one year to the next, not new pages every season.
From the URL inventory to monitoring indexing
We work in the order that brings the biggest gains: first whatever stops Google reaching the good pages, then the templates (category, product, filtered listing), where one change applies to thousands of pages, and new content last. We write the rules in a document that you approve, test them on a copy of the site and only then publish them.
On WooCommerce, much of this is handled in the theme and with an SEO plugin; on closed platforms we depend on what the provider allows, and we say from the start what cannot be done. We do not promise rankings. We track how many useful pages are indexed, how quickly new products appear and how impressions and clicks on categories change over time.
Frequently asked questions
Does every product need a unique description?
Ideally yes, but with thousands of products you set priorities: products with demand and margin come first. Copy taken from the supplier appears word for word in many stores and does nothing to set you apart.
How long before the changes show?
It depends on the size of the catalogue and on how often Google crawls the site. The technical rules show up in the indexing reports gradually, as the bot comes back to the pages.
Can we just block all the filters and be done with it?
You can, but you lose the filter pages that people really do search for, such as a brand within a category. That is why we sort them by demand first.
This is a typical project description: it shows how we usually approach this kind of work and does not present a project carried out for a particular client. Every real project starts from your company’s situation, and the stages, timescales and price are agreed after the initial discussion.