All articles

WooCommerce SEO: A Practical Guide to Product and Category Pages

WooCommerce SEO for product and category pages: titles, descriptions, duplicate URLs, canonicals, reviews and out-of-stock products, with a checklist to follow.

Cover: search result snippet above a WooCommerce product page card
In this article

WooCommerce SEO comes down to three things: every product and category page needs a unique, descriptive title and copy, only one clean URL per page should be indexable, and the page must show search engines clear signals such as breadcrumbs, product schema and real reviews. Many stores lose visibility not because of missing keywords but because filters, sorting and thin templates create hundreds of near-identical URLs. This guide walks through how to fix each layer, in the order I usually work through a store.

Key takeaways

  • Category pages usually carry more search demand than individual products, so write and structure them like landing pages, not product grids.
  • Product variations normally live on one URL, but filters, sorting and tracking parameters create duplicates that need a canonical or noindex strategy.
  • Never delete a product page automatically when stock runs out; choose between keeping, redirecting or removing based on whether the product returns.
  • Breadcrumbs, genuine reviews and valid product schema help search engines understand the page and can make results richer.

Start with how people search for products

Before touching settings, check how your customers phrase the search. Someone looking for a product type searches broad terms (“men’s running shoes”), while a buyer who knows exactly what they want searches a model or brand plus a detail. The first intent maps to a category page, the second to a product page.

Make a simple spreadsheet with one row per page: the URL, the main phrase it should answer, and the phrase’s intent (browse or buy). If two pages answer the same phrase, one of them is competing with the other and should be merged, differentiated or redirected.

WooCommerce SEO for product pages

Titles and URLs

The product title is normally your H1, and the SEO title (set in your SEO plugin such as Yoast SEO or Rank Math) is what appears in results. They do not need to match exactly. A good pattern is the product name, the key attribute a buyer searches (size, material, model), and the brand or store name at the end.

Keep slugs short and readable. In Settings > Permalinks you can set the product base, and many stores shorten it or remove it. Decide once and avoid changing it later, because every change needs redirects.

Product descriptions that are not copied

Manufacturer descriptions are used by every reseller, so they give a search engine no reason to prefer your page. Write your own short description that answers the buyer’s real questions: what it is, who it is for, what is included, how to choose the right size or version, and what to do after purchase.

Put the most important information in the first lines, then add a scannable list of specifications. Short, visible sections work better than copy hidden behind tabs.

Product images and alt text

Images are often a product page’s biggest asset and its biggest speed cost. Use descriptive file names before uploading (blue-leather-wallet-front.jpg, not IMG_4021.jpg), compress, and serve modern formats. For performance details see the guide on speeding up WordPress and passing Core Web Vitals.

Alt text should describe what the image shows in plain language, for example “Blue leather wallet, open, showing card slots”. Add the product name where it fits naturally; do not paste the same keyword into every image. Decorative images can have empty alt text.

Reviews and user content

Reviews add unique, relevant text that you could never write yourself, and they answer buying objections. Keep WooCommerce reviews enabled, send a post-purchase request, and respond to questions publicly. Only mark up reviews that are real and visible on the page. Never copy reviews from another site or invent ratings, as that violates search engine guidelines and damages trust.

Breadcrumbs show the path Home > Category > Product. They help visitors navigate and give search engines a clear view of your hierarchy. WooCommerce has a built-in breadcrumb function, and Yoast SEO and Rank Math offer their own versions with matching structured data. Pick one source, enable it, and make sure the product shows its main category, not a random one.

Product schema

Product schema describes the name, image, price, availability and ratings in a machine-readable format. WooCommerce outputs basic structured data by default, and SEO plugins can extend it. The details, validation steps and common mistakes are covered in the article on schema markup for WordPress and WooCommerce. The reference vocabulary is on schema.org/Product.

Category page SEO: where most WooCommerce SEO gains are

Category pages target broader phrases with more search volume, but many stores leave them as an empty heading above a grid. A strong category page has these parts:

  1. A clear H1 using the category name in natural language.
  2. A short introduction above the products (two or three sentences) that explains what the category covers.
  3. A longer, helpful block below the products: buying guidance, how to choose, size or material notes, and links to key subcategories.
  4. Subcategory links so visitors and crawlers can reach deeper pages.
  5. A sensible product order, showing bestsellers or available items first.

Write the category description in Products > Categories, and place it so it is visible without pushing the products far down the page. Do not write one generic paragraph and paste it into every category; each should be unique.

If you have many subcategories, keep the hierarchy shallow. A buyer should reach any product in few clicks, and the same product should not be reachable through several different category URL paths.

Duplicate content from variations, filters and faceted URLs

Duplicate content is the biggest technical problem I see in WooCommerce stores. It rarely comes from the product itself.

