Ecommerce inventory planning: replenish, hold or promote
Ecommerce inventory planning per product: read GMROI, excess capital and revenue at risk together to decide what to replenish, hold, promote or deprioritise.
Ecommerce inventory planning is deciding, product by product, what to replenish, hold, promote or deprioritise. Forecasting units is only the input; the plan is the decision.
I worked the method through four illustrative products with every formula shown: profit, stock capital and availability read side by side, then one decision rule that turns them into an action.
Which numbers does ecommerce inventory planning use?
Ecommerce inventory planning reads three lenses per product: profit through GMROI, stock capital through excess capital at cost, and availability through revenue at risk. POAS then says whether advertising the product pays.
| Lens | Metric | Formula | Question it answers |
|---|---|---|---|
| Profit | GMROI | Annual gross profit ÷ average inventory at cost | What does each euro of stock earn? |
| Stock capital | Excess capital | Excess units × unit cost | How much cash sits above what you need? |
| Availability | Revenue at risk | Units at risk × price excl. VAT | How many sales can stock not meet before the delivery? |
GMROI is gross margin return on investment: the gross profit each euro held in stock at cost earns in a year. Excess units are sellable units − (weekly demand × weeks to next delivery + safety stock), never below zero.
Units at risk are max(0, weekly demand × weeks to next delivery − sellable units). Revenue at risk is an estimate of exposure, not a booked loss, and stockout cost covers how to estimate it.
Why one lens on its own misleads
Each metric is blind to what the other two measure. GMROI on its own says “buy more” for a product that is about to run out.
Excess inventory on its own says “promote”, even when every ad euro on that product loses money. Revenue at risk on its own says “reorder”, even for a product that only sells through unprofitable ads.
POAS, profit on ad spend, settles the ad question. A POAS of 1.0 is break-even: each euro of ads brings back one euro of profit.
What inputs do you need for each product?
You need eight inputs per product, all for the same date, and each with one precise meaning.
| Input | Meaning | Used for |
|---|---|---|
| Annual gross profit | Net sales after returns and discounts − cost of goods sold, last 12 months | GMROI |
| Average inventory at cost | Opening value plus 12 month-end values, ÷ 13 | GMROI |
| Weekly demand | Forecast units a week, from weeks with stock on hand | Cover, risk, excess |
| Sellable units | Units you can ship: not reserved, damaged or quarantined | Cover, risk, excess |
| Weeks to next delivery | Weeks until a confirmed delivery lands | Risk, excess |
| Safety stock | The buffer in units you chose to hold | Excess |
| Price excl. VAT and unit cost | Today’s selling price after discount; what you paid | Revenue at risk, excess capital |
| POAS | Profit ÷ ad spend for the product | Ad decision |
With no order placed yet, weeks to next delivery is the weeks until you order plus the supplier’s lead time. Cover is sellable units ÷ weekly demand, the same idea as days of inventory counted in weeks.
Size the buffer before you judge excess: the safety stock calculator works it out from demand and lead-time variation. Count a purchase order only when its date and quantity are firm.
How do you decide which products to replenish, hold or promote?
Decide on stock position first, then on POAS against break-even: a short product with POAS at or above 1.0 gets replenished, a short one below it gets its economics fixed first.
| Stock position | POAS ≥ break-even (1.0) | POAS below break-even |
|---|---|---|
| At risk (units at risk > 0) | Replenish; lower ad priority until the delivery lands | Fix the economics before reordering |
| Excess (excess units > 0) | Hold the next order; promote while profitable | Deprioritise: review price, cost and clearance |
| Neither | Keep: reorder on the usual date | Keep stock lean; review price and cost |
No product can be in both top rows. Excess starts only above demand to the delivery plus safety stock, so a product with units at risk has none.
GMROI sets the order within a cell, not the cell. The buying decision stays with you.
- Fix the inputsSellable units, weekly demand from in-stock weeks, weeks to the next delivery, safety stock, price, unit cost and POAS per product.
- Check availabilityCover in weeks, units at risk until the delivery lands, and revenue at risk at today's price excl. VAT.
- Check stock capitalExcess units, and the capital they tie up at unit cost.
- Read profitGMROI over the last 12 months, and POAS against break-even 1.0.
- Place and rankPut each product in one cell of the decision matrix, then work down the list from the largest euro amount.
Which products should you review first?
Start with the products that have the most euros at stake, short or tied up in stock. With hundreds of products, ABC analysis gives the order.
ABC analysis ranks products by one value, such as gross profit, and labels the few that make up 80% of the total as A. The ABC analysis calculator splits your own export into A, B and C.
Worked example: four products through the decision rule
For example, take four products, a trail jacket, a canvas tote, a bottle holder and a merino beanie, and run each lens in turn. All figures are illustrative data.
Profit: GMROI and POAS
GMROI runs from 4.00 for the trail jacket to 0.50 for the bottle holder, and only the jacket and tote have a POAS at or above break-even.
| Product | Annual gross profit | Average stock at cost | GMROI | POAS |
|---|---|---|---|---|
| Trail jacket | €36,000.00 | €9,000.00 | 4.00 | 2.1 |
| Canvas tote | €12,000.00 | €6,000.00 | 2.00 | 1.6 |
| Bottle holder | €1,500.00 | €3,000.00 | 0.50 | 0.8 |
| Merino beanie | €2,400.00 | €1,600.00 | 1.50 | 0.9 |

Show the dataHide the data
| Product | GMROI |
|---|---|
| Trail jacket | 4.00 |
| Canvas tote | 2.00 |
| Merino beanie | 1.50 |
| Bottle holder | 0.50 |
The shop’s GMROI is €51,900.00 ÷ €19,600.00 = 2.65. Averaging the four product ratios gives 2.00, because it weights the €1,600.00 beanie the same as the €9,000.00 jacket. Sum first, then divide.

Show the dataHide the data
| Product | Share of gross profit | Share of stock at cost |
|---|---|---|
| Trail jacket | 69.4% | 45.9% |
| Canvas tote | 23.1% | 30.6% |
| Merino beanie | 4.6% | 8.2% |
| Bottle holder | 2.9% | 15.3% |
Availability: cover and revenue at risk
Two products run out before their next delivery: the trail jacket with 30 units at risk and the merino beanie with 48.
| Product | Sellable units | Demand a week | Weeks to next delivery | Cover (weeks) |
|---|---|---|---|---|
| Trail jacket | 20 | 10 | 5 | 2.0 |
| Canvas tote | 300 | 15 | 3 | 20.0 |
| Bottle holder | 240 | 3 | 4 | 80.0 |
| Merino beanie | 16 | 8 | 8 | 2.0 |
The jacket needs 10 × 5 = 50 units before its delivery and has 20. The beanie needs 64 and has 16.
| Product | Units at risk | Price excl. VAT | Revenue at risk |
|---|---|---|---|
| Trail jacket | 30 | €149.99 | €4,499.70 |
| Merino beanie | 48 | €29.99 | €1,439.52 |
| Canvas tote, bottle holder | 0 | €39.99, €19.99 | €0.00 |
Together that is €5,939.22. Valued at gross profit instead, the same units come to €2,699.70 and €575.52, €3,275.22 in total: an alternative view of the same units, never a figure to add.
Stock capital: excess units at cost
The canvas tote and the bottle holder hold €4,878.00 of excess capital at cost between them, and the other two hold none.
| Product | Cover needed (demand × weeks + safety) | Excess units | Unit cost | Excess capital |
|---|---|---|---|---|
| Canvas tote | 15 × 3 + 30 = 75 | 225 | €14.00 | €3,150.00 |
| Bottle holder | 3 × 4 + 12 = 24 | 216 | €8.00 | €1,728.00 |
| Trail jacket | 10 × 5 + 10 = 60 | 0 | €60.00 | €0.00 |
| Merino beanie | 8 × 8 + 8 = 72 | 0 | €18.00 | €0.00 |
The tote’s 225 excess units are 15 weeks of its demand; the bottle holder’s 216 are 72 weeks.

Show the dataHide the data
| Product | Revenue at risk | Excess capital at cost |
|---|---|---|
| Trail jacket | €4,499.70 | €0.00 |
| Canvas tote | €0.00 | €3,150.00 |
| Bottle holder | €0.00 | €1,728.00 |
| Merino beanie | €1,439.52 | €0.00 |
The verdict per product
Each product lands in a different cell of the matrix.
| Product | Stock position | POAS against 1.0 | Decision |
|---|---|---|---|
| Trail jacket | 30 units at risk | 2.1, above | Replenish |
| Merino beanie | 48 units at risk | 0.9, below | Fix the economics |
| Canvas tote | 225 excess units | 1.6, above | Hold and promote |
| Bottle holder | 216 excess units | 0.8, below | Deprioritise |
To apply the method to your own products, download the inventory planning worksheet (XLSX, free, no sign-up). It opens in Excel and Google Sheets and uses the same formulas and decision rule as this example.
Each row gets a suggested review, its reason and what to check first, such as season, returns and how firm the order is. Break-even POAS is a setting, 1.0 by default.
Four products take a few minutes. A shop with 600 products needs a forecast, a delivery date and a cost for each, refreshed every time stock moves, and a spreadsheet is out of date by the time it is filled in.
Product Metrics reports GMROI, excess capital and revenue at risk per product and rolls them up by category, brand and price range. Inventory Insights adds projected demand, lead time, safety buffer, stock cover, reorder dates and slow movers with a reason.
What should you do with each product?
Each case has one action and one move to avoid: the move its best number invites.
| Case | Do | Don’t |
|---|---|---|
| At risk, POAS ≥ 1.0 | Replenish and lower ad priority until the delivery lands | Increase priority while stock is short |
| At risk, POAS < 1.0 | Review price, unit cost and ad priority before reordering | Reorder the old quantity because it sold out |
| Excess, POAS ≥ 1.0 | Hold the next order and promote while POAS stays above 1.0 | Discount until POAS drops below 1.0 |
| Excess, POAS < 1.0 | Compare a markdown, a supplier return and a bulk sale | Push it with ads that lose money |
Replenish: the trail jacket
Reorder the trail jacket now, because demand before the delivery is 50 units and only 20 can ship. Bring the delivery forward if the supplier can, and set the next order with the reorder point calculator.
Lower its ad priority until the delivery lands. Extra clicks sell no extra units when demand already exceeds stock; they only empty the shelf sooner.
Product Segmentation sets ad priority per product with labels in Google Merchant Center. In Inventory Insights, a stock label you approve pauses a product at zero stock and resumes it when the restock lands.
Fix the economics: the merino beanie
The merino beanie sells out, but with a POAS of 0.9 every euro of ads returns €0.90 of profit. Its gross profit is €11.99 on a €29.99 price, 40%, against 60% for the jacket.
Check the price and the unit cost first, then lower its ad priority so fewer of its sales come from loss-making clicks. Reorder once the economics hold.
Hold and promote: the canvas tote
Skip or shrink the tote’s next order: it has 15 weeks of excess on a 3-week wait. With a POAS of 1.6, its ads pay, so give it more exposure.
Rerun the numbers before a promotion. If it doubles demand to 30 a week, for example, excess falls from 225 to 180 units: 300 − (30 × 3 + 30).
Deprioritise: the bottle holder
The bottle holder holds 72 weeks of excess and earns a GMROI of 0.50, so buy none and lower its ad priority, since its ads lose money.
Stock that has stopped selling altogether needs a different plan, covered in dead stock inventory.
When should you recalculate the plan?
Recalculate each time stock, the demand forecast or a purchase order changes, and before every big promotion. A plan built on last month’s stock goes wrong in six common situations.
| Situation | What goes wrong | What to change |
|---|---|---|
| Before a seasonal peak | A recent average understates demand, so stock looks excess | Forecast for the coming season and keep the buffer |
| After the season | A recent average overstates demand | Lower the forecast and check excess again |
| New product launch | No sales history and no 12-month GMROI | Borrow demand from similar products; review weekly |
| High return rate | Demand and gross profit look higher than they are | Use net sales; count returns as sellable once restocked |
| Unreliable lead times | Weeks to next delivery are too short | Use the late-case delivery date or a larger safety stock |
| Partial deliveries | One delivery date overstates stock | Project stock week by week, confirmed quantities only |
For seasonal products, compare GMROI with the same product’s earlier years, not with products sold all year.
High inventory turnover products reach their reorder point fastest, so they need the most frequent check.
Final thoughts
The products that need a decision rarely look wrong on their best number. The jacket’s GMROI hides its shortage; the tote’s healthy POAS hides 15 weeks of surplus.
Start with your ten largest products by gross profit. Work out cover, excess and POAS for each, place them in the matrix, and act on the cell rather than on the single metric that looks best.
Keep reading.
How to calculate stockout cost and revenue at risk
How to calculate stockout cost and revenue at risk per product: forecast demand until the restock, minus sellable stock, times the price excl. VAT.
Dead stock inventory: what it is and how to get rid of it
Dead stock inventory is stock with no sale for months. How to find it, what it costs on the shelf and in Shopping ads, and how to clear it.
Dropshipping profit margin after ads, refunds and returns
Dropshipping profit margin after ads, refunds and returns: vendor margin claims, a 100-order example, EU return rules and break-even ROAS.
Frequently asked questions.
What is the difference between inventory planning and inventory analysis?
Does a high GMROI always mean you should buy more?
How do GMROI and inventory turnover differ?
See which of your products to push, fix or pause. Start with your own products, or a 30-second estimate.
See stock cover, slow movers and revenue at risk per product in Inventory Insights. Then see where all your products stand.
Questions, or want to spar about your products? Book a demo: a video call with Berend, then a demo account.