What each licence includes
| Feature | Free | Pro |
|---|---|---|
| Faceted filter: category, attributes, price, stock, rating | ✔ | ✔ |
| Honest counters: its own facet stays unrestricted, the rest narrow down | ✔ | ✔ |
| Dedicated index table instead of queries against attributes and meta fields | ✔ | ✔ |
| Duplicate values ("12 V" / "12v" / "12 V.") are merged into one | ✔ | ✔ |
| Numeric values are sorted numerically and work as a range | ✔ | ✔ |
| Applies without a reload, filter state is kept in the URL | ✔ | ✔ |
| Mobile drawer, price slider with the real bounds of the selection | ✔ | ✔ |
| Price and stock come from wc_product_meta_lookup, matching sorting exactly | ✔ | ✔ |
| Filter SEO pages with their own H1, title and human-readable URL | — | ✔ |
| Other combinations get noindex,follow and a canonical to the plain category | ✔ | ✔ |
| Doesn't touch the canonical if Yoast, Rank Math or AIOSEO is active | ✔ | ✔ |
Smart Product Filter for WooCommerce is a faceted filter that doesn’t slow down on a large catalogue. Instead of querying attribute and meta tables, the module keeps its own flat index table of “product → value”, so adding new facets does not slow the query.

Honest counters
Each value shows a count of products that already accounts for the filters selected so far. Its own facet is not narrowed, though: after picking “Green”, the shopper still sees how many blue and red items there are, and can switch with one click instead of resetting everything and starting over.
Duplicate values get merged
Supplier price lists bring in “12 V”, “12v” and “12 V.” as three different attributes. The module merges them into one value, so the shopper sees a single checkbox instead of three. Numeric values are sorted numerically, not as strings, and work as a range.
Price, stock, rating
Price and stock are read from the wc_product_meta_lookup table — the same source WooCommerce uses for sorting — so there’s no mismatch between the filter and the listing. The price slider picks up the real bounds of the current selection.
Applies without a page reload
The filter updates the listing without reloading the page and writes its state into the URL, so the link can be sent or bookmarked. On mobile, the panel collapses into a drawer so it doesn’t eat up screen space.
SEO
Only the filter combination you’ve deliberately made an SEO page goes into the index: its own H1, title and human-readable URL. Every other combination gets noindex,follow and a canonical pointing to the plain category. If Yoast, Rank Math or AIOSEO is running on the site, the canonical stays with them — the module doesn’t interfere.
Compatibility
WooCommerce 6.0+, WordPress 6.2+, PHP 7.4+. Works with classic category archives and the shop page, and with HPOS. Filtering is built into the main query, so it works with themes that render the standard product loop. The widget can be placed in any widget area or via a shortcode.
What the admin gets
Facets are built from what’s already in your catalogue: category, product attributes, price, stock, rating. Nothing needs to be described separately — the module takes WooCommerce attributes as they are.
For each facet you configure how it’s shown to the shopper: checkboxes, a slider for numeric values, or a range. You decide the order of facets in the panel — whatever people actually filter by in your category goes first.
The index rebuilds itself whenever a product changes, and can be rebuilt completely with a single button — handy once, right after a big price-list import.
How it works, step by step
1. After installation, the module builds its own flat index table of “product → value”. This is a one-time operation; after that the index maintains itself.
2. The shopper ticks a checkbox in the filter. The query doesn’t go against wp_postmeta or the attribute tables — it goes against this index, a single simple SELECT instead of a pile of JOINs.
3. Counters next to the remaining values are recalculated from that same index, so they’re honest: they show what will actually be found, not the overall count of products with that value.
4. The listing updates without a reload, and the filter’s state is written into the URL.
5. A product changed in the admin or updated by import — the index for that product rebuilds automatically.
Why it’s faster
Standard WooCommerce filtering collects the result set through wp_postmeta and attribute taxonomies. Each added facet is another JOIN, and on a catalogue of tens of thousands of products the query turns into a multi-second one.
The flat “product → value” index removes this problem at the root: whether there are five facets or fifteen, the query structure doesn’t change. That’s why a shop with a large price list gets the most out of the module — on a 200-product catalogue you won’t notice the difference.
Free version and Pro
The free version is a fully-featured filter: all facet types, honest counters, merging of duplicate values, numeric ranges, a price slider with the real bounds of the selection, applying without a reload, state in the URL, a mobile drawer. No time limits and no ads in the admin.
Pro adds filter SEO pages: you pick a filter combination worth promoting (“yellow cabinets”, “laptops under 30,000”), and it gets its own H1, title and human-readable URL. Every other combination stays under noindex,follow with a canonical pointing to the plain category.
This is the main difference from a “theme filter”: a controlled handful of landing pages for low-frequency queries, instead of either a million junk URLs in the index or no filter pages in search at all.
Price
A Pro licence costs 990 UAH, for one site. The licence is annual: once it expires the module keeps working, only updates and support stop. We don’t promise “forever” — WooCommerce changes its query structure from version to version, and a filter without updates will eventually drift out of sync with the core.
Technical requirements
WordPress 6.2 or newer, WooCommerce 6.0 or newer, PHP 7.4 or newer. Works with HPOS, classic category archives and the shop page.
There are no separate hosting requirements: the index is a single ordinary MySQL table — it doesn’t need Elasticsearch, Redis, or a separate search service.
Under the hood
Filtering is built into the main product query rather than replacing it with its own. That’s why the module stays compatible with themes that render the standard WooCommerce loop, and doesn’t conflict with pagination or sorting.
Price and stock are read from wc_product_meta_lookup — the same table WooCommerce uses to sort products. So there’s never a situation where the filter says “in stock” while sorting by price shows something else.
The index updates on product save events, so it only adds load exactly at the moment of editing, not via a background cron once an hour.
How to install
1. Upload the archive under “Plugins → Add New → Upload Plugin” and activate it.
2. Wait for the index to be built — on first run the module offers to do this with a single button.
3. In the settings, put together the set of facets for your catalogue and set their order.
4. Add the filter widget to the category sidebar, or insert it with a shortcode wherever you need it.
5. If you bought Pro, add SEO pages for the filter combinations people actually search for.
Version history
1.0.0 — first release. Facets by category, attributes, price, stock and rating; a dedicated index table; honest counters with an unrestricted own facet; merging of duplicate values and numeric sorting; a price slider with the current selection’s bounds; applying without a reload and filter state in the URL; a mobile drawer; compatibility with HPOS. In Pro — filter SEO pages with their own H1, title and URL, noindex,follow on the rest of the combinations, and no interference with the Yoast / Rank Math / AIOSEO canonical.
Frequently asked questions
Do I need to rewrite the theme?
No. The filter is built into the main product query, so it works with themes that render the standard WooCommerce loop. The widget goes into a widget area or a shortcode.
Will it hold up on a large catalogue?
The filter conditions run against the module's own flat "product → value" index, not against attribute and meta tables, so adding new facets doesn't slow the query.
What happens with duplicate values from supplier price lists?
They get merged into one value: instead of three checkboxes "12 V", "12v" and "12 V.", the shopper sees one.
Do the counters account for already-selected filters?
Yes. Its own facet isn't narrowed, though — after picking "Green", the shopper sees how many blue and red items there are and switches with one click.
Won't the filter clutter Google's index?
No. Only the combination you've made an SEO page for goes into the index; the rest return noindex,follow and a canonical to the category. If Yoast, Rank Math or AIOSEO is running, the canonical stays with them.
How many sites can one key activate?
One. The licence is annual: once it expires the module keeps working, only updates and support stop.
Questions about the module?
Message us on Telegram — we reply within the working day. We will help with setup, compatibility and key activation.
No reviews yet. Be the first — right below.
Leave a review
Reviews are moderated before publication, which usually takes up to 24 hours.
No questions yet. Ask one — we answer within 24 hours.
Ask a question
We usually reply within 24 hours during working hours.
Buying the module
—