WooCommerce SEO Problems and How to Fix Them: What I Check First
Most WooCommerce SEO problems come from four places: URLs Google should never crawl, duplicate pages and schema, slow mobile loading, and category pages with nothing on them. WooCommerce itself is not bad for SEO. Its defaults and plugin stack simply leave these gaps open until someone closes them.
- Filter URLs
- Duplicate schema
- Slow LCP
- The cause and fix for each one
- 1URLs Google should never crawl
- 2Duplicate pages and schema
- 3Slow mobile loading
- 4Category pages with nothing on them
Speed is the gap I see cost stores the most. In the 2025 Web Almanac, only 35% of WooCommerce sites passed Core Web Vitals on mobile, against 76% of Shopify stores. Loading was the weak spot, with just 39% of WooCommerce origins scoring a good Largest Contentful Paint.
The good news is that nearly all of this is fixable without changing platforms. Below is the order I work through on a WooCommerce audit, the Search Console symptom each problem leaves behind, the exact fix, and a few popular fixes that do more harm than good.
I audit WooCommerce stores for crawl waste, duplicate URLs, schema conflicts, and speed, then hand over a prioritized fix list your developer can act on right away.
Get WooCommerce SEO HelpWhy WooCommerce Stores Run Into So Many SEO Issues
WooCommerce is a plugin that turns WordPress into a store. The final setup depends on your host, theme, SEO plugin, filter plugin, caching layer, and any custom code on top. Two stores selling the same products can end up with very different technical health.
Two stores selling the same products can end up with very different technical health.
It is also everywhere. The Web Almanac found WooCommerce on 44.4% of detected ecommerce sites on mobile, well ahead of Shopify at 25.3%, and its Core Web Vitals table alone covered 995,782 WooCommerce origins. The same default mistakes repeat across that huge base, which is why audits look so similar.
Shopify limits what you can break by controlling hosting and code. WooCommerce hands that control to you. That is a real SEO advantage when someone owns the technical side, and a steady source of problems when nobody does.
- Limits what you can break by controlling hosting and code
- Hands that control to you
A real SEO advantage when someone owns the technical side
A steady source of problems when nobody does
Share of origins with good Core Web Vitals (mobile)
Source: HTTP Archive, Web Almanac 2025, Ecommerce chapter (Figure 13.11, CrUX mobile data)
Start With the Symptom: What Search Console Is Telling You
Before I touch any settings, I open the Page Indexing report in Google Search Console. Each WooCommerce problem leaves a fairly predictable fingerprint there, and matching the status to its cause saves hours of guessing. This table is the shortcut I use on every store.
| Search Console status | What it usually means on WooCommerce | Section to read |
|---|---|---|
| Discovered, currently not indexed | Google is spending its crawl on filter, sort, or add-to-cart URLs | Filter URLs, add-to-cart links |
| Crawled, currently not indexed | Thin products, near-identical variations, or tag archives | Duplicates, category pages, descriptions |
| Duplicate without user-selected canonical | The same product is reachable at several URLs with no clear canonical | Duplicate URLs |
| Indexed, though blocked by robots.txt | Filter or parameter URLs were blocked after they were already linked | Robots.txt and noindex |
| Excluded by noindex tag | Cart, checkout, and account pages (normal), or a category noindexed by mistake | Robots.txt and noindex |
| Not found (404) or Page with redirect | Deleted products or a permalink change without a redirect map | Stock handling, permalinks |
A sudden jump in known URLs, far above your real product and category count, is the clearest early warning. A store with 600 products should not have tens of thousands of discovered URLs. When it does, the first two problems below are almost always the reason.
A sudden jump in known URLs, far above your real product and category count. When it happens, the first two problems below are almost always the reason.
The WooCommerce SEO Problems I Find Most Often
These are the WooCommerce SEO problems that come up again and again, ordered roughly by how often I find them and how much damage they do. Each one has the cause first, then the fix. Some take ten minutes, while others need a developer.
Filter and Sort URLs Eating Your Crawl
Layered navigation, price sliders, and sort dropdowns create URLs like ?filter_color=black, ?min_price=50, and ?orderby=price. Stack a few attributes together, and a catalog of a few hundred products can produce tens of thousands of crawlable combinations that nobody will ever search for.
?filter_color=black?min_price=50?orderby=priceGoogle has put a number on it. In its 2025 year-end crawling review, Gary Illyes said about half of the crawling issues Google saw came from faceted navigation. Crawlers can only judge a URL space after crawling a large chunk of it, so the waste happens before Google learns to skip it.
Share of crawling issues Google reported for 2025
Source: Gary Illyes, Google Search Off the Record podcast (2025 year-end crawling report), via Search Engine Land
The fix: decide which filter pages deserve to rank. A combination with real demand, such as black leather office chairs, earns its own indexable landing page with unique copy. The rest should stay out of the crawl. Google’s faceted navigation guidance recommends robots.txt rules for filter parameters you don’t need in Search.
- Such as black leather office chairs
- Earns its own indexable landing page with unique copy
- Stays out of the crawl
- Robots.txt rules for filter parameters you don’t need in Search
Two details matter here. Keep the unfiltered category page crawlable, and make empty filter combinations return a 404 instead of a blank page with a 200 status. If your filter plugin can apply filters through URL fragments or AJAX without creating new URLs, those combinations drop out of crawling entirely.
- Keep the unfiltered category page crawlable
- Empty filter combinations return a 404, not a blank page with a 200 status
- Filters applied through URL fragments or AJAX without new URLs drop out of crawling entirely
Add-to-Cart Links Creating Crawlable Action URLs
This one is very specific to WooCommerce. On shop and category archives, the add-to-cart button for a simple product is a normal link ending in ?add-to-cart= plus the product ID. Crawlers can follow it, and every hit asks your server to run cart logic instead of serving a cached page.
Google groups these under action parameters, and the same 2025 review put them at about a quarter of all the crawling issues it ran into. On a busy store, bots hammering cart actions can also slow the site for real shoppers, which turns a crawl problem into a sales problem.
?add-to-cart=+ product IDThe fix: add a robots.txt rule such as Disallow: /*add-to-cart=* so crawlers skip those links. These URLs have no value in Search, so blocking the crawl is the right tool here. Afterwards, check the Crawl stats report in Search Console or your server logs to confirm Googlebot stopped requesting them.
Disallow: /*add-to-cart=*
Duplicate URLs From Categories, Tags, and Variations
The default WooCommerce product base is /product/, which keeps one clean URL per product. Trouble starts when a store adds %product_cat% to the base. On many setups, a product listed in several categories then resolves under more than one path, and each path looks like a separate page.
Variations cause the same issue a different way. Swatch plugins and some themes link to URLs carrying attribute_pa_color or attribute_pa_size parameters, creating near-identical copies of one product. Product tag archives and attribute archives, once enabled, add even more pages that overlap your real categories.
/product/One clean URL per product%product_cat%A product in several categories resolves under more than one pathattribute_pa_colorattribute_pa_size- Product tag archives
- Attribute archives
The fix: keep one canonical URL per product and confirm your SEO plugin prints exactly one canonical tag. Consolidate variations onto the parent product unless a variant has its own search demand. Google’s product variant documentation explains the ProductGroup and hasVariant markup for that setup.
For tags, I either noindex them or delete the ones that copy a category. Attribute archives stay off unless one targets a real query and has its own content. If you don’t set a clear canonical, Google picks one itself, and it won’t always pick the URL you want ranking.
- One canonical URL per product, and exactly one canonical tag
- Variations consolidated onto the parent, with ProductGroup and hasVariant markup
- Tags noindexed, or deleted when they copy a category
- Attribute archives stay off unless one targets a real query and has its own content
Robots.txt and Noindex Working Against Each Other
I see this in almost every store that has been through a few SEO plugins. Someone adds a noindex tag to filter or tag pages, then blocks the same URLs in robots.txt to be extra safe. That block stops Google from ever reading the noindex tag.
Google’s noindex documentation is direct about it: the page must not be blocked by robots.txt for noindex to work. A blocked URL can still appear in results when other pages link to it. That is exactly how stores end up with the “Indexed, though blocked by robots.txt” status.
- 1A noindex tag on filter or tag pages
- 2The same URLs blocked in robots.txt
- 3Google can never read the noindex tag
The fix: choose one tool per URL type. Use noindex when you want a page dropped from results, and leave it crawlable so Google can see the tag. Use robots.txt when a URL pattern has no search value, and you want Google to stop crawling it. Never stack both on one URL.
Leave your cart, checkout, and account pages alone. WooCommerce already adds a noindex robots tag to them through its wc_page_no_robots function, so extra rules add nothing. If Search Console lists them as excluded by noindex, that status is expected and needs no fix.
Never stack both on one URL.
Cart, checkout and account pages already get a noindex robots tag through wc_page_no_robots. That status is expected.
Category Pages That Are Only a Product Grid
Category pages usually target a store’s most valuable commercial keywords, yet most WooCommerce themes show them as a title plus a grid. Nothing on the page explains the range, who it suits, or how to choose, so Google has very little to match against a broader query.
The fix: write a short, useful intro above the grid and deeper buying guidance below it. Cover the differences that change a purchase, such as materials, sizing, use cases, and price bands. Link to subcategories and best sellers. Let the length follow the buying decision, not a word count target.
- Materials
- Sizing
- Use cases
- Price bands
Look at the rendered HTML, not the editor. If the text isn’t in the page Googlebot receives, it isn’t helping you rank.
Check one thing many stores miss. Some themes print the category description but hide it with CSS, or show it on page one only. Look at the rendered HTML, not the editor. If the text isn’t in the page Googlebot receives, it isn’t helping you rank.
Category pages are also where most of my ecommerce SEO consulting work pays off. They sit between broad searches and single products, so one strong category page can lift dozens of product URLs through its internal links and the demand it captures.
Manufacturer Descriptions Copied Word for Word
Pasting the supplier’s description is fast, and that is exactly the problem. The same paragraph sits on dozens of other stores, so your page gives Google nothing new. You won’t get penalized for it, but you also give search engines no reason to rank you over everyone else.
The fix: rewrite in priority order, not all at once. Start with products that get impressions but few clicks in Search Console, then top revenue items, then high-margin lines. Add what the supplier can’t give you: sizing notes from returns, real use cases, care advice, and your own photos.
- 1Products that get impressions but few clicks in Search Console
- 2Top revenue items
- 3High-margin lines
- Sizing notes from returns
- Real use cases
- Care advice
- Your own photos
Keep the specs structured and consistent across the catalog, because they feed your schema and your shopping feeds. Originality matters most in the description and in answers to buyer questions, not in the dimensions table that every retailer copies from the same source.
Duplicate or Conflicting Product Schema
WooCommerce core already outputs basic Product structured data. Yoast, Rank Math, review plugins, and some themes can each add their own on top. When two systems print a Product entity with different prices or ratings, the markup contradicts itself and your rich result eligibility suffers.
The fix: run a product URL through Google’s Rich Results Test and count the Product items. You want one. Let a single plugin own each schema type, turn the rest off, and make sure price, availability, and review counts match what a shopper actually sees on the page.
Don’t add FAQ markup to win a rich result. Since August 2023, Google has shown FAQ rich results only for well-known government and health sites. The markup does no harm, but on a store it won’t earn the expandable snippet that older guides still promise.
- WooCommerce core
- Yoast
- Rank Math
- Review plugins
- Some themes
Since August 2023, Google has shown FAQ rich results only for well-known government and health sites.
Slow Mobile Loading and Poor LCP
Loading is where WooCommerce falls furthest behind. In the Web Almanac’s mobile data, 88% of WooCommerce origins had good INP and 85% had good CLS, but only 39% had good LCP. Responsiveness and layout stability are mostly fine. The main image and the server response are what fail.
Share of origins (mobile)
Source: HTTP Archive, Web Almanac 2025, Ecommerce chapter (Figure 13.11, CrUX mobile data)
The usual causes are cheap shared hosting with a slow server response, page builder themes that ship heavy CSS and JavaScript, uncompressed hero and gallery images, and sliders that push the real product image down the loading queue.
- Cheap shared hosting with a slow server response
- Page builder themes that ship heavy CSS and JavaScript
- Uncompressed hero and gallery images
- Sliders that push the real product image down the loading queue
The fix: test product, category, and home templates separately in PageSpeed Insights, starting with the field data. Then work in this order: hosting and server caching, image size and format, preloading the LCP image, deferring non-critical scripts, and the theme itself. A lighter theme often beats ten optimization plugins.
Test checkout after every speed change. Aggressive JavaScript delay and page caching settings can break cart totals, variation selectors, or payment fields. A faster store that can’t take a payment is a step backwards, so place a real test order before you call the job done.
- 1Hosting and server caching
- 2Image size and format
- 3Preloading the LCP image
- 4Deferring non-critical scripts
- 5The theme itself
Test checkout after every speed change, and place a real test order before you call the job done.
Plugins Loading Scripts on Every Page
Every active plugin can add CSS, JavaScript, database queries, or AJAX calls. Review widgets, wishlists, chat tools, pop-ups, and currency switchers often load across the whole site even when one template uses them. What each plugin loads, and where, matters more than the plugin count.
WooCommerce fixed one of the worst offenders itself. From version 7.8, the cart fragments script only loads when the Mini Cart widget is rendered, instead of firing an AJAX request on every page. Some themes still hard-code that widget, so check your own store before assuming older advice applies.
The fix: list every plugin with what it does, where it is needed, and what it loads. Remove the overlaps, such as two SEO plugins or three caching tools. Unload assets on pages that don’t need them, then retest speed after each change so you know what helped.
- Review widgets
- Wishlists
- Chat tools
- Pop-ups
- Currency switchers
- 1List every plugin, what it does, where it is needed and what it loads
- 2Remove the overlaps
- 3Unload assets on pages that don’t need them
- 4Retest speed after each change
Pagination and Infinite Scroll Hiding Products
Many WooCommerce themes swap numbered pages for a load more button or infinite scroll. Google’s pagination guidance says its crawlers generally follow links in href attributes and don’t click buttons. If deeper products only load through JavaScript, Google may never reach them from the category page.
The fix: keep real paginated URLs such as /page/2/ with plain links underneath any scroll effect. Give each paginated page its own self-referencing canonical. Google advises against using page one as the canonical for the whole sequence, because that tells it the deeper pages don’t matter.
Out-of-Stock and Discontinued Products Handled Badly
Some stores delete products the moment stock runs out. That throws away the URL, its rankings, and any links it earned, then starts from zero when the item returns. Others leave hundreds of dead products live with no alternatives, which frustrates every shopper who lands on them.
The fix: separate temporary from permanent. Keep temporarily unavailable products live, show the correct availability in schema, and suggest close alternatives. For discontinued items, redirect to a genuine replacement or the parent category. If nothing fits, a 404 or 410 is more honest than a redirect to the homepage.
- Temporarily unavailableKeep live, show the correct availability in schema, suggest close alternatives
- DiscontinuedRedirect to a genuine replacement or the parent category
- Nothing fitsA 404 or 410 is more honest than a redirect to the homepage
Permalink Changes Without a Redirect Map
The permalinks screen looks like a harmless setting, but changing the product or category base rewrites every URL in the store. Without redirects, old URLs return 404 errors, internal links break, and the rankings tied to those addresses fade over the following weeks.
The fix: treat a permalink change like a migration. Export every current URL, build a one-to-one 301 redirect map, and update internal links, canonicals, sitemaps, and Merchant Center feeds. Flatten any redirect chains to a single hop, then crawl the old URL list to confirm each one lands in one step.
- 1Export every current URL
- 2Build a one-to-one 301 redirect map
- 3Update internal links, canonicals, sitemaps and Merchant Center feeds
- 4Flatten any redirect chains to a single hop
- 5Crawl the old URL list to confirm each one lands in one step
XML Sitemaps Listing the Wrong URLs
After a plugin switch, stores often end up with two sitemaps, or one that lists tag archives, redirected products, noindexed pages, and drafts. That sends Google mixed signals, because the sitemap says a URL matters while the page itself says it doesn’t.
The fix: let one plugin generate the sitemap and submit only that index in Search Console. Include only canonical URLs that return a 200 status and are meant to be indexed. Compare submitted and indexed counts each month, since a widening gap usually points back to a problem above.
- Two sitemaps
- Tag archives
- Redirected products
- Noindexed pages
- Drafts
- Canonical URLs
- That return a 200 status
- That are meant to be indexed
Compare submitted and indexed counts each month
Weak Internal Links to the Pages That Make Money
Blog posts often get written with no plan to support the catalog, and category pages rarely link to each other. The result is priority products that are only reachable through search or a filter, plus buying guides that send no authority to the pages meant to earn revenue.
The fix: map every guide to a category or product before it goes live. Link categories to subcategories and best sellers, products back to their parent category, and related products to each other with descriptive anchors. Priority products should sit within three clicks of the homepage.
Priority products should sit within three clicks of the homepage.
If you sell in several languages or regions, your internal links and hreflang tags need to agree as well. Each language version should link within its own set and reference its alternates.
Popular WooCommerce SEO Advice That Makes Things Worse
A lot of the advice ranking for this topic repeats guidance that Google changed years ago. These are the four corrections I make most often when a store owner shows me a fix list pulled from another guide or an old plugin tutorial.
- 1
Add rel=prev and rel=next to paginated pagesGoogle no longer uses these tags - 2
Canonicalize page two onward to page oneGoogle says not to use the first page as the canonical - 3
Block filters in robots.txt and noindex them tooPick one - 4
Add FAQ schema to every category for rich resultsFAQ snippets stopped showing in August 2023
“Add rel=prev and rel=next to Paginated Pages”
Google no longer uses these tags, and its pagination documentation says so plainly, while noting other search engines may still read them. They won’t hurt anything, but they won’t fix a crawl problem either. Crawlable links between paginated pages are what do that work.
“Canonicalize Page Two Onward to Page One”
This one causes real damage. Google’s guidance says not to use the first page of a sequence as the canonical for the rest. Doing it asks Google to ignore the deeper pages, and products listed only on those pages lose their internal path from the category.
“Block Filters in Robots.txt and Noindex Them Too”
Pick one. Noindex needs a crawl before Google can see it, and a robots.txt block prevents that crawl. Stacking both leaves neither working as intended, which is how filter URLs end up indexed with no content, sitting in Search Console as blocked but indexed.
“Add FAQ Schema to Every Category for Rich Results”
Genuine FAQs on a category page still help shoppers make up their minds, so keep them if they answer real questions. The rich result is a separate matter. For most stores, FAQ snippets stopped showing in August 2023, so the markup alone won’t change how your listing looks.
The Order I Fix WooCommerce SEO Problems In
Fixing things in the wrong order wastes budget. Speed work means little while Google is stuck crawling filter URLs, and new category copy does nothing on a page that is noindexed by mistake. This is the sequence I follow when I work through WooCommerce SEO problems on a live store.
- Priority 1Focus
Access and indexing
What it coversAccidental noindex, robots.txt errors, staging sites leaking into Google, broken canonicals, server errors
- Priority 2Focus
Crawl control
What it coversFilter, sort, and add-to-cart URLs, variation duplicates, tag and attribute archives, sitemap clean-up
- Priority 3Focus
Money page quality
What it coversCategory copy, product descriptions, titles, images, internal links
- Priority 4Focus
Speed and mobile UX
What it coversHosting, caching, the LCP image, theme weight, plugin assets, checkout testing
- Priority 5Focus
Search enhancements
What it coversOne clean Product schema source, review markup, Merchant Center consistency
Priority four jumps to the top when product or checkout pages are failing outright. Otherwise, a store that Google can crawl cleanly and index correctly gets far more out of every fix that follows, including content and link building work.
When to Fix It Yourself and When to Bring In Help
Plenty of these fixes live inside your SEO plugin: canonicals, noindex rules, sitemaps, titles, and tag archives. A store owner comfortable in WordPress can handle them with a fresh backup and a free afternoon. Anything touching robots.txt, permalinks, or theme templates deserves a staging site first.
Bring in help when traffic has been sliding for months, when Search Console shows far more known URLs than real pages, or after a migration. You can see how that kind of store-wide cleanup has played out for other brands in my ecommerce SEO case studies.
- Canonicals
- Noindex rules
- Sitemaps
- Titles
- Tag archives
- Robots.txt
- Permalinks
- Theme templates
- Traffic sliding for months
- Far more known URLs than real pages
- After a migration
If you only want a second opinion on a fix list before your developer starts, a one-off SEO consultation is usually enough. We go through your Search Console data together, and you leave with a prioritized plan instead of another generic checklist.
WooCommerce SEO Problems: Frequently Asked Questions
Is WooCommerce Bad for SEO?
No. WooCommerce gives you more control over URLs, content, and markup than most hosted platforms. The trade-off is that its defaults and plugin mix leave more room for mistakes, which is why speed and crawl health vary so much from one WooCommerce store to the next.
Is WooCommerce or Shopify Better for SEO?
Neither wins by default. Shopify stores pass Core Web Vitals more often out of the box, while WooCommerce allows bigger changes to URLs and templates. Execution decides the result.
Which WooCommerce Pages Should Be Noindexed?
Internal search results, thin tag archives, and filter pages without search demand are the usual candidates. Cart, checkout, and account pages are already noindexed by WooCommerce itself. Check each page type against your own Search Console data before you apply any rule across the whole site.
Do I Need Yoast or Rank Math for WooCommerce SEO?
One good SEO plugin handles titles, canonicals, sitemaps, and basic schema. It won’t fix filter URLs, hosting, or thin content for you. Run one plugin only, since two SEO plugins side by side is one of the most common causes of duplicate canonicals and duplicate schema.
Should Filtered Product Pages Be Indexed?
Only the filter combinations that match real searches and carry their own copy, such as a colour plus product type with steady demand. Everything else should stay out of the crawl through robots.txt rules or AJAX filtering, rather than sitting in the index as thin duplicates.
How Long Do WooCommerce SEO Fixes Take to Show Results?
Crawl and indexing fixes often show up in Search Console within a few weeks, depending on how often Google crawls your store. Content and speed changes take longer to reach rankings. Track clicks and revenue by category, not just total traffic, so you can see which fix moved what.
Send me your store URL and a short note on what has changed in your traffic. I will tell you which problems are costing you rankings and what to fix first.
Talk to Me About Your StoreOn this page
- 1URLs Google should never crawl
- 2Duplicate pages and schema
- 3Slow mobile loading
- 4Category pages with nothing on them
Speed is the gap I see cost stores the most. In the 2025 Web Almanac, only 35% of WooCommerce sites passed Core Web Vitals on mobile, against 76% of Shopify stores. Loading was the weak spot, with just 39% of WooCommerce origins scoring a good Largest Contentful Paint.
The good news is that nearly all of this is fixable without changing platforms. Below is the order I work through on a WooCommerce audit, the Search Console symptom each problem leaves behind, the exact fix, and a few popular fixes that do more harm than good.
I audit WooCommerce stores for crawl waste, duplicate URLs, schema conflicts, and speed, then hand over a prioritized fix list your developer can act on right away.
Get WooCommerce SEO HelpWhy WooCommerce Stores Run Into So Many SEO Issues
WooCommerce is a plugin that turns WordPress into a store. The final setup depends on your host, theme, SEO plugin, filter plugin, caching layer, and any custom code on top. Two stores selling the same products can end up with very different technical health.
Two stores selling the same products can end up with very different technical health.
It is also everywhere. The Web Almanac found WooCommerce on 44.4% of detected ecommerce sites on mobile, well ahead of Shopify at 25.3%, and its Core Web Vitals table alone covered 995,782 WooCommerce origins. The same default mistakes repeat across that huge base, which is why audits look so similar.
Shopify limits what you can break by controlling hosting and code. WooCommerce hands that control to you. That is a real SEO advantage when someone owns the technical side, and a steady source of problems when nobody does.
- Limits what you can break by controlling hosting and code
- Hands that control to you
A real SEO advantage when someone owns the technical side
A steady source of problems when nobody does
Share of origins with good Core Web Vitals (mobile)
Source: HTTP Archive, Web Almanac 2025, Ecommerce chapter (Figure 13.11, CrUX mobile data)
Start With the Symptom: What Search Console Is Telling You
Before I touch any settings, I open the Page Indexing report in Google Search Console. Each WooCommerce problem leaves a fairly predictable fingerprint there, and matching the status to its cause saves hours of guessing. This table is the shortcut I use on every store.
| Search Console status | What it usually means on WooCommerce | Section to read |
|---|---|---|
| Discovered, currently not indexed | Google is spending its crawl on filter, sort, or add-to-cart URLs | Filter URLs, add-to-cart links |
| Crawled, currently not indexed | Thin products, near-identical variations, or tag archives | Duplicates, category pages, descriptions |
| Duplicate without user-selected canonical | The same product is reachable at several URLs with no clear canonical | Duplicate URLs |
| Indexed, though blocked by robots.txt | Filter or parameter URLs were blocked after they were already linked | Robots.txt and noindex |
| Excluded by noindex tag | Cart, checkout, and account pages (normal), or a category noindexed by mistake | Robots.txt and noindex |
| Not found (404) or Page with redirect | Deleted products or a permalink change without a redirect map | Stock handling, permalinks |
A sudden jump in known URLs, far above your real product and category count, is the clearest early warning. A store with 600 products should not have tens of thousands of discovered URLs. When it does, the first two problems below are almost always the reason.
A sudden jump in known URLs, far above your real product and category count. When it happens, the first two problems below are almost always the reason.
The WooCommerce SEO Problems I Find Most Often
These are the WooCommerce SEO problems that come up again and again, ordered roughly by how often I find them and how much damage they do. Each one has the cause first, then the fix. Some take ten minutes, while others need a developer.
Filter and Sort URLs Eating Your Crawl
Layered navigation, price sliders, and sort dropdowns create URLs like ?filter_color=black, ?min_price=50, and ?orderby=price. Stack a few attributes together, and a catalog of a few hundred products can produce tens of thousands of crawlable combinations that nobody will ever search for.
?filter_color=black?min_price=50?orderby=priceGoogle has put a number on it. In its 2025 year-end crawling review, Gary Illyes said about half of the crawling issues Google saw came from faceted navigation. Crawlers can only judge a URL space after crawling a large chunk of it, so the waste happens before Google learns to skip it.
Share of crawling issues Google reported for 2025
Source: Gary Illyes, Google Search Off the Record podcast (2025 year-end crawling report), via Search Engine Land
The fix: decide which filter pages deserve to rank. A combination with real demand, such as black leather office chairs, earns its own indexable landing page with unique copy. The rest should stay out of the crawl. Google’s faceted navigation guidance recommends robots.txt rules for filter parameters you don’t need in Search.
- Such as black leather office chairs
- Earns its own indexable landing page with unique copy
- Stays out of the crawl
- Robots.txt rules for filter parameters you don’t need in Search
Two details matter here. Keep the unfiltered category page crawlable, and make empty filter combinations return a 404 instead of a blank page with a 200 status. If your filter plugin can apply filters through URL fragments or AJAX without creating new URLs, those combinations drop out of crawling entirely.
- Keep the unfiltered category page crawlable
- Empty filter combinations return a 404, not a blank page with a 200 status
- Filters applied through URL fragments or AJAX without new URLs drop out of crawling entirely
Add-to-Cart Links Creating Crawlable Action URLs
This one is very specific to WooCommerce. On shop and category archives, the add-to-cart button for a simple product is a normal link ending in ?add-to-cart= plus the product ID. Crawlers can follow it, and every hit asks your server to run cart logic instead of serving a cached page.
Google groups these under action parameters, and the same 2025 review put them at about a quarter of all the crawling issues it ran into. On a busy store, bots hammering cart actions can also slow the site for real shoppers, which turns a crawl problem into a sales problem.
?add-to-cart=+ product IDThe fix: add a robots.txt rule such as Disallow: /*add-to-cart=* so crawlers skip those links. These URLs have no value in Search, so blocking the crawl is the right tool here. Afterwards, check the Crawl stats report in Search Console or your server logs to confirm Googlebot stopped requesting them.
Disallow: /*add-to-cart=*
Duplicate URLs From Categories, Tags, and Variations
The default WooCommerce product base is /product/, which keeps one clean URL per product. Trouble starts when a store adds %product_cat% to the base. On many setups, a product listed in several categories then resolves under more than one path, and each path looks like a separate page.
Variations cause the same issue a different way. Swatch plugins and some themes link to URLs carrying attribute_pa_color or attribute_pa_size parameters, creating near-identical copies of one product. Product tag archives and attribute archives, once enabled, add even more pages that overlap your real categories.
/product/One clean URL per product%product_cat%A product in several categories resolves under more than one pathattribute_pa_colorattribute_pa_size- Product tag archives
- Attribute archives
The fix: keep one canonical URL per product and confirm your SEO plugin prints exactly one canonical tag. Consolidate variations onto the parent product unless a variant has its own search demand. Google’s product variant documentation explains the ProductGroup and hasVariant markup for that setup.
For tags, I either noindex them or delete the ones that copy a category. Attribute archives stay off unless one targets a real query and has its own content. If you don’t set a clear canonical, Google picks one itself, and it won’t always pick the URL you want ranking.
- One canonical URL per product, and exactly one canonical tag
- Variations consolidated onto the parent, with ProductGroup and hasVariant markup
- Tags noindexed, or deleted when they copy a category
- Attribute archives stay off unless one targets a real query and has its own content
Robots.txt and Noindex Working Against Each Other
I see this in almost every store that has been through a few SEO plugins. Someone adds a noindex tag to filter or tag pages, then blocks the same URLs in robots.txt to be extra safe. That block stops Google from ever reading the noindex tag.
Google’s noindex documentation is direct about it: the page must not be blocked by robots.txt for noindex to work. A blocked URL can still appear in results when other pages link to it. That is exactly how stores end up with the “Indexed, though blocked by robots.txt” status.
- 1A noindex tag on filter or tag pages
- 2The same URLs blocked in robots.txt
- 3Google can never read the noindex tag
The fix: choose one tool per URL type. Use noindex when you want a page dropped from results, and leave it crawlable so Google can see the tag. Use robots.txt when a URL pattern has no search value, and you want Google to stop crawling it. Never stack both on one URL.
Leave your cart, checkout, and account pages alone. WooCommerce already adds a noindex robots tag to them through its wc_page_no_robots function, so extra rules add nothing. If Search Console lists them as excluded by noindex, that status is expected and needs no fix.
Never stack both on one URL.
Cart, checkout and account pages already get a noindex robots tag through wc_page_no_robots. That status is expected.
Category Pages That Are Only a Product Grid
Category pages usually target a store’s most valuable commercial keywords, yet most WooCommerce themes show them as a title plus a grid. Nothing on the page explains the range, who it suits, or how to choose, so Google has very little to match against a broader query.
The fix: write a short, useful intro above the grid and deeper buying guidance below it. Cover the differences that change a purchase, such as materials, sizing, use cases, and price bands. Link to subcategories and best sellers. Let the length follow the buying decision, not a word count target.
- Materials
- Sizing
- Use cases
- Price bands
Look at the rendered HTML, not the editor. If the text isn’t in the page Googlebot receives, it isn’t helping you rank.
Check one thing many stores miss. Some themes print the category description but hide it with CSS, or show it on page one only. Look at the rendered HTML, not the editor. If the text isn’t in the page Googlebot receives, it isn’t helping you rank.
Category pages are also where most of my ecommerce SEO consulting work pays off. They sit between broad searches and single products, so one strong category page can lift dozens of product URLs through its internal links and the demand it captures.
Manufacturer Descriptions Copied Word for Word
Pasting the supplier’s description is fast, and that is exactly the problem. The same paragraph sits on dozens of other stores, so your page gives Google nothing new. You won’t get penalized for it, but you also give search engines no reason to rank you over everyone else.
The fix: rewrite in priority order, not all at once. Start with products that get impressions but few clicks in Search Console, then top revenue items, then high-margin lines. Add what the supplier can’t give you: sizing notes from returns, real use cases, care advice, and your own photos.
- 1Products that get impressions but few clicks in Search Console
- 2Top revenue items
- 3High-margin lines
- Sizing notes from returns
- Real use cases
- Care advice
- Your own photos
Keep the specs structured and consistent across the catalog, because they feed your schema and your shopping feeds. Originality matters most in the description and in answers to buyer questions, not in the dimensions table that every retailer copies from the same source.
Duplicate or Conflicting Product Schema
WooCommerce core already outputs basic Product structured data. Yoast, Rank Math, review plugins, and some themes can each add their own on top. When two systems print a Product entity with different prices or ratings, the markup contradicts itself and your rich result eligibility suffers.
The fix: run a product URL through Google’s Rich Results Test and count the Product items. You want one. Let a single plugin own each schema type, turn the rest off, and make sure price, availability, and review counts match what a shopper actually sees on the page.
Don’t add FAQ markup to win a rich result. Since August 2023, Google has shown FAQ rich results only for well-known government and health sites. The markup does no harm, but on a store it won’t earn the expandable snippet that older guides still promise.
- WooCommerce core
- Yoast
- Rank Math
- Review plugins
- Some themes
Since August 2023, Google has shown FAQ rich results only for well-known government and health sites.
Slow Mobile Loading and Poor LCP
Loading is where WooCommerce falls furthest behind. In the Web Almanac’s mobile data, 88% of WooCommerce origins had good INP and 85% had good CLS, but only 39% had good LCP. Responsiveness and layout stability are mostly fine. The main image and the server response are what fail.
Share of origins (mobile)
Source: HTTP Archive, Web Almanac 2025, Ecommerce chapter (Figure 13.11, CrUX mobile data)
The usual causes are cheap shared hosting with a slow server response, page builder themes that ship heavy CSS and JavaScript, uncompressed hero and gallery images, and sliders that push the real product image down the loading queue.
- Cheap shared hosting with a slow server response
- Page builder themes that ship heavy CSS and JavaScript
- Uncompressed hero and gallery images
- Sliders that push the real product image down the loading queue
The fix: test product, category, and home templates separately in PageSpeed Insights, starting with the field data. Then work in this order: hosting and server caching, image size and format, preloading the LCP image, deferring non-critical scripts, and the theme itself. A lighter theme often beats ten optimization plugins.
Test checkout after every speed change. Aggressive JavaScript delay and page caching settings can break cart totals, variation selectors, or payment fields. A faster store that can’t take a payment is a step backwards, so place a real test order before you call the job done.
- 1Hosting and server caching
- 2Image size and format
- 3Preloading the LCP image
- 4Deferring non-critical scripts
- 5The theme itself
Test checkout after every speed change, and place a real test order before you call the job done.
Plugins Loading Scripts on Every Page
Every active plugin can add CSS, JavaScript, database queries, or AJAX calls. Review widgets, wishlists, chat tools, pop-ups, and currency switchers often load across the whole site even when one template uses them. What each plugin loads, and where, matters more than the plugin count.
WooCommerce fixed one of the worst offenders itself. From version 7.8, the cart fragments script only loads when the Mini Cart widget is rendered, instead of firing an AJAX request on every page. Some themes still hard-code that widget, so check your own store before assuming older advice applies.
The fix: list every plugin with what it does, where it is needed, and what it loads. Remove the overlaps, such as two SEO plugins or three caching tools. Unload assets on pages that don’t need them, then retest speed after each change so you know what helped.
- Review widgets
- Wishlists
- Chat tools
- Pop-ups
- Currency switchers
- 1List every plugin, what it does, where it is needed and what it loads
- 2Remove the overlaps
- 3Unload assets on pages that don’t need them
- 4Retest speed after each change
Pagination and Infinite Scroll Hiding Products
Many WooCommerce themes swap numbered pages for a load more button or infinite scroll. Google’s pagination guidance says its crawlers generally follow links in href attributes and don’t click buttons. If deeper products only load through JavaScript, Google may never reach them from the category page.
The fix: keep real paginated URLs such as /page/2/ with plain links underneath any scroll effect. Give each paginated page its own self-referencing canonical. Google advises against using page one as the canonical for the whole sequence, because that tells it the deeper pages don’t matter.
Out-of-Stock and Discontinued Products Handled Badly
Some stores delete products the moment stock runs out. That throws away the URL, its rankings, and any links it earned, then starts from zero when the item returns. Others leave hundreds of dead products live with no alternatives, which frustrates every shopper who lands on them.
The fix: separate temporary from permanent. Keep temporarily unavailable products live, show the correct availability in schema, and suggest close alternatives. For discontinued items, redirect to a genuine replacement or the parent category. If nothing fits, a 404 or 410 is more honest than a redirect to the homepage.
- Temporarily unavailableKeep live, show the correct availability in schema, suggest close alternatives
- DiscontinuedRedirect to a genuine replacement or the parent category
- Nothing fitsA 404 or 410 is more honest than a redirect to the homepage
Permalink Changes Without a Redirect Map
The permalinks screen looks like a harmless setting, but changing the product or category base rewrites every URL in the store. Without redirects, old URLs return 404 errors, internal links break, and the rankings tied to those addresses fade over the following weeks.
The fix: treat a permalink change like a migration. Export every current URL, build a one-to-one 301 redirect map, and update internal links, canonicals, sitemaps, and Merchant Center feeds. Flatten any redirect chains to a single hop, then crawl the old URL list to confirm each one lands in one step.
- 1Export every current URL
- 2Build a one-to-one 301 redirect map
- 3Update internal links, canonicals, sitemaps and Merchant Center feeds
- 4Flatten any redirect chains to a single hop
- 5Crawl the old URL list to confirm each one lands in one step
XML Sitemaps Listing the Wrong URLs
After a plugin switch, stores often end up with two sitemaps, or one that lists tag archives, redirected products, noindexed pages, and drafts. That sends Google mixed signals, because the sitemap says a URL matters while the page itself says it doesn’t.
The fix: let one plugin generate the sitemap and submit only that index in Search Console. Include only canonical URLs that return a 200 status and are meant to be indexed. Compare submitted and indexed counts each month, since a widening gap usually points back to a problem above.
- Two sitemaps
- Tag archives
- Redirected products
- Noindexed pages
- Drafts
- Canonical URLs
- That return a 200 status
- That are meant to be indexed
Compare submitted and indexed counts each month
Weak Internal Links to the Pages That Make Money
Blog posts often get written with no plan to support the catalog, and category pages rarely link to each other. The result is priority products that are only reachable through search or a filter, plus buying guides that send no authority to the pages meant to earn revenue.
The fix: map every guide to a category or product before it goes live. Link categories to subcategories and best sellers, products back to their parent category, and related products to each other with descriptive anchors. Priority products should sit within three clicks of the homepage.
Priority products should sit within three clicks of the homepage.
If you sell in several languages or regions, your internal links and hreflang tags need to agree as well. Each language version should link within its own set and reference its alternates.
Popular WooCommerce SEO Advice That Makes Things Worse
A lot of the advice ranking for this topic repeats guidance that Google changed years ago. These are the four corrections I make most often when a store owner shows me a fix list pulled from another guide or an old plugin tutorial.
- 1
Add rel=prev and rel=next to paginated pagesGoogle no longer uses these tags - 2
Canonicalize page two onward to page oneGoogle says not to use the first page as the canonical - 3
Block filters in robots.txt and noindex them tooPick one - 4
Add FAQ schema to every category for rich resultsFAQ snippets stopped showing in August 2023
“Add rel=prev and rel=next to Paginated Pages”
Google no longer uses these tags, and its pagination documentation says so plainly, while noting other search engines may still read them. They won’t hurt anything, but they won’t fix a crawl problem either. Crawlable links between paginated pages are what do that work.
“Canonicalize Page Two Onward to Page One”
This one causes real damage. Google’s guidance says not to use the first page of a sequence as the canonical for the rest. Doing it asks Google to ignore the deeper pages, and products listed only on those pages lose their internal path from the category.
“Block Filters in Robots.txt and Noindex Them Too”
Pick one. Noindex needs a crawl before Google can see it, and a robots.txt block prevents that crawl. Stacking both leaves neither working as intended, which is how filter URLs end up indexed with no content, sitting in Search Console as blocked but indexed.
“Add FAQ Schema to Every Category for Rich Results”
Genuine FAQs on a category page still help shoppers make up their minds, so keep them if they answer real questions. The rich result is a separate matter. For most stores, FAQ snippets stopped showing in August 2023, so the markup alone won’t change how your listing looks.
The Order I Fix WooCommerce SEO Problems In
Fixing things in the wrong order wastes budget. Speed work means little while Google is stuck crawling filter URLs, and new category copy does nothing on a page that is noindexed by mistake. This is the sequence I follow when I work through WooCommerce SEO problems on a live store.
- Priority 1Focus
Access and indexing
What it coversAccidental noindex, robots.txt errors, staging sites leaking into Google, broken canonicals, server errors
- Priority 2Focus
Crawl control
What it coversFilter, sort, and add-to-cart URLs, variation duplicates, tag and attribute archives, sitemap clean-up
- Priority 3Focus
Money page quality
What it coversCategory copy, product descriptions, titles, images, internal links
- Priority 4Focus
Speed and mobile UX
What it coversHosting, caching, the LCP image, theme weight, plugin assets, checkout testing
- Priority 5Focus
Search enhancements
What it coversOne clean Product schema source, review markup, Merchant Center consistency
Priority four jumps to the top when product or checkout pages are failing outright. Otherwise, a store that Google can crawl cleanly and index correctly gets far more out of every fix that follows, including content and link building work.
When to Fix It Yourself and When to Bring In Help
Plenty of these fixes live inside your SEO plugin: canonicals, noindex rules, sitemaps, titles, and tag archives. A store owner comfortable in WordPress can handle them with a fresh backup and a free afternoon. Anything touching robots.txt, permalinks, or theme templates deserves a staging site first.
Bring in help when traffic has been sliding for months, when Search Console shows far more known URLs than real pages, or after a migration. You can see how that kind of store-wide cleanup has played out for other brands in my ecommerce SEO case studies.
- Canonicals
- Noindex rules
- Sitemaps
- Titles
- Tag archives
- Robots.txt
- Permalinks
- Theme templates
- Traffic sliding for months
- Far more known URLs than real pages
- After a migration
If you only want a second opinion on a fix list before your developer starts, a one-off SEO consultation is usually enough. We go through your Search Console data together, and you leave with a prioritized plan instead of another generic checklist.
WooCommerce SEO Problems: Frequently Asked Questions
Is WooCommerce Bad for SEO?
No. WooCommerce gives you more control over URLs, content, and markup than most hosted platforms. The trade-off is that its defaults and plugin mix leave more room for mistakes, which is why speed and crawl health vary so much from one WooCommerce store to the next.
Is WooCommerce or Shopify Better for SEO?
Neither wins by default. Shopify stores pass Core Web Vitals more often out of the box, while WooCommerce allows bigger changes to URLs and templates. Execution decides the result.
Which WooCommerce Pages Should Be Noindexed?
Internal search results, thin tag archives, and filter pages without search demand are the usual candidates. Cart, checkout, and account pages are already noindexed by WooCommerce itself. Check each page type against your own Search Console data before you apply any rule across the whole site.
Do I Need Yoast or Rank Math for WooCommerce SEO?
One good SEO plugin handles titles, canonicals, sitemaps, and basic schema. It won’t fix filter URLs, hosting, or thin content for you. Run one plugin only, since two SEO plugins side by side is one of the most common causes of duplicate canonicals and duplicate schema.
Should Filtered Product Pages Be Indexed?
Only the filter combinations that match real searches and carry their own copy, such as a colour plus product type with steady demand. Everything else should stay out of the crawl through robots.txt rules or AJAX filtering, rather than sitting in the index as thin duplicates.
How Long Do WooCommerce SEO Fixes Take to Show Results?
Crawl and indexing fixes often show up in Search Console within a few weeks, depending on how often Google crawls your store. Content and speed changes take longer to reach rankings. Track clicks and revenue by category, not just total traffic, so you can see which fix moved what.
Send me your store URL and a short note on what has changed in your traffic. I will tell you which problems are costing you rankings and what to fix first.
Talk to Me About Your StoreMore SEO guides
27 On-Page SEO Checklist With Free Template
An on-page SEO checklist is a must for any website. This guide covers all the steps to ensure your website is properly optimized and visible, so you can work through each page and make sure the parts you control are ready to rank.
Link Building Outreach: A Complete Guide
Backlinks are one of the major ranking factors for websites to appear at the top of search results. Quality backlinks can enhance a website’s SEO to generate brand image while building substantial credibility.
How to Check Backlink Quality to be Safe From Google’s Link Spam Update
If you want to know how to check backlink quality step by step? We have shown every method I use before acquiring any backlink with tools screenshots.
More SEO guides
27 On-Page SEO Checklist With Free Template
An on-page SEO checklist is a must for any website. This guide covers all the steps to ensure your website is properly optimized and visible, so you can work through each page and make sure the parts you control are ready to rank.
Link Building Outreach: A Complete Guide
Backlinks are one of the major ranking factors for websites to appear at the top of search results. Quality backlinks can enhance a website’s SEO to generate brand image while building substantial credibility.
How to Check Backlink Quality to be Safe From Google’s Link Spam Update
If you want to know how to check backlink quality step by step? We have shown every method I use before acquiring any backlink with tools screenshots.
Want a second pair of eyes on your store?
I audit WooCommerce stores for crawl waste, duplicate URLs, schema conflicts, and speed, then hand over a prioritized fix list your developer can act on right away.
Want a second pair of eyes on your store?
I audit WooCommerce stores for crawl waste, duplicate URLs, schema conflicts, and speed, then hand over a prioritized fix list your developer can act on right away.

I’m an awarded SEO expert and seo consultant with 9 years of experience. I have generated over 0 to 100M sales by SEO for my clients like you 👉 See Case Study