# Decoding distribution, velocity, and out-of-stock signals
A shampoo SKU sells the exact same number of units this quarter as last. Sales are flat. Yet the brand manager gets a red flag: market sharemarket shareThe percentage of total industry sales your company captures in a given period. It measures competitive position relative to rivals in a defined market.Voir la définition complète → is dropping. How can a product lose share while holding volume?
Because in FMCG (fast-moving consumer goods, the packaged products people buy often and cheaply: food, drinks, toiletries, cleaning supplies), your unit sales are only the surface. Underneath sit three drivers that explain almost everything: how many stores carry you (distribution), how fast you sell in each store (velocity), and whether the product is actually on the shelf when a shopper reaches for it (out-of-stock).
Flat sales in a growing category means you are treading water while the pool fills. Let us diagnose why.
Think of retail sales as a simple equation:
Sales = Distribution x Velocity
Distribution is not "how many stores." Not all stores are equal. A hypermarket and a corner kiosk both count as one store, but one sells 100 times more.
So the industry uses %ACV (All Commodity Volume), a weighted distribution measure. It answers: of all the dollars spent in this category across all stores, what percentage flows through stores that carry my product?
If your SKU is in stores representing 60% ACV, you are simply invisible in 40% of the market's buying power. A competitor at 85% ACV can grow just by being present where you are not.
Concrete signal: Your %ACV dropped from 72 to 66 over two quarters. A retailer delisted you from a regional chain. Even with perfect velocity, you lost access to 6 points of category buying power. That alone can flatten sales in a growing category.
Velocity is how fast a product sells where it is stocked. The common metric is rate-of-sale, often expressed as units per store per week, or the normalized version $/MM ACV (dollars per million dollars of ACV), which lets you compare velocity across stores of different sizes.
Two SKUs can have identical %ACV but wildly different velocity. Weak velocity usually points to something real: wrong price gap versus competitors, poor shelf position (eye level versus bottom shelf), a promo you ran last year but not this year, or a pack size shoppers stopped preferring.
Concrete signal: Your %ACV held at 72, but rate-of-sale fell 9%. Distribution is fine. The problem is at the shelf: demand per store softened. Now you investigate price, promotion, and placement.
Here is the trap. Your data can say a SKU is "distributed" in a store because the retailer's system shows it as an active item. But active in the system does not mean present on the shelf.
Out-of-stock (OOS) means a shopper who wants the product finds an empty facing. The retailer may still show inventory in the back room or in the system, called phantom inventory (stock the system believes exists but that is not sellable or not on the shelf).
On-shelf availability problems are widespread. Industry studies over the years commonly estimate average retail out-of-stock rates in the high single digits, often cited around 8%, and higher during promotions. Treat any specific figure as an estimate; it varies by category, retailer, and season.
Concrete signal: %ACV steady, rate-of-sale looks "fine" on paper, but store-level audits or shelf sensors show a 12% OOS rate. That means one in eight shopping trips found an empty shelf. Your true demand is higher than your sales. You are not losing share to a better product; you are losing it to an empty peg.
Back to the opening puzzle. Flat sales, falling share, category up 8%. Walk the levers in order.
Step 1: Check %ACV. It is flat at 74. Distribution is not the culprit. Skip the delisting theory.
Step 2: Check rate-of-sale. It reads roughly flat too. On the surface, velocity looks healthy. This is where most analysts stop and get stuck.
Step 3: Check on-shelf availability. Store audits reveal a 12% OOS rate, up from 4% a year ago. Now the picture snaps into focus.
The SKU is not selling flat because demand is flat. Demand actually rose with the category. But shelves keep emptying, so measured sales stay flat while true demand climbs. The "healthy" rate-of-sale is masking suppressed sales.
The root cause is often operational: a new pack size changed the case count, the store's automated reorder point did not update, and the shelf runs dry every weekend before restock.
You rarely get one clean number. You reconstruct the story from a few sources: syndicated retail measurement (firms like Nielsen or Circana provide POS-based category data), the retailer's own point-of-sale and inventory feeds, and shelf-level checks (field audits, image recognition apps, or shelf sensors).
A simple way to separate a real velocity problem from a phantom out-of-stock problem is to compare selling patterns across stores. Stores that go dark for days at a time (zero sales, then a spike after delivery) signal OOS, not weak demand.
# Flag likely out-of-stock: days with zero sales for an
# item that normally sells daily in that store.
import pandas as pd
# pos: columns = store_id, sku, date, units_sold
avg_daily = pos.groupby(['store_id','sku'])['units_sold'].transform('mean')
pos['likely_oos'] = (pos['units_sold'] == 0) & (avg_daily > 1)
oos_rate = (
pos.groupby('sku')['likely_oos']
.mean()
.sort_values(ascending=False)
)
print(oos_rate.head())This is a rough heuristic, not proof, but a SKU that sells daily in a store and then shows scattered zero days is almost always facing shelf gaps, not collapsing demand. Real weak velocity looks like consistently low sales, not on-off patterns.
For a deeper primer on how on-shelf availability is measured and why it stays stubbornly high, the GS1 standards resources on product identification and inventory data are a solid, free starting point.
🎬 [VIDEO: "What is ACV Distribution?" — youtube.com — a short explainer on how %ACV weights stores by category sales]
Vérification des acquis
1. A shampoo SKU sells the same unit volume this quarter as last, yet loses market share. What does this most likely indicate?
2. Why does the industry use %ACV rather than a simple count of stores to measure distribution?
3. A brand's %ACV falls from 72 to 66 because a retailer delists it from a regional chain. Why can this flatten sales even if velocity is perfect?
4. Select ALL correct answers about the FMCG sales equation (Sales = Distribution x Velocity).
Sélectionnez toutes les réponses correctes.
5. Select ALL correct answers describing what the three drivers (distribution, velocity, out-of-stock) reveal that raw unit sales cannot.
Sélectionnez toutes les réponses correctes.
Each lever points to a different owner and a different fix. Misdiagnose the lever and you waste money on the wrong lever.
If it is %ACV loss: This is a sales and account team problem. You need to win back distribution: rebuild the case for the retailer, adjust trade terms, or target new store formats. Spending on advertising here is wasted; you cannot sell what is not stocked.
If it is weak rate-of-sale: This is a marketing and category problem. Revisit price gaps versus competitors, shelf placement, pack architecture, and promotional depth and frequency. Advertising and in-store visibility can move this lever.
If it is out-of-stock: This is a supply chain and retail execution problem. Fix reorder points, case pack sizes, and replenishment timing. The demand already exists; you are just failing to serve it. This is often the fastest, cheapest share recovery available because you are not creating demand, only capturing demand you already earned.
For our shampoo SKU, the answer was OOS. The fix was not a campaign. It was correcting the reorder trigger after the pack size change and adding a weekend replenishment. Share recovered without spending a dollar on media.
Always diagnose in this sequence: distribution first, then velocity, then availability. Skipping to velocity (the most tempting metric) is how teams miss phantom inventory entirely. A "flat" rate-of-sale can hide a fast-growing OOS problem, because the sales you never made never show up as demand.
The discipline is simple: never accept a flat or declining sales number at face value. Decompose it. The number that flatters you (steady velocity) is often the one hiding the real leak.