Where duplicates come from

  • Variations: a variable product normally uses one URL, with the chosen variation applied by JavaScript. That is good. Problems start when a theme or plugin creates separate URLs for each variation.
  • Sorting parameters: ?orderby=price shows the same products in a different order.
  • Filter parameters: layered navigation and filter plugins create URLs such as ?filter_color=blue&min_price=..., and the number of combinations can explode.
  • Tracking parameters: campaign tags added to links.
  • Pagination: /page/2/ of a category is legitimate, but each page needs its own self-referencing canonical, not a canonical pointing to page one.

How to handle them

SituationRecommended approach
Sorting and tracking parametersCanonical pointing to the clean category URL
Filter combinations with no search demandCanonical to the clean URL, or noindex with follow
A filter combination people really search (for example a brand within a category)Create a proper, indexable page with its own title and copy
Separate variation URLs from a pluginConsolidate to the parent product with a canonical
Paginated categoriesSelf-referencing canonical on each page

Your SEO plugin normally outputs the canonical tag, so verify it on real URLs instead of assuming. Open a filtered page, view the source, and check that the canonical points where you expect.

Blocking everything in robots.txt is tempting but has a trade-off: a blocked URL cannot be crawled, so search engines never see its canonical or noindex. Reserve robots.txt for pages with no search value, such as cart, checkout and account, and use canonical or noindex for filter and sorting URLs.

If you need to add a noindex to parameter URLs yourself, this snippet is a starting point. Test it on staging first, and check whether your SEO plugin already handles it.

add_filter( 'wp_robots', function ( $robots ) {
	if ( ! ( is_shop() || is_product_category() ) ) {
		return $robots;
	}

	foreach ( array_keys( $_GET ) as $key ) {
		if ( in_array( $key, array( 'orderby', 'min_price', 'max_price' ), true ) || 0 === strpos( $key, 'filter_' ) ) {
			$robots['noindex'] = true;
			$robots['follow']  = true;
			break;
		}
	}

	return $robots;
} );

It only reads the names of query parameters and never outputs their values, so it is safe, but it is not a replacement for a proper canonical setup.

Handling out-of-stock and discontinued products

What you do depends on why the product is unavailable.

  • Temporarily out of stock: keep the page live, return a normal 200 status, show clearly that it is unavailable, offer a back-in-stock notification, and suggest alternatives. Make sure the structured data availability matches what the page says.
  • Discontinued, with a close replacement: 301 redirect to the replacement product or its category, but only if the replacement is truly relevant. Redirecting everything to the homepage confuses visitors.
  • Permanently gone, no replacement: let the page return 404 or 410, or redirect to the parent category if that is genuinely useful.

Avoid hiding out-of-stock products from the shop if they have organic traffic, since removing them throws away a page that already ranks.

Internal linking for stores

Internal links tell search engines which pages matter and help visitors discover products.

  • Link from category pages to their best products and subcategories.
  • Link from products back to their category and to related or complementary products.
  • Use descriptive anchors, such as the product type, instead of “click here” or “view”.
  • Add links from blog posts (buying guides, comparisons) to the relevant category pages.
  • Check for orphan products that no category or link reaches.

The broader technical checklist applies here too, so keep the sitewide basics in order.

Frequently asked questions

Does WooCommerce have good SEO out of the box?

WooCommerce gives you a solid base: crawlable pages, product schema and breadcrumbs. But it does not write your titles and descriptions, and it does not manage canonicals for filter combinations or decide what to do with out-of-stock products. You still need an SEO plugin and a deliberate setup.

Should product variations have their own URLs?

Usually no. One product URL with selectable variations is simpler and keeps ranking signals together. Separate URLs make sense only when a variation has its own real search demand and its own content, such as a distinct model.

How do I avoid duplicate content in WooCommerce?

Find the sources first: sorting and filter parameters, tracking tags and plugin-created variation URLs. Then set canonicals to the clean page, noindex low-value combinations, and create dedicated pages for filter combinations people actually search for.

What should I do with out-of-stock products?

If the product will return, keep the page, mark it clearly as unavailable and offer alternatives. If it is gone for good, redirect to a truly similar product or category, or let it return a 404 or 410 when no good alternative exists.

Do I need a different SEO plugin for WooCommerce?

Not necessarily. Yoast SEO and Rank Math both support WooCommerce. What matters is that you configure them for product and category pages and verify the output on real URLs.

Next steps for your WooCommerce SEO

Good WooCommerce SEO is mostly cleanup and consistency: unique content, one clean URL per page, honest reviews and structured data that matches what visitors see. Start with your top categories and best-selling products, then work outwards.

I am Hossam Hamdy, a Front-End and WordPress developer based in Mansoura, Egypt. I build and fix WooCommerce stores for clients in Saudi Arabia, the UAE and Egypt with a focus on speed and clean code. If you want a review of your store’s product and category pages, or you are deciding which platform to build on (see WooCommerce vs Salla vs Zid), get in touch through the contact section.