Magento Category Merchandising: Stop Showing Products Customers Can't Buy

Magento category merchandising is the practice of ordering the products on a category page by what actually sells, rather than the fixed sort Magento gives you by default. Out of the box, a category lists products in position order or by name, with no regard for whether an item is in stock, in demand, or making you money. That's how sold-out and slow-moving products end up at the top of the page while your best sellers sit three rows down.
Why is the default Magento category sort a problem?
Because Magento's default sort is static and stock-blind. A shopper landing on a category sees products in whatever order the position field or an alphabetical sort dictates, and that order doesn't change when an item sells out, when demand shifts, or when a product stops earning margin. So the most valuable real estate on the page - the first row - gets handed out by accident.
The visible symptoms are familiar. Out-of-stock products sitting at the top with a greyed-out button. A discontinued line lingering above this season's range. Ten near-identical variants crowding out everything else. None of these are bugs; they're the default sort doing exactly what it was told, which is nothing.
What signals should decide category order?
Good merchandising ranks products on a blend of signals, not a single field. The three that matter most are availability (can the shopper buy it right now), behaviour (are people viewing, adding, and buying it), and performance (is it selling and earning). Combine those into one score and the sort starts reflecting reality instead of a spreadsheet from launch day.

Availability should carry the most weight, because a top-of-page product nobody can buy is a wasted slot regardless of how good it is. Behaviour signals work best when they decay over time, so a spike from last quarter doesn't keep a product pinned to the top for months. Performance signals - sales velocity, and margin if you track cost - stop the page rewarding cheap high-volume items that make no money.
How this applies to Magento 2
Magento 2 gives you position-based sorting on categories and, in the paid Adobe Commerce tier, a Visual Merchandiser that can apply some automatic sort rules. Magento Open Source has neither the automatic rules nor stock-aware sorting - you either drag products into position by hand or accept the static default. On a catalogue of any size, hand-positioning every category every time stock changes isn't realistic, so most Open Source stores never do it.
The practical Magento merchandising plan is: keep in-stock products above out-of-stock ones automatically, let genuine demand influence the order without letting one old spike dominate, and factor in margin if you have cost data - without turning the whole thing into a manual weekly chore.
Where Moogento helps
Smartlistings re-sorts category listings by a composite score instead of the static default. The score blends three inputs: availability, shopper behaviour (views, add-to-carts, and purchases, weighted so recent activity counts for more and older activity fades on a seven-day half-life), and sales performance. A separate stock rule can push out-of-stock products to the bottom of the grid, so buyable items always lead, and low-stock products can be penalised so you're not steering everyone at the last three units. Merchants can also pin specific products with manual boost records where a human call beats the algorithm - a new launch you want featured, say.
A couple of limits to know going in. The performance signal uses a sales and profit-velocity rate rather than a true margin percentage, and the margin side only lights up when ProfitEasy is present to supply cost data. There's no "sort by product age" signal, and boosting is done through per-product records, not a Magento-style conditions builder. If you want strict rule logic ("show products over 20% margin first"), that's not how it works - it's a scoring model you tune with weights, not a rules engine.
For the inventory side of merchandising, StockEasy handles the reorder question the sort exposes: once demand data shows what shoppers keep reaching for, StockEasy's reorder forecasting (four calculation models, per-product lead times, and low-stock email reports) tells you what to buy so the good products don't keep selling out and dropping down the grid in the first place.
Category merchandising audit framework
| Check | Weak | Strong |
|---|---|---|
| Stock in sort | Out-of-stock items at the top | Buyable products lead, sold-out sink |
| Demand awareness | Same order all year | Order shifts with recent interest |
| Margin awareness | Cheapest high-volume up top | Profitable lines get a fair share of the top rows |
| Duplicates | Near-identical variants crowd row one | One representative product per variant group |
| Manual control | All-or-nothing hand positioning | Automatic sort with manual pins where needed |
| Maintenance | Someone re-drags positions weekly | Sort updates itself as data changes |

FAQ
Can Magento sort category products by stock status automatically?
Not in Magento Open Source out of the box - the default is position or attribute-based sorting that ignores stock. Adobe Commerce has a Visual Merchandiser with some rule support. To push out-of-stock products to the bottom automatically on any Magento tier, you need a merchandising module such as Smartlistings.
Should out-of-stock products be hidden from category pages?
Usually demote rather than hide. Keeping the page live preserves SEO value and lets you capture back-in-stock demand, but the sold-out product shouldn't occupy a top slot. Pushing out-of-stock items to the bottom of the grid keeps the URL alive while giving the best real estate to products people can buy.
Does sorting by margin make sense on a category page?
As one signal among several, yes; as the only one, no. A pure margin sort can bury popular products a shopper came for. The better approach blends availability, demand, and margin so the page stays useful to the customer while still favouring products that earn. Margin sorting needs product cost data, which Magento stores in the cost attribute.
How often should category sort order update?
Often enough to reflect current stock and demand, which for most stores means continuously rather than on a manual schedule. The point of a scored sort is that it recalculates as data changes, so you're not relying on someone remembering to re-position tiles after every delivery or stockout.
Start with the worst offender: your highest-traffic category. Load it as a shopper and count how many of the first eight products are actually in stock. If it's not eight, your best page is spending its best space on things nobody can buy.



