Running out is rarely a buying problem. It is a trigger problem, a counting problem, or a recording problem — and each one has a fix a small team can finish in a month.
The sheet says the seal kit is on the shelf. It is not. Two technicians are standing in a customer's plant room with nothing to do, somebody is about to pay for next-day freight, and the part costs $90. The morning costs several times that — not a failure of buying, but a failure of the mechanism that was supposed to tell you to buy.
On this page
The part is the cheapest line in the event. Price the event, not the part. Five buckets you can fill from figures you already have, plus one you cannot.
| Cost bucket | How to price it | Example line |
|---|---|---|
| Lost gross margin | Selling price − unit cost, on the units you could not supply | $210 − $90 = $120 |
| Expedite premium | Rush freight invoice − what ground would have cost | $48 |
| Idle labor | People stopped × hours stopped × loaded hourly rate | 2 × 1.5 × $65 = $195 |
| Substitution loss | Cost of the part you used − cost of the one you wanted | $140 − $90 = $50 |
| Return trip / rework | Drive time at the loaded rate + mileage at your per-mile rate | 1 × $65 + 35 × $0.70 = $89.50 |
| Customer goodwill | A judgment allowance you set; record which accounts it touched | your call |
Cost of one stockout = lost gross margin + expedite premium + idle labor + substitution loss + return-trip cost
With no record of frequency, count the events you remember from the last 90 days and multiply by four. That undercounts, and it will still be large enough to settle the argument.
A two-technician crew arrives for a scheduled pump rebuild. The seal kit the sheet says is on the shelf is not there.
Now compare that against carrying spares for a year. Build your own carrying rate rather than borrowing an industry percentage. At 25% purely as a placeholder, the six spare kits this guide ends up recommending for that item cost 6 × ($90 × 0.25) = $135 a year, about $1.88 per unit per month, and one prevented event pays for that about 2.5 times over. When one prevented stockout pays for a year of buffer several times over, stop arguing about the buffer and fix the trigger.
This case justifies buffer on your top items only. Run it across everything you own and you end up with a stockroom full of money.
Seven mechanisms break, ordered here by how often they are the real culprit in a small operation. Each one has a test you can run in five minutes.
| Root cause | What you'd see on the floor | Five-minute test |
|---|---|---|
| No reorder trigger | Reorders happen after someone complains | Ask three people how they know to reorder item X |
| Wrong on-hand number | "The system says we have them" | Count your 10 fastest movers and compare |
| Consumption unrecorded | Shelf empty, record says full | Time how long it takes to record one issue |
| Lead-time folklore | "About a week," from everyone | Check the last five orders' real dates |
| Lumpy demand | The average looks fine and you still run out | Compare your biggest week to your average week |
| One-person knowledge | Reordering stops when they are off | Ask a new hire what is low today |
| Forked data | Two sources disagree | Count how many places a quantity is written down |
Frequency is not the fix order. Work them in this sequence regardless of how the table ranks them: accuracy first, then recording, then the trigger, then alerting. A trigger sitting on top of a wrong number fires at the wrong time. The last cause is the one a tool genuinely solves — one shared record every device reads. Stockout runs on Windows, Android and any browser from one cloud account, and changes appear on teammates' devices within seconds.
You cannot apply the same discipline to 900 items. Rank by annual usage value so effort lands where the money is — not by unit price, not by what feels important. A $0.30 zip tie used 500 times a year does not deserve a threshold review.
Annual usage value = annual units used × unit cost
| Item | Annual units | Unit cost | Annual usage value | Cumulative % | Group |
|---|---|---|---|---|---|
| Pump seal kit | 240 | $90.00 | $21,600 | 50.7% | A |
| Drive belt | 600 | $18.00 | $10,800 | 76.1% | A |
| Filter cartridge | 1,200 | $6.00 | $7,200 | 93.0% | A |
| Hose clamp | 4,000 | $0.45 | $1,800 | 97.2% | B |
| Gasket set | 150 | $7.00 | $1,050 | 99.6% | C |
| Zip ties (bag) | 500 | $0.30 | $150 | 100% | C |
| Total | — | — | $42,600 | — | — |
Three of six items carry 93% of the value; the bottom three carry about 7%. The A items are where a computed trigger and a monthly count earn their keep. The one B item gets a trigger and a quarterly look. The C items get a year's supply and no further thought — a C item does not deserve a stockout either; it deserves a fat buffer instead of a process.
Two mistakes. Ranking by unit cost alone misses the cheap part that stops a job, so keep a short hand-written "stops-the-job" list beside the ranking — a $4 fuse that halts a line belongs on the A list whatever its usage value. And if the A list outgrows an hour of review a month, the cut is wrong.
Stockout does not classify items for you and has no A/B/C field; the ranking lives in your own working file. What carries into the app is tighter Low Stock At values on the A items, plus the ★ Bookmarked tab, which keeps that list one tap away on the Inventory screen. Bookmarks are per device and do not sync.
A trigger is a number that means "order now". Two parts: what you will use while you wait, plus a buffer for the days the supplier or the demand misbehaves.
Reorder trigger = average daily usage × lead-time days + buffer units
Rounding down is how a good calculation becomes a stockout. Watch the units so nobody multiplies weeks by days.
Recompute after any change in usage or supplier, and review the A list monthly: a trigger set in January is folklore by June. For service levels, demand variability and the Z factor, read the reorder point and safety stock formulas, with worked numbers.
One gap catches everyone. Once you place the order, on-hand stays under the trigger until the goods land, so the item keeps reading Low Stock. Name the person who owns the open order, and do not let a second person reorder off the same signal.
Stockout does not calculate a reorder point, does not store one, and has no safety-stock field. You do the arithmetic; the app watches the result. Enter it in the item editor's Low Stock At field. The full rule: quantity at or below zero reads Out of Stock; at or under the low-stock threshold reads Low Stock; at or above Max Capacity reads Max Capacity; at or above the near-capacity threshold reads Near Capacity; everything else reads In Stock. Editing an item needs the User role or above — see how to set “Low Stock At” on an item.
Percentages need a Max Capacity. Low Stock At and Near Capacity At can each be a fixed number (#) or a percentage (%) from a two-option dropdown, and the percentage is of that item's Max Capacity (units) — never of usage or demand. With no Max Capacity set, it resolves to zero and never fires.
Low is evaluated before Max. An item whose low threshold sits at or above its Max Capacity reads Low Stock even when it is physically full. Max Capacity is how much the storage spot physically holds; it drives the Near Capacity and Max Capacity statuses only.
The default is per device. Settings has a Default Low Stock Threshold applied to new items; it defaults to 5 and is stored on that device rather than synced, so set a real per-item number.
A trigger is only as good as the on-hand figure it compares against; wrong number, and it fires late, early, or never. Measure it as record accuracy = items counted that matched exactly / items counted, by item rather than by unit, because "close" is not a match.
Set the bar by group: A items at 95% or better, B items at 90%, and C items you frankly do not care about — which is why they get the fat buffer instead of a target. Those are exact-match figures, so they sit below the within-tolerance targets in the counting guide. Tie frequency to the ranking rather than a calendar you will abandon — A monthly, B quarterly, C once a year.
Count 50 A and B items and 42 match exactly: 42 / 50 = 84%. Well under the bar, so the next move is another counting pass, not threshold tuning. When a count disagrees with the record, change the record to match the shelf the same day — a count you do not act on is worse than no count, because now two people have seen the discrepancy and nothing happened.
In Stockout, correct stock with the + / − buttons on an item card, or the three-dot menu → Adjust for a bulk add or remove with a live preview; that needs the User role, and Viewers cannot adjust stock. Two caveats. An adjustment can never take a quantity below zero, so an over-removal stops at zero and quietly under-records the movement. And in the web app, editing an item's quantity in the item editor writes no stock movement and raises no alert — use the Adjust sheet when you want the change recorded. There is no count sheet, count schedule or variance report in the product.
For how to run counts without shutting the place down, read cycle counting vs. a physical inventory count.
Phantom stock is not dishonesty, it is friction. If recording an issue takes longer than grabbing the part, it will not get recorded, and the next shift undoes every count you did.
The recording step has to live where the stock physically leaves, and it has to be one action — not a form, not a notebook to transcribe later. Scanning is the cheapest way there: the code is already on the box, and a scan removes the typing and the typo at once. Put the reader on the stockroom bench, not at the desk.
Barcode scanning works two ways: the device camera on Android, and a USB or Bluetooth reader in keyboard-wedge (HID) mode on Windows and the web. A scan looks the item up by SKU and adds or removes stock in one tap, with a per-scan quantity and an add (green) / remove (red) mode. The scan buttons sit in the footer of the Inventory screen and only appear for users with write permission.
Two details matter when you set it up. An item can carry multiple SKUs or barcodes and scans match any of them, so you can put your own printed label on an unmarked part without losing the manufacturer's code. And if a code matches nothing, you can create a new item with the SKU pre-filled or attach the code to an existing item — which is how you build the catalog as you go. Scan history is local to the session, and clearing it changes no data.
Then name the paths that do not go through a scan, because that is where the count drifts. Building a kit: Make deducts component stock, Unmake returns it, Remove/Sold reduces the built count without returning components. A customer job: a work-order material line deducts stock and logs a movement tagged with the WO number. And anything someone takes without telling anyone. Give each a named owner.
Kit builds and work-order material use raise no alerts, so a large build can drop an item under its threshold quietly. Check the Inventory stat tiles after one.
There is no stock-history or movement-log screen on Windows, Android or the web. Movements surface only through the Analytics charts and the read-only API, so the shelf and the record are what you reconcile.
Lead time is the input most people guess at, and the one that decides how much buffer you need. A quoted lead time is a sales figure; a measured one is an operating figure.
Measuring it needs no system: for each A item, write down the order and arrival dates for the last five to ten orders, and count the working days between them. The average sizes the trigger; the gap between the average and the worst case sizes the buffer.
Buffer for supplier variability = (longest observed lead time − average lead time) × average daily usage
Use the measured number: at 13 days, demand over lead time becomes 0.96 × 13 = 12.48, round up to 13, and the trigger moves from 18 units to 19. Re-measure after any supplier change, and be suspicious of a lead time that never varies — it usually means nobody is recording arrival dates. If your business has a season, measure inside the season.
Stockout does not track, store or know supplier lead time, minimum order quantity, supplier part numbers or supplier pricing; that record stays yours. What it does hold is the supplier directory: vendor name, one or more ordering-portal URLs, and contacts (name, role, phone, email), org-wide, with items linked from the item editor through the "Sourced from" picker. Reordering means tapping a supplier's saved portal link, which opens that vendor's own site in your browser where you place the order yourself. Nothing is sent for you and nothing inbound is tracked.
Eyeballing shelves is a job that only gets done on a good week. A threshold that fires gets it done on a bad week too. That is the payoff for the work above: a correct on-hand number, a correct trigger, and something watching the gap between them.
The rule that decides whether this works: every alert gets a named owner and one next action. An alert nobody owns becomes noise, noise gets muted, and a muted alert is worse than none because you believe you are covered. Keep the list short — A items first, B items after a month if the A alerts are actually actioned. Expect a burst in week one as thresholds meet reality. If the same item alerts every week, the trigger is wrong, not the alert.
Alerts come in four independently toggleable types: Low Stock, Out of Stock, Near Capacity ("Near Max Capacity Alerts" on the web) and Full Capacity ("At Full Capacity Alerts" on the web). They are edge-triggered — one fires at the moment a change newly crosses a threshold, an item that is already low does not re-alert, and there is no scheduled digest. Out of Stock takes priority over Low Stock on the way down; At Full Capacity takes priority over Near Capacity on the way up.
Email alerts work on every platform. Mobile push notifications are the Android app only, where a background job can pull the cloud and raise stock and capacity notifications even when the app is closed.
Two scoping rules to set up deliberately. Email recipients are a comma-separated list entered in Settings, saved per device or browser and not synced — so set them on every device that should send. And alerts fire only for the location that device is set to. The alert settings hold every toggle.
Between alerts, the Inventory screen's five stat tiles — Total Products, Low, Out, Near Capacity, Max Capacity — are the 60-second morning check; tapping one filters the list to that status. Every item carries one live status out of five, and the colors match on Windows, Android and the web:
#EF4444#F59E0B#10B981#3B82F6#A855F7Near-capacity detection is off by default, and setting Near Capacity At back to 0 turns it off again.
All of it collapses if two versions of the count exist: the spreadsheet on the laptop and the number in the app diverge within a week, and people start trusting whichever agrees with them. Cutting over needs no magic import — pick a date, count the A items onto the new record, and let B and C items get created as they are handled.
Roles stop accidental damage rather than adding bureaucracy. Stockout has four roles: Owner (exactly one), Admin, User and Viewer, enforced server-side: Viewers cannot adjust stock, and Users cannot manage locations, teammates, devices, or run Reset/Clear. Name the minimum role next to every instruction in your own written procedure — see roles and permissions.
Every item, kit, piece of equipment, checklist, folder and work order belongs to exactly one of your locations and sites, so the same product at two sites is two records with independent quantities and thresholds; suppliers and customers are org-wide, and label templates are shared across all locations. There is no transfer workflow — moving stock between sites is a removal at one and an addition at the other, by hand. "All Locations" is a read-only aggregate in the Windows and Android apps, so switch to a specific site to change anything; it does not exist in the web app.
The Windows and Android apps are offline-first and keep working without a connection, the web app runs online, and changes appear on teammates' devices within seconds. When two people change the same field at once, the last change saved wins, and only changed fields sync — so split the shelves between counters instead of doubling up.
Before any big cleanup, take a backup, and take another once the rollout is done — see backup and restore. A backup is one timestamped JSON file covering items, kits, equipment, checklists, suppliers, customers, folders, work orders and label templates, without activity logs or stock movements. Restore merges by ID — new records added, existing ones updated, nothing deleted — into the account that created the file. Every feature is included with an active subscription — there are no feature tiers.
Then name the one person who owns the record. Not a committee. A committee does not count shelves.
Four weeks at roughly three hours each — an estimate, not a promise. If it needs a project plan, it will not happen.
| Week | Goal | What you actually do | Minimum role | Done when |
|---|---|---|---|---|
| Week 1 | Trustworthy numbers on the items that matter | Rank by annual usage value, pick 20-40 A items, count them, correct the record the same day | User (adjust stock) | Every A item matches the shelf |
| Week 2 | A real trigger on every A item | Average daily usage, measured lead time, buffer, entered as the item's Low Stock At; Max Capacity only where the shelf has a real physical limit | User (edit items) | Every A item has a Low Stock At you can explain |
| Week 3 | Consumption recorded at the point of issue | Reader where stock leaves, labels on unmarked items, roles set, two people shown the adjust flow | Admin (roles, locations) | Someone else can issue stock and the count follows |
| Week 4 | The system tells you instead of you checking | Turn on Low Stock and Out of Stock alerts, set recipients on each device, clear the first burst, recount five random A items, take a backup | Any role for alerts on their own device; Owner or Admin to manage teammates or devices | An alert fired, someone else actioned it, the recount matched |
After that: a monthly A-item count and threshold review, a quarterly B review, and a re-measure of lead time whenever a supplier changes. If the week-4 recounts do not match, do not add more items — go back to week 3 and find the consumption path nobody is recording.
You bring the numbers. The app holds them, watches them, and tells you the moment one crosses the threshold you set.
Stockout does not compute reorder points or safety stock, does not store supplier lead time, and does not raise purchase orders.
Stockout is one plan at $12 per device per month, with a two-device minimum and a 30-day free trial. Every feature is included.
Far more than the part. Price the event with five buckets: the gross margin you lost on the order you could not fill, the premium you paid for rush freight over your normal rate, the labor that stood idle while someone chased the part, the extra cost of the substitute you fitted instead, and the cost of the return trip or rework. A concrete example: a two-person crew stopped for 90 minutes at a $65 loaded hourly rate is $195, a $48 next-day freight premium, and a return trip of one hour plus 35 miles at $0.70 a mile is $89.50 — $332.50 for a part that cost $90. Multiply your per-event figure by how many times it happened in the last 90 days, then by four — which undercounts slightly — to get an annual number you can take to a decision.
Test it before you change anything. Pick the ten items you use most, count them physically, and compare with your record. Record accuracy is the number of items that matched exactly divided by the number you counted — count by item, not by unit, because “close” is not a match. If more than one of ten is wrong, tuning reorder thresholds is wasted effort: the trigger would be comparing against a number that is already false. Fix counting and recording first, get your fastest-moving items to 95% or better, and only then set triggers.
No. Stockout has no reorder point field, no safety stock field, and it does not store or suggest either. It has exactly one reorder-related input: a per-item “Low Stock At” threshold in the item editor that you set yourself. You do the arithmetic — average daily usage multiplied by your measured lead time, plus a buffer — and enter the result. From then on the item reads Low Stock as soon as quantity hits or drops under that number, and a Low Stock alert can fire on the crossing. It also does not track supplier lead time, minimum order quantities, or supplier pricing, so keep those records yourself.
Enough to cover the variation you can actually measure, on the items where a stockout is expensive. The simplest defensible starting point is to cover supplier lateness: take the longest lead time you have observed, subtract the average, and multiply by average daily usage. If the last five orders took 9, 11, 12, 14 and 19 working days, the average is 13 and the longest is 19; at 0.96 units a day that is (19 − 13) × 0.96 = 5.76, rounded up to 6 units. That handles a late supplier but not a demand spike — for the full treatment with service levels and demand variability, see the reorder point and safety stock guide.
Yes, through threshold alerts. There are four independently toggleable types — Low Stock, Out of Stock, Near Capacity and Full Capacity. They are edge-triggered: one alert fires at the moment a change newly crosses a threshold, so an item that is already low does not keep re-alerting, and there is no scheduled digest or weekly summary. Out of Stock takes priority over Low Stock on the way down. Email alerts work on every platform; push notifications are the Android app only, where a background job can raise them even with the app closed. Email recipients are entered in Settings as a comma-separated list and are saved per device or browser rather than synced, so set them on each device that should send, and alerts only cover the location that device is currently set to.
Record consumption at the moment and place it happens, and make that recording take about two seconds. In practice that means a scanner where stock physically leaves the shelf: a phone camera on Android, or a USB or Bluetooth reader in keyboard-wedge mode on Windows and in the browser. A scan finds the item by SKU and adds or removes stock in one tap. Two things to watch in Stockout specifically: an adjustment can never take a quantity below zero, so an over-removal stops at zero and quietly under-records; and in the web app, editing an item's quantity in the item editor writes no stock movement and raises no alert, so use the Adjust sheet whenever you want the change recorded.
Set a low-stock threshold on every item that matters and let Stockout tell you before the shelf is empty.