A WooCommerce store has SEO problems a blog simply doesn't have.
Not harder problems, exactly — different ones. A blog has a fixed number of pages you wrote deliberately. A store generates URLs automatically: every product, every variation, every filter combination, every sort order, every paginated view. Left alone, a 200-product store can produce tens of thousands of crawlable URLs, nearly all of them worthless.
Four issues account for most of the damage. Here they are, and what to do about each.
The short version
- Duplicate product descriptions — manufacturer copy that hundreds of stores share
- Faceted navigation — filters generating near-infinite URL combinations
- Out-of-stock products — pages you're tempted to delete and shouldn't
- Thin category pages — bare product grids with no reason to rank
Fix them in that order. The first two matter most.
Problem 1 — Duplicate product descriptions
If you sell products you didn't manufacture, you probably pasted the supplier's description. So did every other retailer selling that product.
Google now has forty pages with substantially identical copy, and it picks one to rank. It's rarely the small store.
What to do:
Rewrite your best sellers first. Don't attempt all 400 products. Rank your catalogue by revenue and rewrite the top twenty. That's a week's work covering most of your income.
Write what the manufacturer can't. Who it's for, what it's actually like to use, what it doesn't do well, how it compares to the alternative you also stock, sizing that runs small. That's genuine first-hand information no supplier sheet contains, and it's also what converts.
Get real reviews on the page. Customer reviews are unique content generated for free, and review schema is one of the rich result types Google still supports.
Add original photography. Manufacturer images are as duplicated as manufacturer copy.
For the long tail you'll never rewrite: consider whether those products need to be indexed at all. A store with 40 well-optimised product pages and 360 noindexed ones often outperforms 400 thin ones.
Problem 2 — Faceted navigation
The biggest technical problem in ecommerce SEO, and the one that silently wastes your crawl budget.
Filters generate URLs like:
/shop/?filter_colour=blue&filter_size=medium&orderby=price&paged=2
Every combination is a distinct URL. Three filters with five options each, multiplied by sort orders and pagination, produces thousands of pages — all showing subsets of content that already exists on your category pages.
Left unmanaged, this means: Googlebot spends its crawl allocation on filter combinations instead of your actual products, and near-duplicate pages compete with your legitimate category pages.
What to do:
Noindex filtered URLs. Most SEO plugins have WooCommerce-aware settings for this. Rank Math and Yoast both offer options to noindex filtered or parameter-based URLs.
Set canonicals to the unfiltered category page. A filtered view of "blue medium shirts" should canonicalise to /shop/shirts/.
Keep them crawlable, but not indexable. Don't block filters in robots.txt — that prevents Google seeing the canonical or noindex, which is the trap covered in robots.txt mistakes. Let it crawl, and let the directives do their job.
The exception worth knowing: if a filter combination has genuine search demand — "women's waterproof walking boots" as a real query — consider building that as a proper indexed category page with its own content, rather than leaving it as a filter URL. That's a deliberate landing page, not an accident.
Problem 3 — Out-of-stock products
The instinct is to delete the page. Almost always wrong.
That product page may have accumulated links, rankings, and reviews over years. Deleting it throws all of that away and produces a 404 for anyone who bookmarked it.
What to do instead, depending on the situation:
Temporarily out of stock, returning: keep the page live and indexed. Say clearly when it's expected back, and offer a back-in-stock notification signup — which turns a dead end into an email address. Keep the product schema with availability: OutOfStock, which is correct and honest.
Discontinued, with a direct replacement: 301 redirect to the replacement product. The link equity transfers and the customer lands somewhere useful.
Discontinued, no replacement: keep the page live, mark it clearly as discontinued, and link prominently to the category and to similar products. Only 404 it if the page has no traffic, no links, and no rankings.
Seasonal: keep the page live year-round rather than deleting and recreating. Recreating a URL each season means starting from zero every time.
The principle: a page with accumulated authority is an asset. Deleting it is the expensive option, and it's the default WooCommerce behaviour if you're not careful.
Problem 4 — Thin category pages
Category pages are frequently the most commercially valuable pages on a store — they target the terms people actually search, like "leather walking boots" rather than a specific SKU.
And they're usually a bare grid of products with a title and nothing else.
What to add:
Genuine introductory content above the grid. Not keyword padding — real buying guidance. What to look for, how to choose between the options, who each type suits. A few hundred useful words.
A section below the grid if you want more depth without pushing products below the fold.
Internal links to related categories and to relevant blog content.
Proper meta titles and descriptions rather than the plugin default.
The test: if someone landed on this category page from a search, would they find anything that helps them decide? If it's a grid and nothing else, the answer is no, and a competitor with guidance will outrank you.
Product variations
A common question with a clear answer.
Variations shouldn't have their own indexed URLs. If a shirt comes in five colours and four sizes, that's one product page — not twenty.
WooCommerce handles this correctly by default, keeping variations on the parent page. Where it goes wrong is when a theme or plugin generates separate URLs per variation, which produces near-duplicate pages competing with each other.
Check for it: search site:yourstore.com and look for URLs with variation parameters appearing as separate results. If they're there, canonicalise them to the parent product.
Product schema
WooCommerce outputs Product schema by default, and your SEO plugin usually enhances it.
Verify three things:
Price and currency are present and accurate.
availability reflects reality — InStock, OutOfStock, or PreOrder. Schema claiming a product is in stock when it isn't is both a guidelines violation and a customer service problem.
Review markup only appears where reviews genuinely exist on the page.
Product and Review are among the rich result types Google still supports, which makes this one of the few places schema still earns a visible search feature. What else survived.
Speed matters more on a store
Worth flagging, because WooCommerce sites are structurally heavier: more plugins, more database queries, cart and checkout pages that can't be page-cached.
The specific WooCommerce considerations: object caching genuinely matters here in a way it doesn't for a blog, since cart and account pages are dynamic per user. And cart, checkout, and account pages must be excluded from page caching — caching a cart can show one customer another's basket, which is a serious bug rather than a slow page.
The full picture. · Caching setup.
Frequently asked questions
How do I handle out-of-stock products?
Keep the page live rather than deleting it — it may hold links, rankings, and reviews accumulated over years. If the product is returning, say when and offer a back-in-stock notification. If it's discontinued with a direct replacement, 301 redirect to that. If discontinued with no replacement, keep the page, mark it clearly, and link to similar products. Only 404 pages with no traffic, links, or rankings.
Should product variations be indexed?
No. A product available in five colours and four sizes is one page, not twenty. WooCommerce keeps variations on the parent product page by default, which is correct. Problems arise when a theme or plugin generates separate URLs per variation, creating near-duplicates that compete with each other. Check with a site: search and canonicalise any variation URLs to the parent.
Do filters cause duplicate content?
They cause a crawl and indexation problem rather than a penalty. Filter combinations generate thousands of near-identical URLs showing subsets of your category pages, which wastes crawl budget and creates internal competition. Noindex filtered URLs and canonicalise them to the unfiltered category page — but keep them crawlable, since blocking them in robots.txt prevents Google from seeing those directives at all.
What to do next
Search site:yourstore.com and look at what's indexed.
If you see filter parameters, sort orders, or paginated shop URLs in the results, that's your first project — and it's a settings change rather than a rewrite.
Then take your top five products by revenue and check whether their descriptions are the manufacturer's. Rewriting those five is a day's work against your actual income.
Free: The WordPress maintenance checklist.
Related guides
- WordPress SEO: setup, settings and the traps — the foundation
- Should you noindex tags and archives? — the same logic for taxonomies
- robots.txt mistakes — why not to block filters
- WordPress emails not sending — order confirmations reaching customers
- WordPress speed — store performance
Join the Newsletter
Get practical marketing tactics delivered straight to your inbox.

Written by
Muhammad Basim
Related Articles
Transactional Email Services Compared for WordPress
Every one of these services will deliver your password resets. That's not the differentiator. What differs is setup difficulty, what the free tier covers, how good the logs are when something goes wrong, and — the one people never consider until it bites them — whether the service also handles marketing mail, and whether you […]
Contact Form Notifications Not Arriving: Every Cause
Here's the version of this problem that costs the most: it's been happening for months and you don't know. The form says "thank you." The visitor believes they've reached you. You believe nobody's been in touch. There's no error, no bounce, no alert — just an absence, and absences are invisible. Most of the time […]
WooCommerce Order Emails Going to Spam: The Fix
"I never got a confirmation. Did my order go through?" Every store owner gets this message. And when it arrives often enough, you stop treating it as customer confusion and start realising your receipts genuinely aren't landing. This costs more than most email problems, because a missing order confirmation doesn't just annoy someone — it […]