Short answer: store SEO breaks in different places than blog SEO. A blog has a hundred pages and one structure. A store has thousands of URLs that it generates by itself: filters, sorting, pagination, product variants, products living in several categories. That automatically growing mass — not "not enough text" — is usually the problem.
Seven mistakes that repeat almost everywhere
1. Filters and sorting in the index. ?color=blue&size=44&orderby=price produces thousands of addresses with near-identical content. Google burns crawl budget on them and you get your signals diluted across a hundred copies of one category. Managed with canonicals and noindex, follow — see Google's canonical URL guidance and the crawl budget docs.
2. One product, several URLs. A product sits in three categories, and if your URL structure includes the category you now have three pages for one product. The fix is simple: one canonical address per product, ideally outside the category hierarchy.
3. Out-of-stock products returning 404. The most expensive mistake here, because you are throwing away a page that already ranked and accumulated links. What to do instead is its own section below.
4. Category pagination done by guesswork. Page two, three and ten either drop out of the index entirely or compete with page one. Products on page ten become invisible to search. Detail in pagination and facets.
5. Categories with no meaning of their own. The category page is just a product grid — no description, no answers, no internal links. Yet categories are what capture the most valuable commercial queries, not individual product pages.
6. Product markup missing or lying. Without Product structured data you lose rich snippets with price and availability; with incorrect data you risk penalties. The separate merchant listing type adds shipping and return policy to the result.
7. A redesign or migration without a redirect map. The classic scenario: new site, new URL structure, and a month later traffic is down 60%. It is the only mistake on this list that can kill a store in a week. Detail in SEO for migrations.
What to do with out-of-stock products
This gets its own section because the right answer depends on the situation, while stores usually apply one blanket rule — and almost always the wrong one.
Temporarily out of stock. Leave the page alone: keep it live, say "out of stock" honestly, add an expected date, a "notify me" button and a block of alternatives. The page keeps ranking and you keep capturing demand.
Discontinued, with a successor. 301 to the replacement — but only if it genuinely is a similar product. Redirecting to "the closest thing" from another category annoys people and gets ignored by search engines.
Discontinued, no replacement. 301 to the parent category. If the category is gone too, an honest 410.
Seasonal products. Never delete. The page accumulates signals over years; removing it in November to recreate it in May means starting from zero every season.
The general rule: a URL that ranks is an asset. Deleting it makes as much sense as throwing away advertising you already paid for.
Categories are your main landing pages
Commercial queries are nearly always category-level: "buy wireless headphones", not a specific model name. So a category has to be a page, not a shelf:
- A short intro at the top — what's here and how to choose, two or three sentences, no filler
- Longer text at the bottom — selection criteria, common questions, how the subcategories differ
- Internal links — to subcategories, to popular products, to related guides
- Sensible headings — the category
H1should match how people search, not the label in your database
Side effect: that text is also what gives AI search something to answer with. More on that in AEO/GEO.
Developer note
- Check Search Console coverage by type. The Pages report grouped by exclusion reason usually shows immediately how many junk filter URLs you have.
- Self-referencing
rel=canonicalon every product, regardless of which category the visitor arrived through. - Sitemaps contain only indexable URLs. A sitemap listing
noindexpages is a contradictory signal. - The
availabilityattribute has to stay current. Cached markup sayingInStockfor a sold-out product is a source of complaints and of Merchant Center problems. - Watch category page speed. A category with 60 products and 60 images is a textbook LCP failure. See store speed.
- Snapshot the URL map before any migration. A full list of current addresses with traffic from Search Console, plus an "old → new" mapping. This happens before launch, not after the drop.
- Watch for content decay. Categories and guides go stale; the review routine is covered in content decay.
Practical check
- Checked in Search Console how many URLs are excluded and why
- Filter combinations are not indexed
- Every product has one canonical URL
- Out-of-stock products don't return 404
- There is a rule for discontinued products: 301 to a replacement or to the category
- Categories have their own text and internal links
- Product markup passes the Rich Results Test and matches real price and stock
- The sitemap contains only indexable pages
- If a redesign is planned, the redirect map exists before launch
What's next
Visibility brings people in. But between "arrived" and "paid" sits one more barrier that neither speed nor markup can fix: trust and objections.
The technical side is covered in depth in the neighbouring guide — the Next.js SEO checklist; if you want the work done, there's the technical SEO service.
