For WooCommerce SEO, start by checking two WordPress settings: is “Discourage search engines” switched off, and are your permalinks readable rather than ?p=123? After that, WooCommerce SEO comes down to product categories with their own content, filter URLs that do not flood Google, one sitemap, canonicals on every page type, plugins that add no duplicate code and software you keep up to date.
WooCommerce is an extension of WordPress. Many SEO settings therefore sit in WordPress itself, and some in WooCommerce. They are listed below in the order in which it makes most sense to check them.
Which WordPress settings do you check first?
Is ‘Discourage search engines’ switched off?
Under Settings > Reading you find the box Discourage search engines from indexing this site. According to the WordPress documentation, since version 5.3 WordPress has added a meta robots tag with noindex,nofollow to the <head> of your pages while that box is ticked. WordPress also turns off the built-in sitemap.
The box is often ticked during the build, and sometimes stays ticked after launch. So check it first. WordPress adds that it is only a request: search engines decide for themselves whether to honour it.
Which permalinks should you choose?
Permalinks are the permanent addresses of your pages. WordPress starts out with the Plain structure, with addresses such as example.com/?p=123. The WordPress documentation on permalinks describes that format as neither user-friendly nor optimised for search engines. Under Settings > Permalinks, choose a structure that uses the page name, such as Post name.
The WooCommerce settings are on the same screen. According to the WooCommerce documentation, there are four options for product addresses:
| Option | Example | What to watch |
|---|---|---|
| Default | example.com/product/womens-rain-jacket/ | Short and stable |
| Shop base | example.com/shop/womens-rain-jacket/ | The name of your shop page appears in every product address |
| Shop base with category | example.com/shop/rainwear/womens-rain-jacket/ | If you move a product to another category, its address changes |
| Custom base | Your own choice | Must not clash with the category or tag base |
According to the documentation, the default base is product-category for categories and product-tag for tags. You can change both on the same screen.
Choose the structure before launch. WooCommerce warns that previously shared links and search engine indexes pointing to the old URLs return a 404 if you change the permalinks later without redirects. If you have to change them anyway, set up a 301 redirect for every old address.
How do you set up categories and tags?
WooCommerce has two ways to group products. Categories have a hierarchy: a main category with subcategories. Tags are flat and meant for properties that cut across categories, such as a material.
For SEO, category pages are usually the most important pages in your shop. People search for them when they do not yet know which product they want. Give each important category:
- its own title and description;
- a short text that helps people choose. WooCommerce calls a category description optional, and not every theme displays it. Check that yours does;
- links to its subcategories and its main products.
Every tag gets its own page in WooCommerce. So only create tags that help a visitor. A hundred tags with two products each produce a hundred thin pages that Google has to fetch. How to make a category page strong in content is covered in category pages that get found and help people choose.
What do you do with filter URLs?
Filters on colour, size or price, and sorting options, often add parameters to the URL. Every combination then becomes a new address. In its guidance on faceted navigation, Google explains that crawlers fetch many such URLs before realising they add little, which leaves less time for new, useful pages.
Google describes these options:
Four ways to handle filter URLs
| When | What to watch | |
|---|---|---|
| Block in robots.txt | Filter pages do not need to be in search results | Keep product pages and the unfiltered category page accessible |
| Canonical to the unfiltered page | You want to keep the signals on one page | According to Google, generally less effective in the long term than blocking |
| rel="nofollow" on filter links | You do not want to send crawlers to filter pages | Only works if every link to that URL has the attribute |
| Let filter pages be indexed | A filter combination is a real search query | Use the standard & separator, a fixed parameter order, and a 404 for empty combinations |
If you want a specific combination to be found, such as “rain jackets for children”, a separate subcategory with its own text is often the better choice. More on the term is in the glossary entry on faceted navigation.
Are your sitemap and canonicals right?
Do you have one sitemap?
Since version 5.5, WordPress has created its own XML sitemap at /wp-sitemap.xml. According to the announcement of that feature, it includes public post types and taxonomies, author archives and the homepage. Plugins can turn off the built-in sitemap and replace it with their own.
Check:
- which sitemap you submitted in Google Search Console, and whether that is the sitemap your site actually uses;
- whether your products and product categories are in it;
- whether it contains parts that need no search traffic, such as author archives for a shop with a single administrator.
Does every page type get a canonical?
WordPress adds a canonical itself with the rel_canonical() function. According to the WordPress developer documentation, it only does so on single pages: posts, pages and custom post types such as products. Archive pages, including product categories, get no canonical from WordPress itself.
So open the source code of a category page and search for rel="canonical". If nothing is there, see whether your SEO plugin or theme can add canonicals to category pages.
How do you avoid duplicate code from plugins?
WooCommerce generates its own structured data for products, reviews, breadcrumbs and the website, among other things. That is set out in the WooCommerce code reference. An SEO plugin or theme can add its own product data alongside it. You then have two blocks on one page, which may contradict each other, for example on price or stock. In the source code, that looks like this:
<script type="application/ld+json">
{"@type": "Product", "name": "Women's rain jacket", "offers": {"@type": "Offer", "availability": "https://schema.org/InStock"}}
</script>
<script type="application/ld+json">
{"@type": "Product", "name": "Women's rain jacket", "offers": {"@type": "Offer", "availability": "https://schema.org/OutOfStock"}}
</script>One block says “in stock”, the other “out of stock”. A search engine then cannot tell which JSON-LD is correct.
The same applies to titles, descriptions and canonicals: two plugins that do the same job both write their version into the <head>. Use one SEO plugin, and after every new plugin check that nothing has been duplicated:
After every new plugin
- Title and canonicalOpen a product and a category and check the source code for one
<title>and one canonical. - Structured dataCount the
application/ld+jsonblocks and check that they do not contradict each other. - Rich Results TestTest a product page in Google’s Rich Results Test and read the messages.
- SpeedCheck whether the plugin loads scripts on every page, including pages where it does nothing.
How do you keep WooCommerce fast and secure?
With WooCommerce, speed depends on your hosting, your theme and the number of plugins. Every plugin can add scripts and styles to your pages. The Core Web Vitals report in Google Search Console shows how your pages perform for real visitors, grouped by similar pages.
Keep WordPress, WooCommerce, your theme and your plugins updated, and remove plugins you no longer use. Test major updates on a copy of your shop first, so a fault does not hit your live shop straight away.
What should you watch when launching from a test environment?
A test environment is usually shielded from search engines. When you go live, those settings sometimes come along. So go through these points straight after going live:
Check after launch
- Discourage search engines is switched off.
- The source code contains no
noindexon pages that should be found. - The HTTP headers contain no
X-Robots-Tag: noindex. - Robots.txt does not block the shop.
- The sitemap works and has been submitted to Google Search Console.
- Old URLs from a previous website redirect with a 301 to the new addresses.
- Canonicals point to the live domain, not to the test domain.
If you are replacing an existing website, also read Redesigning your website without losing search visibility.
The general checks that apply to every website are in the technical SEO checklist.
How does Outseen approach WooCommerce stores?
Together with Shopify, WooCommerce is Outseen’s standard approach for online shops. Our research engine Atlas, developed by Outseen, examines the public code your store returns: titles, descriptions, robots rules, noindex in the HTML and in the HTTP headers, canonicals and what their target page actually returns, internal links and supported JSON-LD such as product and breadcrumb. Every finding states what was observed, on which URL and when. A specialist assesses which improvements come first. More on the approach is on the SEO page.
What does this mean for your business?
WooCommerce gives you control over hosting, plugins and code, and with it the responsibility for them. With Shopify the platform handles more, with less freedom. Which choice suits your shop is covered in Shopify or WooCommerce: which suits your online shop? If you already run a WooCommerce shop, start with the two WordPress settings and the check after launch. They are quick to go through and catch the faults that can keep a whole shop out of Google.
After that, most of the work lies in your category pages and your plugins. Give the categories your customers search for their own text, keep the number of tags and filter URLs limited, and check the source code after every new plugin. For the content of your product pages, there is the checklist for product pages.