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.
Hosting image serves the site again
Internal: a correction to yesterday's hosting-image change, which fixed the web server but stopped WordPress being copied into place. Nothing about the plugin or the site changes.
Hosting image starts reliably
Internal: the production hosting image now pins its web server configuration at container start rather than only when the image is built. Nothing about the plugin or the site changes.
Every link on the site goes somewhere
Site housekeeping, before it is ever live.
The knowledge-base search offered "explore the live demo" when it found no results — a link to a page this site has never had, shown at the exact moment somebody had already failed to find what they were looking for. That, and the demo page machinery behind it, belonged to a different product and has been removed; every visitor was downloading its stylesheet and its script on every page.
A check now renders the whole site before each release and follows every link on it. A page that leads nowhere fails the build.
Every link on this site goes somewhere
Housekeeping on the site itself, before it is ever live.
The pricing page's buy buttons pointed at a checkout that does not exist yet — a link to a product page that would have returned "not found" at the exact moment somebody tried to buy. They now say Available at launch until there is something to sell, and the moment there is, every button becomes real without another edit.
The pricing page also carried an error that would have stopped it loading at all. It has been fixed, and a check now runs before every deploy so a page on this site cannot ship with a link or a setting that has not been filled in.
Nothing else changed. Prices, plans and what each tier contains are exactly as they were: $0 / $49 / $199 / $349, and renewals never increase.
Get started stopped working if you use opening hours
Opening the Get started screen showed "There has been a critical error on this website" for any shop with the opening-hours module switched on. The screen asks every module whether its setup step is finished, and that module's answer referred to a setting name that does not exist — enough to stop the whole page loading on modern PHP.
Fixed, and two checks now stand behind it: one that refuses to build if any code refers to a name that was never defined, and one that turns on every module and loads every screen, so a module that breaks a shared screen fails the build rather than a merchant's morning.
What a subscription buys, and what it never takes away
StoreMaster Pro is a subscription. While it is active you can configure everything, and you get updates and support. If it lapses, StoreMaster becomes read-only.
Your shop is not touched. Every rule, price, trade tier, quantity limit, protected catalogue and document setting you have already saved keeps running exactly as it was. Nothing is switched off, nothing is deleted, and no customer sees a different price because of a billing date.
What stops is your ability to *change* things — and updates and support. You can still see everything, export your whole configuration, and run diagnostics. You can also still turn modules off, because being unable to stop paying for something you no longer want would be absurd.
Renew and you pick up exactly where you left off.
We considered the more common approach — premium features simply stop on expiry — and decided against it for this plugin specifically. StoreMaster sets prices and hides products. "Features stop" would mean wholesale customers seeing retail prices, and private catalogues going public, on the morning a card expires. That is damage to your business over a payment reminder you may not have read yet, and it is not a reasonable thing for us to do to you.
The free edition is unchanged: no account, no key, nothing to unlock, and nothing in it has ever depended on a licence.
The menu did not open anything
Every StoreMaster item in the WordPress sidebar — Rules, Settings, Quotes, Webhooks, Product options, all seventeen of them — answered "Sorry, you are not allowed to access this page", to administrators included. Only Overview and Modules worked. Every screen was fine once you reached it; the links to them were built wrong.
They work now, and a check runs before every release that opens each one as an administrator and fails the build if any is refused.
We then drove the ten screens nobody had tested by hand, the way you use them — clicking the real controls against a real shop — and fixed twenty-four things. The ones you would have noticed:
Live preview saved your areas onto whatever product number happened to be in the box, not the product you loaded. Change the number without pressing Load and another product's design was overwritten. It now saves to the product on screen, and says which one that is.
Quotes kept the previous customer's prices, terms and your private notes when you opened the next quote — so publishing an offer could send one customer another customer's figures. Each quote now opens its own form. "Publish this offer" also appeared on quotes that cannot be offered yet, where it could only fail; you are now shown the steps that will actually work. Creating an order from a quote tells you the order number. The list can be filtered by status and paged, so a quote older than your fiftieth is reachable again. And "Days an offer stays open" is finally read — every offer used to expire in thirty days whatever you had set.
Wholesale tiers: "Show prices" now does something. A trade tier set to exclude tax shows prices that way throughout the shop and the cart. Renaming a tier renames the role everywhere else in WordPress too.
Catalogue index: if the background job was ever lost, the only button on the screen disabled itself for good and the index could never be built again. A stalled build can now be started again, the page follows a running one, and it no longer claims to have started a rebuild that it did not.
Webhooks told you every delivery had arrived while deliveries were still queued. Failed deliveries now show why they failed and where they were going, and one whose endpoint you have since deleted says so rather than offering a retry that cannot work.
Import / export: a failed export was shown inside the export box, so you could copy an error message and keep it as your backup. An import that applied none of its rules reported complete success. The preview promised to turn on modules your edition does not have, and to turn off modules importing never touches.
Diagnostics can now produce the support bundle it has always been able to build — with a preview of every field first, and any part you would rather not send left out.
Blueprints described themselves in internal names and, once applied, said only "Done." — throwing away the list of what was still yours to do.
Eight controls that looked fine and did nothing
We drove every screen in the control centre the way you use it — clicking the real buttons against a real shop — and found eight places where a control looked healthy and could not do its job. All eight are fixed.
The Order desk's Search button never searched. Clicking it threw an error in your browser before any request was sent. The screen looked fine on arrival, because loading the list took a different path; the moment you filtered, it failed.
The rule editor's Check step only worked on price rules. On the quantity and delivery tabs it answered with a message about prices, to somebody who had not asked about a price. Quantity rules can now be checked properly — against the same evaluator your cart runs — and a kind of rule that nothing can preview says so instead of offering a button that cannot work.
A module with two kinds of rule only ever made the first kind. There was no control to choose, so the second engine's rules could not be created at all. The editor now asks, where there is a choice to make.
Checkout fields offered a dropdown you could never save. A list field needs its choices and there was nowhere to enter any. There is now — and a field whose name is written in Greek, Cyrillic, Chinese or Arabic can be saved, which it could not before.
"As this customer" only offered customers. Every wholesale and trade tier was missing from the picker — the one kind of shopper whose price most needs checking.
The promotions report showed nothing sold. Every campaign's order value read zero however much it had actually taken.
The webhook "Never arrived" list did not say where. The column meant to name the system that missed a delivery was blank on every row.
Product tables offered a sort order they did not honour, and hid one they did. The menu is now built from what the server will actually do.
Two more, quieter: importing a configuration that carries only which modules to switch on was previewed as applicable and then refused; and turning on a module that depends on another asked you to confirm a change the server had already decided it would not make, then reported a failure without the reason.
Directions that lead somewhere
When StoreMaster tells you where to go, it now has to be somewhere that exists.
The product editor's live preview box said *"Add them through StoreMaster → Products"*. There has never been a Products item in the StoreMaster menu. Preview areas are set up under StoreMaster → Live preview, and the box says so.
This is the third time a sentence has outlived the screen it named — a health check sent you to a Catalogue index screen that did not exist yet, and a menu item pointed at a Products screen that never did. Every such direction inside StoreMaster is now checked against the real menu before a release can ship, so a screen cannot be renamed or removed while something still points at it.
Explain works, and answers in words
It was never working
Every button on the Explain screen failed. All three — price, quantity, access — sent the quantity as a number where StoreMaster expects it written out, and got an error back. That has been true for as long as the screen has existed.
Fixed. If you tried Explain before and concluded it was broken, it was.
Quantity, in words
Asking about quantity rules returned a data structure listing a minimum, a maximum, a step, a base and a default, and left you to work out what it meant.
It now says what a customer can actually do: *"They can order at least 5, in multiples of 5."* Or, where nothing constrains a product, *"Any quantity — no rule constrains this product."* It lists which of your rules produced that, so you know where to go and change it.
When two of your rules contradict each other — one demanding a minimum higher than another's maximum — it says so plainly, because that is a state only you can resolve.
Access, in words
Asking who may see a product returned "reason": "no_policy". It now says No access rule covers this, so it is public — and, where something is hidden, what the customer would be told, and which rules were considered.
If StoreMaster ever cannot read your access rules it refuses rather than guesses, and this now says exactly that, in words, rather than as a code.
Fixes & improvements
- Amounts and quantities on this screen use your shop's own formats.
Why that price, in words
The Explain screen answers the most important question StoreMaster can be asked: why did this customer see that price? It answered in JSON — the raw data structure, in a box you could not edit, exactly as the code holds it.
The rule editor had been answering the same question, from the identical response, as a readable list the whole time.
One answer, one way of saying it
Explain now shows what the rule editor shows: what the price started at, each thing that changed it and by how much, and what the customer would pay — in your shop's own money format.
Both screens share one renderer, so they cannot describe the same answer differently.
It also stops leading with our internal name for each step. A stage that said role_price now says Customer or wholesale role price; a discount says what the rule actually does — *10% off orders of 5 or more*. Those descriptions were always in the answer; nothing was showing them.
The raw answer is still there
Behind Show the raw answer, for when you want to send us exactly what StoreMaster said. It remains the only view for the quantity and access simulations: their answers have no plain-English renderer yet, and a half-right one would be worse than showing you the truth plainly.
Every menu, in your words
Following the order statuses and application statuses corrected earlier, a sweep found the same problem in every menu of the product options and product table editors — they were showing the names StoreMaster stores rather than the ones you would use.
Options
Choosing how an option changes the price offered none / flat / per_unit / per_character / percentage / customer / formula. It now offers:
- It does not change the price
- Adds a fixed amount
- Adds an amount for each item ordered
- Adds an amount for each character typed
- Adds a percentage of the product price
- The customer names the amount
- Worked out by a formula
The kinds of question you can ask now read as questions — *A line of text*, *A colour swatch*, *A heading (asks nothing)* — and how a group is shown reads as *All on the product page* or *One step at a time*.
Product tables
Sorting offered menu_order. It now says *The order you set in WooCommerce*. Statuses say what they mean: *Published — live on your shop*, *Draft — not on your shop yet*.
Live preview
The shapes you can draw were rect / circle / polygon and what a customer may do to an image was move / scale / rotate. They now read as *A rectangle*, *A custom shape*, *Move it*, *Resize it*.
Fixes & improvements
- The option editor no longer keeps its own copy of which question types and price modes exist. It asks StoreMaster, so the two can never disagree — and a kind of option added in a future release appears without the editor needing to be changed.
Your words, not ours
Three places showed you the names StoreMaster uses internally rather than the ones you use.
Order statuses read like WooCommerce
The Order desk's status filter offered on-hold. It now offers On hold, named exactly as WooCommerce names it everywhere else in your admin — because it now asks WooCommerce rather than keeping its own list.
That list was six statuses written into StoreMaster. If another plugin added a status to your shop, you could not filter by it at all. Now every status your shop actually has is there, including ones StoreMaster had never heard of.
Trade applications read like a to-do list
The filter offered pending / approved / rejected / suspended. It now offers Waiting for you / Approved / Declined / Suspended.
Your overview is about your shop
It reported *"Capability domains live: core, D2, D5, D1, D3, D6, D4, D7"* — section numbers from our own specification, on the first screen you see. It told you nothing you could act on and it is gone. The count above it — how many capabilities are running out of how many exist — was always the useful half.
Fixes & improvements
- A link to a screen whose address merely starts with another screen's address no longer opens the wrong one.
One plugin that behaves like one plugin
Four things a merchant would each report separately turned out to be the same gap, and they are fixed together.
Your money, written your way
StoreMaster quoted your shop's money three different ways, none of them matching the WooCommerce screen one click away. One place printed a raw decimal with the currency code after it; another printed the number alone.
Every amount now uses your shop's own format — your symbol, where you put it, your decimal and thousands separators, your number of decimal places — read from WooCommerce rather than guessed at. If you write prices as 1.234,56 €, so does StoreMaster.
Empty is not broken
A list with nothing in it drew its column headings and nothing else, which is exactly what a failed request looks like. Quotes read as the single run-together word *ReferenceCustomerStatusTotalUpdated*.
Empty lists now say what would appear there and how it gets there. Your quotes screen with no quotes explains what a quote is.
One rule about which buttons are safe
Deleting a product table destroyed it on the first click, while archiving a rule asked first — so there was no way to learn which buttons were safe except by losing something.
Every action that cannot be undone now asks, names what it is about to remove, and is styled as destructive. Deleting a product table tells you the pages using its shortcode will stop showing a table.
Things we said that were not true
StoreMaster described the catalogue filters and fast search as blocks. They are shortcodes; the plugin has never registered a block. The wording is corrected everywhere it appeared, including the documentation.
The Saved lists module was telling you to paste [storemaster_lists], which does not exist. The real shortcodes are [storemaster_list] and [storemaster_compare], and a check now refuses to ship a shortcode we do not register.
Fixes & improvements
- The Quotes list headed a column Updated and showed when the quote was requested. It now says Requested.
- The Order desk says when a status filter is why you are seeing nothing.
Getting started remembers what you have done
Getting started ends by telling you what is left to you — create a trade tier, build the catalogue index, write the access rule that closes your catalogue. It told you the same things every time, whether you had done them or not.
A checklist that never changes is one you stop reading, and it still looks like guidance while you ignore it.
It checks
Each step now knows whether your shop already has it. A step you have finished stays on the list with a tick rather than disappearing — seeing what you have done is most of what makes a checklist worth opening — and only what is genuinely outstanding is offered as something to go and do.
A step that needs a capability this build does not include, or one you have switched off, says so plainly instead of linking you to a screen that is not there.
If everything on the list is done, it says that too.
It picks up where you left off
Come back to Getting started after setting something up and it no longer asks what you are setting up as though nothing had happened. It shows the rest of your list first, and offers to set up something else underneath.
Fixes & improvements
- StoreMaster never reports a step as finished when it could not check. A database it could not read means "still to do", not "done" — the direction that might nag you, rather than the one that tells you your shop is ready when it is not.