Skip to content

Shelf space optimization with space-to-sales

Space allocations are inherited, not decided

Most planograms are the previous planogram with adjustments. Canned vegetables at our 62-store operator hold 68% more facings than their sales earn, and nobody alive decided that: shelf space optimization rarely starts from a blank shelf, and the allocations that exist today were mostly set by a category that mattered more five years ago, a supplier who pushed harder in a particular year, or a fixture layout nobody has revisited. The result is a shelf where space and sales have quietly decoupled.

The measurement that exposes this is a space-to-sales index: shelf share divided by dollar share, times 100. An index of 100 means a category holds exactly the share of space its sales earn. Above 100 is over-spaced, below is starved.

Refrigerated salsa71Yogurt88Packaged bread104Shelf-stable broth143Canned vegetables168
Index 100 = shelf share equals dollar share. Canned vegetables hold 68% more facings than their sales earn; refrigerated salsa is starved at 71.

Canned vegetables hold 68% more facings than their sales earn. Refrigerated salsa is running at 71, meaning it is generating dollar share well above its space share and is almost certainly losing sales to out-of-stocks between deliveries. Neither of those numbers was decided by anyone. They accumulated.

The naive fix is wrong

The obvious response is to move every category to an index of 100. It is also the single most common way a space reset destroys value, and it fails for three reasons that are worth being precise about.

Demand is not linear in facings. Doubling facings on an item does not double its sales. The response curve is steeply concave: the first facing captures most of the availability benefit, the second captures a fraction of that, and beyond four or five facings the marginal facing on a typical grocery item adds almost nothing except reduced restocking labor. Reallocating space to an index assumes a linear response that does not exist.

Some categories need space for reasons other than rate of sale. A category with 40 SKUs needs a minimum presentation regardless of its dollar share, because below one facing per SKU you are not merchandising the range, you are hiding it. Bulky items need cubic space their dollar share does not justify. And a category that anchors a shopping mission earns space its own sales line does not capture.

Margin is not uniform. Space-to-sales indexes on dollars. Two categories at identical dollar share and very different margin rates should not hold identical space, and a dollar-based index will happily equalize them.

A better target than 100

Index on gross margin dollars rather than sales dollars, then apply the response curve rather than the index directly.

space-to-margin index = (facing share) / (gross margin $ share) x 100

That single change fixes the third objection outright and usually reorders the list. Applied at our 62-store operator, the two flagged categories separate: canned vegetables stays badly over-spaced on both measures, while shelf-stable broth moves from 143 on sales to about 118 on margin, because its margin rate runs materially above the department average. Still over-spaced, but no longer the top priority, and a reset that had treated the two identically would have been wrong about one of them.

Then move space in bounded steps rather than to the target. A category at 168 does not go to 100 in one reset. Take it to roughly 140, watch what happens to its sales and to the categories that gained the space, and go again next cycle. The concave response curve means that most of the value is captured in the first move, and a bounded step protects you from the cases where the index was misleading.

Where the space should go

Removing space from an over-spaced category only pays if the space goes somewhere better, and "somewhere better" has a specific meaning.

DestinationWhen it is rightExpected return
Starved category (index under 85)Availability is the constraint, evidenced by out-of-stocksHighest, and measurable
Additional facings on winnersTop-decile items running tight between deliveriesHigh
New segment or attributeA genuine gap in the rangeSpeculative but real
More SKUs in the same categoryRarely, and only if the tail is genuinely absentUsually negative

The bottom row is the trap. When space is freed, the reflex is to broaden the range, and range breadth is what created the over-spacing in the first place. The assortment work is clear that adding a duplicate of an existing seller mostly moves volume around while adding an order line and a planogram position. Freed space should default to facings on proven items, not to new items.

Refrigerated salsa at index 71 is the textbook destination here: the category is already over-delivering on the space it has, which is exactly the signal that availability rather than demand is the binding constraint.

Confirming the constraint before you move

Before treating a low index as a starved category, confirm the mechanism, because a low index has two possible causes and only one of them is fixed by space.

If the category is running out between deliveries, more facings help directly: more units on the shelf means fewer hours out of stock. If the category is turning fast but never actually empty, the low index just means it is efficient, and giving it more space will lower its index without raising its sales.

The distinguishing evidence is on-shelf availability measured between delivery days. A category that shows availability dips in the 24 hours before a delivery is space-constrained. One that holds availability throughout is simply productive, and should keep its efficiency rather than being fattened toward an index target.

