Decide what should exist before you optimise what does
WooCommerce creates a lot of URLs on its own, and the first job is deciding which of them are pages you want people to land on. A store with two hundred products can easily have thousands of crawlable addresses.
The generated sets are product category archives, product tag archives, attribute archives for anything set up as a global attribute, filtered and sorted versions of every archive with parameters in the URL, paginated versions of all of the above, and author and date archives inherited from WordPress.
Most of that should not be competing for attention. A useful default is to keep product categories and products, keep a small number of tag or attribute archives that genuinely match how people search, and exclude the rest from the index while still letting them work for shoppers on the site.
Do this early, because it changes everything downstream. Every hour spent writing copy for pages that duplicate each other is wasted, and a crawler spending its time on sorted archives is not spending it on your products.
One structural choice worth making at the same time is your permalink base. Changing product and category URL structures later means redirects across the whole catalogue, so settle it before launch if you can.
Make category archives into pages that deserve a ranking
Your product category pages are the ones with a real chance of ranking for the searches that carry buying intent, and by default they are a grid with a heading. That is not enough to rank and not enough to convert.
Add copy that helps someone choose. What the category covers, how the options differ, who each one suits, what to check before buying, and the two or three questions your customers ask every time. WooCommerce supports a category description, and many themes render only a truncated version of it, so check what actually appears on the page rather than what is saved in the admin. If the theme cuts it off, that is a template change worth making.
Write it for a person deciding between products, not for a search engine. A page that genuinely explains a choice is also the page an AI assistant can quote when someone asks which type to buy.
Then fix the internal linking. Categories should link to their subcategories and to closely related categories in the body copy, not only in a menu. And keep the product grid above the long copy so shoppers are not scrolling past an essay to see what you sell.
Give product pages the specifics, and handle variations deliberately
Product pages win the long, specific searches, and they win them on detail rather than on adjectives. Write out the measurements, materials, compatibility, contents, care instructions and anything a buyer would otherwise have to ask.
WooCommerce gives you two description areas. Use the short description for the summary that appears near the price and the buy button, and the long description for the detail. Filling both with the manufacturer's supplied text is the most common reason a WooCommerce product page has nothing to rank with, because every other store selling the item has the same words.
Variable products need a decision. Variations usually live on a single product URL with parameters, which is generally what you want: one strong page rather than dozens of thin ones. Where a specific variation has real search demand of its own, such as a size or a colour people search for by name, a separate product with its own page can be justified. Do that selectively, not as a rule.
And make sure the page states availability honestly. Products that are out of stock should say when they return rather than disappearing without explanation.
Control indexing for filters, tags and pagination
Faceted navigation is where WooCommerce stores most often lose control of the index. Every filter combination can produce a crawlable URL, and a store with several attributes can generate an enormous number of near-identical pages.
The usual approach is to let filtered URLs work for shoppers while keeping them out of the index, and to make sure the canonical on a filtered page points at the clean archive. Check this on your own site rather than assuming your plugin handles it, because themes and filter plugins vary in how they build URLs.
Tags are the other common problem. WooCommerce product tags create archives that often duplicate categories with a slightly different name. Keep the handful that match a real search, and exclude the rest.
Pagination should be crawlable so products on later pages can be found, with each page self-canonical rather than pointing at page one, and no attempt to consolidate them into a single view.
Finally, check your sitemap contains products and product categories and does not contain the archives you have excluded. A sitemap that disagrees with your indexing rules sends mixed instructions.
Treat the technical layer as part of the work, because you own the hosting
On a self-hosted store the platform is yours, which means the speed, the uptime and the plugin conflicts are your responsibility rather than someone else's.
Start with structured data. WooCommerce outputs product markup, and many SEO plugins and themes output it as well, which can produce duplicate or conflicting blocks on the same page. Test a product page and confirm there is one clean product entry with a price, availability and identifier that match what the page shows.
Then speed. A slow product page suppresses both rankings and conversion, and on WooCommerce the causes are usually hosting, a heavy theme or page builder, an accumulation of plugins each adding scripts, and unoptimised images. Page speed is a large enough topic to handle separately, but do not treat it as optional here.
Watch for crawl waste. Look in your server logs or search console coverage report for crawlers spending their time on cart URLs, add-to-cart links, sorted archives or search result pages, and block what is not useful.
And keep an eye on updates. A plugin update can change URL structures or output, so check the important templates after any significant update rather than finding out from a traffic drop.
Worked example, not a result
An indexing plan for a store with 200 products
- Products
- Indexed
- Product categories
- Indexed, with written copy
- Product tags
- 6 kept, the rest excluded
- Attribute archives
- Excluded
- Filtered and sorted URLs
- Excluded, canonical to the clean archive
- Paginated archives
- Crawlable, self-canonical
- Author and date archives
- Excluded
Worked example, not a result