What’s new in StoreMaster — the features, improvements and fixes we ship, newest first.
Releases go out as soon as they’re ready — sometimes several in a day, sometimes a quiet week. Every entry below shipped to production.
When something goes wrong, the safe answer
Two places in StoreMaster answered a failure by guessing, and both guessed in the direction that costs you money or shows someone a product you had hidden. Neither guesses any more.
No released version of StoreMaster was affected — this is the third release and the plugin is not yet on wordpress.org — so there is nothing to patch on a live store. It is written up plainly here rather than folded into a vague line, because the reasoning is the useful part.
A hidden product stays hidden, even when something breaks
Protected catalogues decide, for every product, whether the person looking is allowed to see it. That decision reads your access rules from the database. If that read failed — a database hiccup, another plugin throwing inside a filter StoreMaster had to go through — the answer that came back was an empty list of rules. An empty list is indistinguishable from "this shop has no access rules", so the product was shown.
Now a failed read is treated as what it is: not knowing. A product nobody can vouch for is denied, exactly as if it were protected, and the store's health check goes critical so you find out. The rule is simple: StoreMaster will show a customer a product it can confirm they may see, and nothing else.
There is a new setting for what your listings do meanwhile, under access settings. By default, category listings and sitemaps are withheld while the access rules cannot be read — the safest answer, because a listing built from rules nobody could load might contain anything. If you would rather your shop keep listing products through a wobble and rely on the per-product check, you can choose that instead.
A paid option is never accidentally free
If you sell made-to-order products priced by a formula — a price per square metre from a width and a height, say — a customer could type a value the formula could not survive. Zero into a width that another figure is divided by is the obvious one.
The formula failed, the failure was logged, and the option contributed nothing. The basket accepted it. The customer got the paid option for free.
Now the line is refused, with a message naming the field, and the product is not added to the basket until the values make sense. Refusing a sale you cannot price is better than making one you priced at nothing.
Only the modes that genuinely need it are affected: a formula that never mentions the product's own price still works even if that price cannot be read, because it does not depend on it.
Fixes & improvements
- A pricing, quantity or lead-time rule that cannot be read from the database no longer reads as "no rule exists". Rules that cannot be loaded simply do not apply, which leaves your prices alone — StoreMaster will never discount a product because it failed to read something.
- Site health and the price simulator now report a database problem as a problem, instead of failing silently.
- A withdrawn or archived rule that failed to save now says so, rather than reporting success.
A verified WooCommerce minimum
StoreMaster now states WooCommerce 9.8 as its minimum, rather than 9.0. This is a correction to a claim, not a change to what the plugin does — nothing here needs a newer WooCommerce than it did yesterday.
Why the number moved up
WooCommerce 9.0 is only tested by WooCommerce itself as far as WordPress 6.5, which is below StoreMaster's own WordPress minimum of 6.6. So "WordPress 6.6 with WooCommerce 9.0" was a pairing nobody had verified, including us.
WooCommerce 9.8 is the newest release that still supports WordPress 6.6, so it is the oldest pairing that can actually be run and checked. Every test run now includes WordPress 6.6 with WooCommerce 9.8 alongside the current versions, and the build refuses to ship if the stated minimum and the tested minimum ever disagree again.
If you are on WooCommerce 9.0 to 9.7, StoreMaster has not stopped working for you — it is simply no longer claiming to have been tested there.
Fixes & improvements
- Removed a redundant query setting from four internal lookups. No change to what any of them return; it was flagged by the WordPress.org plugin checker.
The Pro edition — wholesale, bulk ordering and quotes
Everything in StoreMaster's free edition is still free and still works the same way. Pro adds twenty-three more modules, switched on individually from the same control centre, for shops that sell to trade customers, sell configurable products, or need their catalogue to do more than list things one at a time.
Sell to trade customers
Wholesale pricing gives each customer role its own prices — a tier table, a percentage off, or a fixed trade price per product — resolved through the same single price pipeline as everything else, so the control centre can still tell you exactly why a customer saw the number they saw.
Wholesale registration turns trade sign-ups into an application you approve rather than an account that appears. Purchase orders let an approved customer check out against a PO number instead of paying immediately, and the number travels with the order. Protected catalogues hide products, whole categories or the entire shop from anyone who should not see them — and a customer who may not see a product gets the same answer as one asking for a product that does not exist, because anything else is a way to enumerate your catalogue.
Quotes and offers handle the conversation before the sale: a customer requests a price, you send back an offer with your own figures and an expiry, and accepting it converts the offer into a real order without re-keying it.
Buy in bulk without a page load per item
Product tables turn a category into a rapid order form — a sortable, searchable grid with quantity boxes and one add-to-basket for the lot. Variation matrix does the same inside a single variable product, so a customer ordering six sizes in three colours fills in a grid instead of eighteen separate trips through a dropdown.
Catalogue filters run off a maintained index rather than live product queries, so filtering a large catalogue stays quick. Fast cart shows the basket in a drawer beside the shop instead of sending the customer away from it.
Configurable products, priced properly
Product options adds the fields a made-to-order product needs — text, choices, uploads, dates — with per-option charges, and price formulas for the ones that are calculated rather than listed, such as a price per square metre from a width and a height the customer types in. Live preview draws the customer's choices back to them as they make them, and stores what they chose rather than what it cost, so a withdrawn option disappears instead of leaving yesterday's price on somebody's page.
The rest of the Pro modules
- Advanced discounts — unlimited campaigns, plus tiered, volume, bundle and buy-one-get-one shapes.
- Advanced quantity rules — rules at variation, customer-role and whole-basket scope, including order-value minimums.
- Order routing — split an order across suppliers or branches and notify each one about its own part.
- Document branding — your logo and details on invoices and packing slips, credit notes that supersede rather than edit, and printing a day's documents in one go. These are technical records of what was ordered, not tax or legal documents.
- Order desk — a working view of orders with filters, bulk actions, exports and a human-readable order reference.
- Back-in-stock alerts — customers ask to be told, and are told once, when something returns.
- Saved lists — wishlists and comparison lists that store what was chosen and price it when it is shown.
- Cart recovery — a link that restores an abandoned basket, storing the products rather than the prices.
- Opening hours — take the shop off sale outside your trading hours, with a message that says when you are back.
- Promotion analytics — what each campaign actually did to revenue.
- Configuration import — apply a configuration exported from another site, with a dry run first that shows every change before you commit to it.
- Webhooks — signed, retried event delivery to another system.
Fixes & improvements
- The basket and checkout no longer fail on stores using the block-based cart and checkout when quantity rules are switched on.
- An extra checkout field now appears on classic checkout as well as the block checkout, and reliably registers on every request rather than only on some.
- Quantity rules set on a specific variation now match that variation's attributes regardless of how they were capitalised.
- Lead-time rules with an impossible date, such as the 45th of month 13, are now rejected when you save them rather than accepted and ignored.
- Security and reliability improvements.
StoreMaster is here — eleven modules, one plugin
StoreMaster replaces a shelf of single-purpose WooCommerce plugins with one install, one update and one control centre. Every capability is a module you switch on individually, and a module that is off registers nothing at all — no hooks, no queries, no scripts on your storefront.
Turn on only what your shop needs
Open StoreMaster → Modules. Each card tells you what the module does, what it adds to a storefront request, and what depends on it — before you enable it. When you make a change, you see the exact list of affected behaviours and confirm it. Nothing happens to your shop until you do.
If you ever need to know whether StoreMaster is involved in a problem, safe mode stops every module running on the storefront while leaving your settings exactly as they are.
Eleven modules in the free edition
- Product tabs — unlimited reusable or product-specific tabs with full block content, plus rename, reorder or hide WooCommerce's own tabs. Content is in the page source, so screen readers and search engines see it.
- Quantity rules — minimum, maximum, step and default quantities by product or category, enforced on the product page, the basket, checkout and the Store API, with a message that tells the customer what to change.
- Discounts — a scheduled percentage or fixed-amount campaign with the previous price struck through and the saving shown.
- Lead times — say when an item will actually ship, everywhere a customer meets it. The promise shown at purchase is recorded on the order and does not change when you later edit the rule.
- Quick view — an accessible modal so shoppers can look at a product without leaving the listing. Keyboard-complete and focus-trapped, not just a box.
- Product search — an accessible autocomplete over names and SKUs, with a real results page behind it that works without JavaScript.
- Checkout fields — one extra field through WooCommerce's own field API, so it behaves identically on classic and Blocks checkout.
- Extra order emails — copy a second address on the order emails you choose, recorded on the order so a later account change does not rewrite history.
- Invoices and packing slips — numbered, immutable once issued, and downloadable by the customer from their account.
- Configuration export — a signed, secret-free copy of your setup, for review, staging or a rollback.
- Diagnostics — health checks, an overlap scan for plugins that do the same job, and a support bundle that lists every field before it is generated.
Built on decisions, not defaults
Every price runs through one fixed pipeline, so the control centre can tell you exactly why a customer saw the number they saw. Money is never a floating-point value. Orders are read and written only through WooCommerce's own data layer, so high-performance order storage works. Nothing phones home: no telemetry, no analytics, no external service.
Fixes & improvements
- First release.