Description
WooCommerce search runs through WordPress’s post search, which looks at titles and descriptions and has never heard of a SKU, a variation or a brand. This plugin replaces it with a dedicated, FULLTEXT-indexed table built for products, so a shopper gets a ranked dropdown of real purchasable items from the second character, instead of a page reload.
Everything below runs on your own server, on plain MySQL, and is free.
Search that knows what a product is
- Variations are first-class. Each variation is its own indexed row with its own SKU, price, attributes and stock status, inheriting the parent’s title and taxonomies. A search for a variation’s SKU opens that variation, not its parent.
- SKUs, categories, brands and tags are searched alongside titles and descriptions. There is a weight slider for each field, so you decide what “relevant” means in your catalogue.
- Out-of-stock handling follows WooCommerce’s own setting: show, hide, or push to the bottom.
- A dedicated index, never a live query. Searches never join
postsandpostmetaat request time, which is what keeps a large catalogue fast.
A dropdown shoppers recognise
- Instant results as they type, with the searched words highlighted.
- Recent searches: the shopper’s own, kept in their browser and never sent anywhere.
- Trending searches: what your shoppers actually search for, plus terms you promote yourself.
- Category and brand suggestions, linked to their archives.
- Query completions: searches other shoppers ran and got results for.
- Recent and trending laid out as a list or as pills, your choice under Suggestions. Pills fit more terms above the fold and show each recent search’s product picture.
- An optional category dropdown in the search box, and a takeover of the WooCommerce search results page so the ranked results survive the page load.
- Works without JavaScript: the box is a real product-search form first, enhanced second.
Placed and styled however you build pages
- A block (StoreBolt Product Search) with the full colour / typography / border / layout surface WooCommerce’s own Product Search block has, a shortcode (
[maswcas_search]), and a classic widget. - The dropdown itself is an editable template part built from blocks: re-order it, remove the price, or ship your own layout from a theme.
- Two dropdown designs, picked in the Site Editor like a header’s: Cascade, the classic one-column panel, or Showroom, a wide two-column card — recent and trending searches beside a grid of popular products before typing, and suggested searches, categories and brands beside the product rows and their prices while searching.
- Theme search enhancement, on out of the box: the instant dropdown attaches to the search box your theme already renders, with no block placement at all. If your theme ships a live search of its own, turn one of the two off. Settings Theme search has the switch, and names the theme when it recognises one.
Merchandising you control
- Product boosts: choose products to promote for particular searches. A boosted product is shown at the top of the results for those terms, including terms its own title and description would never match: a campaign name, “gift”, or something you are about to start stocking.
- Boosts apply the moment you save (no reindex), and they still obey your catalogue: a product that is hidden, unpublished, or out of stock on a store that hides those is not promoted.
A search dashboard, on every install
A daily rollup (not a log) of what shoppers searched for, what found nothing, and what was searched but never clicked, with one-click hand-offs into a synonym rule or your trending list. Nothing in that table identifies a shopper: no ID, no IP, no timestamp finer than the day.
Optional: StoreBolt hosted search
The plugin is complete on its own. If you want what MySQL structurally cannot do (typo tolerance, synonyms, faceting, and search served off your server), you can connect a paid StoreBolt subscription from the settings screen. Nothing is withheld from the free plugin to sell it, and if the hosted service is ever unreachable, search falls back to your local index automatically.
External services
Out of the box, this plugin makes no external requests. Everything below happens only after a merchant chooses to connect a StoreBolt account, and stops when they disconnect.
StoreBolt (api.storebolt.app) is the service that issues and validates your subscription.
- When: when you connect (or paste a license key), and once a day afterwards to keep the subscription status and expiry current.
- What is sent: your license key, your site URL, and an environment report covering the site name, WordPress / WooCommerce / PHP / plugin versions, locale, whether the site is multisite, the published product count, and which search engine is currently active. The environment report is filterable (
maswcas_vendor_environment); returning an empty array from that filter sends none of it. - Why: to return your store’s search connection, to tell you which stores are on which plan, and so support can tell what a store is running when something breaks.
Your StoreBolt search gateway is the host named in the connection your account returns.
- When: only while the hosted engine is the selected engine. “Keep the cache warm between shoppers” adds no destination: those requests go to your own store’s search endpoint, and reach the gateway only where a shopper’s search would have, which is when the answer is not already cached. What it changes is the timing, not the recipient.
- What is sent: the shopper’s search terms, and your indexed catalogue documents (product and variation titles, descriptions, SKUs, prices, stock status, visibility, attributes, categories, brands and tags) as they change. Images, permalinks and the prices a shopper is shown are resolved locally and never leave your store. No shopper identity, cookie or IP is attached by the plugin.
- Why: to answer searches with typo tolerance and synonyms, which the built-in MySQL engine cannot do.
StoreBolt analytics (api.storebolt.app) is the hosted half of the search dashboard.
- When: on a schedule (about every six hours) while connected to a plan that includes it.
- What is sent: your licence key, your site’s URL, its timezone and its store currency, together with your existing daily rollup rows. A row is the search term, the day, and the counters, which include the revenue attributed to that term where conversion measurement is on. These are the same rows the dashboard already shows you locally, and no shopper identity is stored in them to send.
- Why: so your history survives past the local 90-day retention window and can be read across several of your stores. The licence key identifies the account; the site URL, timezone and currency are what let the dashboard tell your stores apart and report their figures correctly.
Service terms: Terms of Service and Privacy Policy.
Source code and build
Everything that runs on your storefront is shipped as readable source. assets/js/ (the search box, the dropdown blocks, the block-editor script, the theme-search loader and the analytics beacon) is hand-written, commented, and unminified, and so is every PHP file under src/ and templates/. Nothing there is compiled, and nothing is fetched from anywhere at runtime.
One screen is built. The wp-admin settings app is a React application. Its source is the admin-src/ directory of this plugin, and it is compiled to assets/build/index.js, assets/build/index.css and assets/build/index-rtl.css. Both the source and the build configuration ship inside this plugin, so the compiled files can be regenerated and checked against their source without leaving the package:
cdinto the plugin directory (wp-content/plugins/storebolt-advanced-search-for-woocommerce).- Run
npm installto install the build tools declared inpackage.json(Node.js 18 or newer). - Run
npm run build, which rewritesassets/build/.
The build is @wordpress/scripts 27.9 (the official WordPress webpack and Babel configuration) with Tailwind CSS applied through PostCSS; postcss.config.js is the whole of the CSS configuration. npm start is the same build in watch mode. No build step is needed to install or run the plugin, because the compiled files are shipped.
Third-party libraries included in this plugin
- Tailwind CSS 4.3.3 (MIT) is a CSS framework. It is not shipped as a library: it is compiled at build time into
assets/build/index.cssandassets/build/index-rtl.css, which carry its licence header. Source: https://github.com/tailwindlabs/tailwindcss - automattic/jetpack-autoloader 6.0.1 (GPL-2.0-or-later) is a PHP class autoloader, shipped as readable PHP in
vendor/. It lets several plugins that share a library each load the newest copy of it rather than whichever loaded first. Installed with Composer fromcomposer.json. Source: https://github.com/Automattic/jetpack-autoloader
The admin app uses React, wp.apiFetch, wp.element and wp.i18n from WordPress’s own bundled copies (declared in assets/build/index.asset.php); no copy of React, jQuery, Lodash, Moment or any HTTP library is bundled into this plugin.
Screenshots







Blocks
This plugin provides 23 blocks.
- Result Details The stacked half of a result row — everything beside the image.
- No Results Message What the dropdown says when a search matched nothing.
- Search Suggestions Searches that complete what the shopper is typing, drawn from what other shoppers looked for and from your category names. Filled in the browser, so it appears from the first keystroke and stays put while results load.
- Popular Products A grid of the store's best-selling products, shown before the shopper has typed. Each card carries a sale or New badge, the name and the price.
- Search Dropdown The panel under the product search box. Holds the two views a shopper sees: suggestions before they have typed enough to search, and results once they have.
- Matching Categories Product categories whose names match the search, linked to their archives. Shown above the product results.
- Trending Searches What the store's shoppers are searching for. Resolved on the server and rendered into the page, so it is there the moment the box is focused.
- Recent Searches The shopper's own last few searches, read from their browser. The heading and the Clear button are rendered here; the rows are filled in by the search script.
- Result Image The product's thumbnail — the matched variation's own image when the search matched one.
- Result Rating The product's average review score. Renders nothing for a product nobody has reviewed.
- Result Stock Status WooCommerce's own availability line — in stock, on backorder, or out of stock.
- Result Title The product's name, with the words the shopper searched for marked.
- Result SKU The product's SKU, with the searched code marked. Renders nothing for a product that has none.
- Matching Brands Brands whose names match the search, linked to their archives. Shown above the product results.
- Search Tip A footer line before the shopper has typed: what the box searches, and the StoreBolt mark.
- Search Filters Refinement chips — categories and availability from the current results. Shown with hosted search; tapping one narrows the results in place.
- Result Price The product's price, rendered by WooCommerce so sale prices, ranges and tax display all follow the store's settings.
- Product Results The matching products. Whatever you put inside is one row, repeated for every result.
- Result Variation Which variation matched — "Size: Large, Colour: Red". Renders nothing when the match was a simple product.
- View All Results The link to the full results page, counting everything the dropdown could not fit.
- StoreBolt Product Search A fast product search box with instant results, powered by StoreBolt.
- Suggestions View What the dropdown shows before the shopper has typed enough to search. Rendered into the page with the box, so opening it costs no request.
- Results View What the dropdown shows once a search has run. Rendered per query by the search endpoint.
Installation
- Install and activate the plugin. WooCommerce must be active, since the plugin declares it as a required dependency.
- Go to StoreBolt in wp-admin. On activation the plugin creates its index table and queues a full index of your catalogue in the background; Settings Search index shows progress.
- The search box your theme already renders gets the instant dropdown on its own. Theme search is on by default, on every theme. If your theme ships a live search of its own, shoppers may see two dropdowns on one box: turn one of them off, under the theme’s own options or under Settings Theme search, which names the theme when it recognises one. To place a search box of your own, add the StoreBolt Product Search block (or the
[maswcas_search]shortcode, or the widget) wherever you want it. - Optional: connect a StoreBolt subscription from Settings Hosted search for typo tolerance and synonyms.
FAQ
-
Does it work without the paid service?
-
Yes, completely. The hosted subscription adds typo tolerance, synonyms and faceting, which plain MySQL cannot do. Nothing that MySQL can do is held back to sell you an upgrade.
-
Does it search posts, pages, or PDFs and other uploads?
-
No. This is product search. The index holds products and variations and nothing else, and the takeover of the search results page applies only to product searches. Searches for posts and pages go to WordPress’s own search exactly as before, so a general-purpose search plugin can run alongside this one without either fighting the other. Nothing inside a PDF, .docx or .xlsx is read or searched, wherever the file is stored.
-
Which product fields are searched? Can I add a custom field?
-
Title, short description and description, SKU, and the names of categories, brands, tags and attributes, each with its own weight slider. Price, stock status and visibility are indexed too, but to filter and order results rather than to match what a shopper typed. The field list is fixed, and no filter adds an arbitrary meta key to a document. Two lists are extendable, because stores legitimately keep that data elsewhere:
maswcas_brand_taxonomies(the taxonomies treated as brands, WooCommerce’s ownproduct_brandby default) andmaswcas_attribute_facet_taxonomies(the attribute taxonomies indexed for search and facets). -
Do I need to rebuild the index when products change?
-
No. Product, variation, stock and taxonomy changes are picked up automatically through background jobs (Action Scheduler, which WooCommerce already provides). The Rebuild index button under Settings Search index is there for the initial build and for after a large import.
-
Does it slow my store down?
-
Searches read one dedicated, FULLTEXT-indexed table and never join
posts/postmeta, so search cost does not grow with your catalogue the way the default search does. Indexing always happens in background jobs, never inside a product save. -
Is my shoppers’ search data personal data?
-
The analytics table stores a search term, a day, and counters. There is no ID, no IP, no session, and no timestamp finer than the day, so it cannot answer “who searched for this”. Terms that look like an email address, a credit card number (Luhn-checked) or a credential are dropped entirely rather than recorded. Conversion measurement, which is the one part that stores anything in a shopper’s browser, is off by default and additionally requires WooCommerce’s own tracking consent. Settings Privacy Policy Guide carries suggested policy text for the parts you do enable.
-
Can I customise the dropdown?
-
Yes. It is a template part (
product-search-dropdown) built from blocks, editable in the Site Editor on a block theme, or overridable from a theme file. If you already overridetemplates/search-dropdown.php, your override keeps working. -
What happens if the hosted service goes down?
-
Your local MySQL index stays the canonical copy and stays warm, so search falls back to it automatically. A hosted outage costs typo tolerance, not search.
-
Does it work on WordPress multisite?
-
Yes, per site. Each site in a network gets its own index table, its own settings and its own analytics; nothing is shared across the network and there is no network-wide settings screen. Network activation activates the plugin normally, and only skips the one-time setup redirect, which would otherwise hijack the screen reporting what happened to every site. On each site, open Settings Search index and use Rebuild if the index has not built.
-
Does it support High-Performance Order Storage (HPOS)?
-
Yes. The plugin declares compatibility and reads orders only through WooCommerce’s own CRUD.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“StoreBolt – Advanced Search for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “StoreBolt – Advanced Search for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
0.2.0
- Added: designs for the search dropdown. Open the Product Search Dropdown template part in the Site Editor and pick one under Design, the same way you pick a header. Showroom is a wide two-column card: before typing, recent and trending searches beside a grid of the store’s popular products with sale and New badges; while searching, suggested searches, categories (with product counts) and brands in a sidebar, the product rows with their prices beside them under a “Products” heading with the result count, and a footer with a keyboard legend. Showroom is now the default dropdown on block themes. Cascade is the one-column dropdown exactly as it was; pick it under Design to go back. Classic themes, which have no Site Editor to pick a design in, keep Cascade. A dropdown you had already edited in the Site Editor keeps its arrangement. Narrow screens fall back to one column.
- Improved: the Showroom’s sidebar is never left empty. When a search has no suggestions, categories or brands to put there (including a search that found no products), it shows your recent and trending searches instead.
- Added: three blocks for the dropdown template part — Popular Products (the store’s best sellers, shown before the shopper types), Search Tip (a footer line before typing, with an optional StoreBolt mark, off by default), and a heading with the result count on Product Results. The Recent Searches and Trending Searches blocks gained a per-block layout choice (rows or pills), so a design can shape each on its own.
- Improved: while a search is on its way, placeholder rows now hold the product list’s place beside the narrowed suggestions, instead of that space sitting empty until the rows arrive.
- Added: “Dim the page behind the dropdown” under Settings, Search box. Off by default; when on, the page below the search box is shaded while the dropdown is open, so the results stand out.
- Added: “Dropdown width” under Settings, Theme search. The dropdown under your theme’s search box can line up with the search field or span the whole search form, including its button and any category select. Automatic follows what the theme asks for through the new maswcas_theme_search_anchor filter.
- Added: a –maswcas-gap CSS custom property that puts space between the search box and the dropdown, for themes whose box has a shadow the panel would otherwise touch.
0.1.12
- Fixed: the search dropdown’s recent searches, trending searches and suggestions could be restyled by the theme into full-width, centred, uppercase buttons. Reported on Woodmart and Electro; any theme with a general button style could cause it. Those rows are no longer buttons, and the two controls that must be (“Clear” and the remove x) now resist theme button styling.
- Fixed: a theme’s list styling could space out, indent or bullet every row in the dropdown. The panel’s lists and rows now keep their own spacing whatever the theme does with lists.
- Fixed: on a theme with a dark mode the dropdown was unreadable — a white panel showing the theme’s light text. The panel now sets its own text colour, and follows the theme into dark mode: it matches the search box it drops from, so a dark store gets a dark dropdown. Reported on Electro. Every colour is a CSS custom property, so a merchant can override any of it from their own stylesheet.
- Fixed: on Woodmart, the search box showed two dropdowns at once — the theme’s own live search and StoreBolt’s. StoreBolt now switches the theme’s live search off for you while “Enhance the theme’s product search” is on, so there is one set of results. Turn that setting off and the theme’s search comes back exactly as it was.
0.1.11
- First release on WordPress.org: a dedicated product index covering products and variations, an instant dropdown with recent searches, trending searches, query completions and category and brand suggestions, a block, a shortcode and a widget, an editable dropdown template part, the theme-search attach mode, the results-page takeover, product boosts, search analytics with optional conversion measurement, a cache warmer, and the optional StoreBolt hosted engine with typo tolerance, synonyms and faceted refinement chips.