This matters because the two look identical on a space-to-sales report, and resets that get it wrong spend real space to buy nothing.

The fixture constraint shelf space optimization ignores

Shelf space optimization on paper assumes space is fungible. It is not. Frozen space cannot become ambient center-store space, a top shelf is not equivalent to an eye-level shelf, and a four-foot section cannot be split into pieces that do not match the fixture's shelf increments.

Three practical consequences. Reallocations should be scoped within a temperature zone and usually within a fixture run, which means the index should be computed within those boundaries rather than across the whole store. Vertical position matters as much as linear feet, so a category that keeps its footage but loses eye level has lost space in every way that counts. And the smallest movable unit is typically a facing or a shelf, not a percentage, so an index target of 118 has to resolve to an integer number of facings before it means anything.

Chains that skip this produce reset plans that cannot be executed, and the store teams then improvise, which puts you back to inherited allocations within two cycles.

Reading the response curve you actually have

The concave facing-response curve is usually asserted rather than measured, which means most space decisions rest on a shape nobody has verified for their own categories. It is measurable, and measuring it changes how confidently you can move space.

The natural experiment already exists in any chain with format variation. The same item carries different facing counts across store clusters, and those stores have different rates of sale. Controlling for store volume and shopper demographics is imperfect, but the shape emerges clearly enough to be useful: for most center-store categories the second facing adds materially less than the first, the third adds little, and beyond four the curve is close to flat except for restocking labor.

Where it does not flatten is the interesting finding. High-velocity items in categories with infrequent delivery keep responding to facings well past the point where the category average flattens, because for those items facings are functioning as inventory rather than as visibility. That distinction tells you something a space-to-sales index cannot: whether a category wants space for presence or for cover.

Categories that want space for cover are better served by a delivery-frequency change than by a reset, and that is usually cheaper. Categories that want space for presence are the ones where a reset earns its cost.

Sequencing a reset across 62 stores

A reset that is correct on paper and executed unevenly produces worse data than no reset, because the post-reset read is then a blend of stores that implemented and stores that did not.

Pilot in a small cluster first, ideally six to ten stores spanning both formats, and hold the rest as a control. Two things come out of the pilot that the analysis cannot produce: whether the plan is physically executable on the actual fixtures, and what the realistic compliance rate is. Both are common reasons a reset underdelivers, and both are invisible until someone tries it.

Then roll out with a compliance check rather than an announcement. A photo audit or a facing count on a sample of stores two weeks after reset tells you whether you are measuring the plan or measuring something else. Chains that skip this routinely conclude that a reset did not work when what actually happened is that 40% of stores never fully implemented it.

One number to watch afterwards

The cleanest single read on whether a space reset worked is the change in availability on the categories that gained space, measured in the hours before a delivery rather than as a daily average. That is where a space-constrained category was failing, and it is where added facings should show up first. If availability in that window did not improve, the category was never space-constrained and the space should go back.

Doing this in Scout

The index itself is easy arithmetic. What makes shelf space optimization hard in practice is that the space side of the ratio lives in a planogram system, the sales side lives in POS, the margin side lives in the item file, and the availability evidence that distinguishes a starved category from an efficient one lives in store-level inventory.

Scout joins those into one view, so the index is computable on margin as well as sales, and each category carries the availability signal that says whether space is actually the constraint. The output is a ranked reallocation list scoped to temperature zone and fixture run rather than a store-wide ranking that cannot be executed.

Because the same view carries the store-level inventory position, the before-and-after read on a reset is available without a separate study: whether the categories that gained space improved availability, and whether the ones that lost it held their sales. That closes the loop that most space resets leave open.

Scout measures and ranks the opportunity. It is not a space-planning system: it does not draw planograms, hold fixture data as a system of record, or publish resets to stores.

Summary

  • A space-to-sales index exposes allocations nobody decided, but moving every category to 100 destroys value: facing response is concave, minimum presentation is real, and margin is not uniform.
  • Index on gross margin dollars instead of sales, then move in bounded steps. That reordering moved shelf-stable broth from 143 to 118 and changed the priority.
  • Confirm the mechanism before feeding a starved category. A low index means space-constrained only if availability dips before deliveries; otherwise it just means efficient.

Further reading: assortment optimization decides which items deserve the facings, and sales per square foot covers the department-level version of the same question.

Want this as a Google Sheet?

Drop your email and we'll send the worked example.

Book a demo with your data