WooCommerce CRO Technique
How to add faceted filters to WooCommerce category pages
Faceted filtering lets shoppers narrow WooCommerce shop and category pages by price, attributes, brand, stock status and rating instead of scanning a long grid. It helps most when category pages are broad, list-to-PDP click-through is weak, mobile users struggle to refine results, or shoppers often leave without clicking a product.
Summary
Bottom Line: The safest way to add product filters to WooCommerce category pages is to start with clean product attributes, then use WooCommerce’s core Product Filters block on WooCommerce 9.9+ archive templates or a dedicated faceting plugin when you need stricter per-category control
- In current WooCommerce core, the Product Filters block is the native route for archive filtering: it was introduced in WooCommerce 9.9, supports dynamic filtering without a full page reload, and includes price, rating, attribute, stock, category, brand and tag filters plus an Active Filters block.
- Multi-select logic matters. Baymard’s guidance is AND between filter types, OR within one filter type, which is the behaviour shoppers expect when they want “blue or black” within the same colour filter. WooCommerce core and Product Filters for WooCommerce both expose multi-select and logical-condition settings.
- Start with the filters buyers actually use. Baymard’s 2025 product-list research says the five essential filter types, when applicable, are price, user ratings average, colour, size and brand.
- Make selected filters visible and removable. Baymard found 20% of sites still fail to keep applied filters visible; on mobile, promoted filters are especially useful because the main filter UI is hidden behind a separate interface.
- Treat filter URLs as an SEO control problem, not just a UX feature. Google warns that faceted navigation can create a near-infinite number of URLs, recommends blocking or fragmenting unimportant filtered states, and says paginated pages should each have their own canonical rather than canonicalising page 2+ to page 1.
How To Implement
Clean the catalogue data before you touch the UI
In WooCommerce, go to Products → Categories and Products → Attributes and make sure the terms shoppers care about are defined consistently as global attributes, not a jumble of one-off values. WooCommerce explicitly documents global attributes as the preferable option because they are reusable across products and easier to update storewide. If you want a brand filter, make sure the brands feature is enabled and brands are assigned to products.
Choose the right implementation route for the store’s setup
- Block theme / Site Editor / WooCommerce 9.9+: use the native Product Filters block in the archive templates. Go to Appearance → Editor → Templates → WooCommerce → Product Catalog and also review the product taxonomy template used for category-style archives. WooCommerce documents the Product Catalog template as the owner of the main shop layout and recommends adding the Product Filters block there.
- Classic theme or need for more conditional control: use Product Filters for WooCommerce or FacetWP. Product Filters for WooCommerce is managed at WooCommerce → Filters and bound to archives via WooCommerce → Settings → Products → Filters. FacetWP facets are created under Settings → FacetWP and can be placed into archive sidebars or supported blocks.
If you use core WooCommerce Product Filters, build from the archive template outward
Add the Product Filters block next to the Product Collection block inside the relevant archive template. Then add the inner filters that match real buyer behaviour: usually Price Filter, one or more Attribute Filters, Status Filter, Rating Filter, and Brand Filter where brand matters commercially. Include Active Filters so selected filters are visible and removable. WooCommerce’s documentation for the block shows these inner blocks and their settings.
Match filter logic to how shoppers think
For any attribute where customers may want more than one value in the same family, enable multiple selections. In core WooCommerce’s Filter by Attribute settings, you can allow single or multiple options and choose filter conditions. In Product Filters for WooCommerce, the relevant fields are Multi select and Query type, where you can choose
ANDorORfor that element. For “blue or black”, use one colour filter with multi-select and inclusive logic rather than two separate filters.Keep the filter set narrow and category-specific
Do not expose every possible facet just because the plugin allows it. Baymard’s evidence suggests the most broadly useful set is price, rating, colour, size and brand where relevant, and its filter-UI guidance also argues for category-specific filters that align with what buyers are scanning for in that category. On block themes, WooCommerce core gives you the archive template and context-aware filtering, but the official docs do not document native per-category display rules in the same way dedicated plugins do; if you need different filter sets by category, that usually means theme-level template decisions or a more configurable plugin. Product Filters for WooCommerce does document Display rules by category, attribute, taxonomy, tag and page.
Handle applied filters and reset explicitly
- Core WooCommerce: add Active Filters so selected states are plainly visible and removable. On mobile, WooCommerce’s Product Filters block uses a modal-style filter interface, so the visible summary matters even more.
- Product Filters for WooCommerce: use the Notes for Product Filters widget or shortcode to show applied selections, and add a Button element with Action = Reset for one-click clearing. This route gives you the most explicit “applied filters bar + reset” setup out of the box.
Design for mobile on purpose, not as a desktop afterthought
Baymard’s guidance is a persistent left sidebar on desktop, but a drawer or sticky-apply pattern on mobile, with applied filters visible above the results. It also recommends promoting especially important filters because on mobile the main filter UI is hidden until tapped, and typically only two or three promoted filters fit comfortably in one line. In practice, that means: keep the full filter stack in the drawer/sidebar, but pull 1–3 high-usage filters such as price, size, or delivery/availability into a visible row above the product grid on mobile if your chosen theme/plugin can do this cleanly.
For larger catalogues, choose tooling that can cope with scale
FacetWP is built around an index table and documents both its block support and its WooCommerce support, including variable products. It also documents that indexing can become the main operational constraint on large catalogues and recommends more controlled indexing approaches such as WP-CLI for sites with lots of content changes. FiboSearch is useful here too, but as a complementary search layer, not as a replacement for category-page faceting: its official materials describe it as live WooCommerce search with autocomplete, and its Pro performance claims are vendor data based on an inverted index and SHORTINIT mode.
Add a no-results state and measure it before rolling out widely
WooCommerce’s Product Collection block includes a No results inner block, so give shoppers a sensible recovery path instead of a dead end. In the same release, instrument custom GA4 events such as
filter_apply,filter_remove,filter_reset, andfilter_zero_results, with parameters likecategory_slug,facet_name,selected_value_count, andresults_count. Validate them in DebugView before publishing broadly. GA4’s official documentation supports both recommended ecommerce events and custom events.Stop filter URLs creating index bloat
If filtered states are not intended to rank, canonicalise them back to the clean category URL and keep your internal UX state out of the index where possible. Google’s guidance says faceted navigation can explode URL counts, suggests blocking or fragmenting states you do not need indexed, and notes that
rel="canonical"can consolidate signals to the main page. If you use Yoast SEO, its official API documents thewpseo_canonicalfilter for changing the canonical URL programmatically. Important caveat: for real pagination such as?page=2, Google says each page in the sequence should keep its own canonical rather than pointing all pages back to page 1.Check plugin and theme caveats before launch
- Core Product Filters block is the current native route and the earlier filter blocks were deprecated from WooCommerce 9.9 onward.
- Product Filters for WooCommerce does not apply its
[wcpf_filters]shortcode to WooCommerce Blocks, so it is a poorer fit if the category grid is driven by WooCommerce blocks. - FacetWP Blocks support the WooCommerce Product Collection block in both classic and block themes, but FacetWP also warns that the Block/Site Editor ecosystem is evolving and future WordPress updates can affect behaviour, so version-testing matters.
- HPOS is largely irrelevant to storefront filtering. WooCommerce’s HPOS documentation is about order storage tables, not product-archive filtering, so it is not the main compatibility question here; the more important checks are theme, archive template, block support, indexing, and JavaScript refresh behaviour.
How To Measure
The core KPI is list-to-PDP CTR on category/shop pages, read as select_item ÷ view_item_list, because GA4 explicitly defines view_item_list for list exposures and select_item for clicks from a list. The commercial KPI to judge the technique is RPV and purchase conversion from filtered sessions. The operational KPI is zero-result filter combinations.
In GA4, use: – Recommended ecommerce events: view_item_list, select_item, and purchase. These populate official ecommerce metrics such as Item-list view events, Item-list click events, Purchases, Transactions and Purchase revenue. – Custom events: filter_apply, filter_remove, filter_reset, filter_zero_results, and optionally filter_panel_open. Register key parameters as custom dimensions so you can segment by category, facet family, or whether a session used filters at all. GA4’s official setup docs confirm custom events are supported via Google tag or GTM.
Read results in these slices: – Filtered sessions vs non-filtered sessions on shop/category archives. – Mobile vs desktop, because mobile filtering patterns differ materially. – Broad categories only, where filters should do real work rather than decorate a short list. – Top filter families such as price, colour, size, brand.
What success looks like: – higher list-to-PDP CTR from category pages, – lower category exit behaviour after a filter interaction, – higher purchase conversion and RPV for filtered sessions, – fewer zero-result filter combinations over time as you refine the configuration.
Guardrail metrics: – LCP, INP and CLS must not worsen after adding faceting or extra AJAX behaviour; Google’s current “good” thresholds are LCP within 2.5 seconds, INP at 200 ms or less, and CLS at 0.1 or less. – overall conversion rate and AOV should not fall, – zero-result rate should not rise, – product-list render latency / filter refresh delay should not create obvious lag, especially on mobile and on larger catalogues.
Pitfalls
- Pitfall: treating filters as a plugin problem instead of a catalogue-data problem. If attributes and brands are inconsistent, the UI will only expose that inconsistency faster. WooCommerce’s own taxonomy documentation makes clear that attributes are what power cross-category filtering, and that global attributes are the preferred storewide approach.
- Pitfall: forcing single-select where users want multi-select. Baymard’s research shows shoppers regularly try to select several values within the same filter family, especially for price and colour. If they cannot do that, comparison becomes tedious and some users abandon the task.
- Pitfall: hiding applied filters inside the drawer. Baymard explicitly calls out invisible applied filters as a recurring usability failure, especially on mobile where users can forget what they filtered by and assume the site simply has poor stock.
- Pitfall: assuming infinite scroll is always the modern answer. NN/g says infinite loading can work when there are relatively small result sets, good filters, and a clear item count, but it is not automatically the best choice for large product listings. For bigger catalogues, “Load more” or conventional pagination usually gives shoppers more control and is easier to stabilise analytically and technically.
- Myth: every filtered URL is an SEO opportunity. Google’s guidance points the other way by default: faceted URLs can explode crawl volume, dilute signals, and waste server resources unless you deliberately manage indexing and canonicalisation.
- Myth: Product Filters for WooCommerce is a drop-in answer for block-based archives. It is not. Its own documentation says the [wcpf_filters] shortcode does not apply filtering to WooCommerce Blocks.
Examples
FAQs
Yes, WooCommerce can now do basic archive filtering natively on WooCommerce 9.9+ with the Product Filters block. If you run a block theme and need standard price, attribute, stock, rating, category, brand or tag filters, core is the cleanest first option; if you need stricter per-category display rules, a classic-theme-friendly setup, or heavier-duty scaling, a dedicated plugin is usually the better fit.
Start with the smallest set that matches how buyers narrow the category in real life. Baymard’s broad guidance is price, user ratings, colour, size and brand where relevant, then add category-specific attributes only if your taxonomy data is strong enough to support them.
Yes, and they usually should be able to. Baymard’s recommended pattern is OR within one filter family and AND across different filter families, and both WooCommerce core and Product Filters for WooCommerce expose settings for multi-select and filter conditions.
They can if you leave them unmanaged. Google warns that faceted navigation can create a huge number of duplicate or near-duplicate URLs, so most filtered states should canonicalise back to the clean category URL or be kept out of the index with another deliberate method; only true pagination pages should generally keep their own canonicals.
Sources & Further Reading
- Product Filters block — WooCommerce – Official core documentation for the Product Filters block, its inner blocks, multi-select settings, mobile modal behaviour, and WooCommerce 9.9 introduction. Date: date not surfaced in the retrieved page extract; web result indicates publication around 2024.
- Customizing the Product Catalog Template — WooCommerce – Official path for editing the Product Catalog template in the Site Editor and adding Product Filters to archive layouts. Date: date not surfaced in the retrieved page extract; current official documentation.
- Managing Product Categories, Tags and Attributes — WooCommerce – Official guidance on categories, tags, attributes, global attributes, and why attributes matter for filtering. Date: date not surfaced in the retrieved page extract; current official documentation.
- Product Filters for WooCommerce Documentation — WooCommerce – Official extension docs covering filter projects, multi-select, AND/OR logic, display rules, notes/applied filters, reset button, product-count settings, and block limitations. Date: date not surfaced in the retrieved page extract; current official documentation.
- WooCommerce — FacetWP Help Centre – Official FacetWP guide for WooCommerce support, data sources, archive placement, stock handling, and setup path under Settings → FacetWP. Date: updated 20 April 2026.
- Blocks — FacetWP Help Centre – Official block support guide showing compatibility with supported WordPress blocks, including WooCommerce’s Product Collection block, in classic and block themes. Date: updated 20 April 2026.
- FacetWP performance, speed, limits and scalability — FacetWP – Official performance guidance on indexing, index-table behaviour, large-catalogue considerations, and when to prefer WP-CLI reindexing. Date: 5 March 2026.
- FAQ — FiboSearch – Official FiboSearch FAQ covering admin path, search-bar placement, inverted-index description for Pro, and large-catalogue vendor claims. Treat all performance figures here as vendor/directional rather than independent evidence. Date: date not stated on page; accessed 17 June 2026.
- Product List UX Best Practices 2025 — Baymard Institute – Independent UX evidence for overall product-list weakness, the five essential filters, the value of multi-select in one filter family, and applied-filter visibility. Date: 9 September 2025.
- What Is an Ecommerce Filter? UI Best Practices — Baymard Institute – Independent UX guidance on keeping filters visible, using drawers/sticky apply on mobile, applied-filter summaries, result counts, and category-specific filters. Date: 31 May 2026.
- Consider Promoting Important Filters — Baymard Institute – Independent evidence for promoting a small number of high-value filters above the main filter UI, especially on mobile. Date: 21 November 2023.
- Alternatives to Pagination on Product-Listing Pages — Nielsen Norman Group – Independent UX guidance on when infinite loading works and why it is not automatically right for large ecommerce catalogues. Date: 6 March 2022.
Want us to implement this for you?
We run measured CRO consultancy for WooCommerce. If you want help prioritising, testing & implementing these improvements, tell us about your store.
Book PilotAbout This Page
- Written By: Eliot Webb – Founder & WooCommerce CRO Consultant
- Last Reviewed: 17 Jun 2026
- Last Updated: