There is no import button. This is the order that gets the items which actually cause problems into the app first — about four and a half hours of work spread over ten working days — and lets the long tail arrive by scan as it is handled.
Every row you type costs about a minute, and the spreadsheet is the last place you will ever be able to sort, filter and delete in bulk. Use it while you still have it. The catalog that goes into the app should be smaller than the one on the sheet, and the order you enter it in decides whether week one leaves you with something useful or just leaves you tired.
On this page
Most inventory spreadsheets are fine, and retyping one that works is an afternoon wasted. Work out first whether yours has actually failed, because "it feels messy" is not a reason and "nobody trusts it" is. Sheets fail in six recognizable ways, and each one has a test you can run in five minutes. Three or more symptoms and the file has stopped being a record of what you hold and become a list of candidates.
| Symptom | What you see | Five-minute test | What it costs |
|---|---|---|---|
| Version forks | A filename with a version number and someone's initials on the end | Search your drive for the filename stem and count the copies touched in the last 90 days. More than one is a fail. | Two people order the same part because each read a different file |
| One person owns it | Every stock question is answered by the same name | Ask somebody else what is low today without opening the file. | A reorder stalls for a week whenever that person is off |
| No change record anyone reads | A quantity that is obviously wrong, and has been for a while | Pick that quantity and try to establish when it changed. Revision history counts only if somebody actually opens it. | An argument nobody can settle, so the number gets overwritten with a guess |
| Nothing tells you | Shortages are discovered, never predicted | Ask how you found out about the last one. If the answer is a person walking to a shelf, the sheet never told you. | Emergency freight on a part you have used every week for a year |
| Counts done from memory | Quantities that end in 0 and 5 far more often than chance allows | Count ten fast movers against the sheet. Fewer than nine exact matches is a fail. | A record nobody trusts, so nobody uses it to decide anything |
| It cannot be updated where stock moves | The sheet lives on a desk and the stock lives in a stockroom | Time someone recording one issue from the floor on a phone. Over sixty seconds is a fail. | Phantom stock — units leave and the record does not move |
Be honest about the third one, because it is the symptom an app is least likely to fix. Stockout does not show who changed a quantity: stock movements carry no user, and there is no movement-history screen on Windows, Android or the web. What you gain is one record instead of four, not a name against every change. If attribution is the main argument for moving, this is not the tool that supplies it.
The first symptom is the expensive one. Two live copies diverge at the rate stock moves, and once they have diverged there is no third record to arbitrate, so the only repair is a full recount. That is the argument for fixing a cutover date before you type anything, which is the last thing this guide asks you to do.
Stockout has no CSV, Excel or Google Sheets import. There is no bulk upload, no paste-a-list entry mode and no migration service, and the public API is read-only — GET and HEAD only — so it is not a way in either.
No file Stockout produces is a spreadsheet: the outputs are an analytics PDF, a backup JSON and a label PNG. The only bulk paths into an account are restoring a backup JSON that the same account produced, and Reset to Sample Data, which loads demo records. A backup binds to the account that created it, so it is neither a handoff to a colleague nor a route in from a spreadsheet. Everything else is typed into the item editor or created from a scan. The entry work is real, and nobody can do it for you.
Because every row costs keystrokes, the sheet has to earn its rows before anything is typed. On the 620-row sheet this guide follows, typing it exactly as it stands is about nine hours of keying; typing what survives an hour of cleaning and a ranking by value is about two. The rest of the guide is that difference, in order: decide, clean, rank, type the top, scan the tail, count what you typed, freeze the sheet.
These six are cheap now and expensive later. Stockout has no bulk editing, no multi-select and no mass update, so changing your mind after four hundred records means opening them one at a time. Write the answers at the top of the sheet before the first item goes in.
1. What counts as one item. One item is one thing you count and reorder as a unit. If you would never order half of it separately, it is one item. A bundle you assemble from other items is a kit rather than a second stock line: Make deducts component stock, Unmake returns it, and Remove/Sold reduces the built count without returning components. Get this wrong and the same physical unit is counted twice, once as a component and once as a finished thing.
2. Unit of measure. One unit per item, written the same way on every row. An item is tracked by Quantity, Weight, Length or Volume — the three non-Quantity modes add a Unit dropdown in the item editor — and nothing converts between units or turns boxes into eaches, so a sheet that mixes them carries the mistake forever. Where the shelf is still ambiguous, say it in the name as well: "Cable, 3-core — per meter" leaves nobody guessing.
3. Locations. The most expensive decision to reverse. Every item, kit, piece of equipment, checklist, folder and work order belongs to exactly one location, so the same product at two sites is two records with independent quantities and thresholds, and there is no transfer — moving stock is two adjustments. Deleting a location permanently removes every item, kit, piece of equipment and checklist at that site.
Only Owners and Admins can add, edit or delete a location, and a new account has to create one before it can use the app. If a second site is anywhere in your plans, settle the structure with how stock is run across sites before you type; the mechanics are in locations.
4. Naming format. Pick one pattern and apply it in the sheet, not in the app. Category — Description — Size suits most catalogs. Search in every list is live, case-insensitive and partial across name, SKU and category, so the pattern you settle on decides how findable the catalog is for years. Renaming four hundred items by hand later is a day you will not get back.
5. SKU scheme. One primary SKU per item, and keep the manufacturer's code as a second SKU rather than choosing between them — an item can carry multiple SKUs or barcodes, and search and scans match any of them. Resolve collisions on the sheet rather than in the app: two items sharing a SKU string scan to the wrong record every time, and nobody notices until a count disagrees.
6. Who may type. Creating and editing items needs the User role or above. Owner or Admin is required for locations, teammates and devices. Viewers cannot adjust stock. Decide this before you hand the sheet to a temp, and set the roles as you send the invites — see roles and permissions.
| Decision | The rule to write down | Cost of changing it after 400 items |
|---|---|---|
| What is one item | One thing you count and reorder as a unit; assembled bundles are kits | Re-typing both records and reconciling a quantity that was counted twice |
| Unit of measure | One tracking mode and one unit per item, stated in the name too where it is ambiguous | Every historical quantity on that item is wrong and nothing converts it |
| Locations | One record per item per site; no transfers, so two adjustments to move stock | Re-typing the whole catalog at the other site, by hand, one editor at a time |
| Naming format | One pattern, applied in the sheet before entry | Renaming 400 items individually, with no bulk edit and no multi-select |
| SKU scheme | One primary SKU, manufacturer code kept as a second SKU, no shared strings | Scan-to-create silently makes duplicates and scans hit the wrong record |
| Who may type | User or above to create items; Owner or Admin for locations and teammates | A stalled entry session, or a location deleted along with everything in it |
The setup order for a brand-new account is short: create the account, create the first location, invite the people who will be typing and set their roles, then start. Getting started covers the account steps.
Both are Owner/Admin only, both wipe every label template across the whole organization, and both write to the shared cloud, so they hit the whole team rather than the device that ran them. Reset to Sample Data also clears the org-wide supplier and customer directories, not only the current location's records. Use them on an empty account before day one, or not at all.
Clean in the spreadsheet, where you still have sort, filter, find-and-replace and the delete key. None of those exist once the data is in item records — there is no bulk edit and no multi-select in the app, so the cleaning either happens on the sheet or it does not happen. Five passes, in this order, in one sitting, with one person deciding. A dedupe run by committee produces a third version of the sheet.
Budget it at about five seconds a row to scan and decide.
The failure this prevents is starting at row one and typing until morale runs out — you finish with every item beginning with A and none of the items that cause problems.
Rank the survivors by annual usage value (annual units used × unit cost) and cut at roughly 80% and 95% of cumulative value. Ranking items before you do anything else works that through with a table; if you already ranked for a count program or a reorder-point review, reuse the list rather than building a second one. Stockout has no A/B/C field, so the ranking stays in your working file. Override it wherever you know better — a $4 fuse that stops a line is a day-one item whatever its usage value.
Three groups, three treatments. A items get a full record on day one, with a Low Stock At value you have actually worked out. B items get a short record — name, SKU, quantity, Low Stock At — in the same week. C items are not typed at all; they arrive by scan-to-create as they are handled. Star the A items on the Inventory screen — bookmarks are per device, so each person stars their own.
If the A list runs past about forty items, the cut is wrong. Forty full records is a bit over an hour of typing and about half an hour of counting a month later. A hundred and fifty is neither, and it will not get done.
Nine fields make what this guide calls a full record: name, SKU, quantity, Price At Cost, Price At Retail, Storage Spot, Max Capacity (units), Low Stock At and Near Capacity At. Four make a short one: name, SKU, quantity, Low Stock At. Decide which band gets which before you start rather than item by item — the deciding is what costs the time, not the typing. The item editor documentation covers every field.
Fill Storage Spot standing in front of the shelf, not from the sheet. It is free text with no zone or bin hierarchy, and the funnel sheet filters on the whole string — so "Aisle 1, Shelf A" and "Aisle 1 Shelf A" become two separate entries in that filter and neither one lists the whole aisle. Write the pattern down next to the naming format in decision four and use it on every record.
Set the threshold as you go and never as a second pass. "Thresholds later" is a second trip through a hundred and twelve records. What to put in Low Stock At is arithmetic you do outside the app: Stockout does not compute a reorder point, does not store one, and has no safety-stock field. Working the number out takes about ten minutes an item once usage and lead time are to hand, and a rough number entered now beats a precise one entered never.
Settings carries a Default Low Stock Threshold applied to newly created items. It defaults to 5 and is stored per device rather than synced, so every item lands on 5 until you type the real number — and two people typing on two devices can seed two different defaults. Leave it at 5 and treat every item still showing Low Stock At = 5 as unfinished.
A percentage threshold is a percentage of that item's Max Capacity, never of usage or demand, and with no Max Capacity set it resolves to zero and never fires. Use # mode for a calculated number. And because Low Stock is evaluated before Max Capacity, an item whose low threshold sits at or above its Max Capacity reads Low Stock even when the shelf is physically full.
Turn Auto-Remove at Zero off for the duration. It deletes an item once an adjustment takes it to zero, which is not what you want while first-pass quantities are still being corrected.
Let the scanner type the SKU. 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. When a scanned code matches nothing, Stockout offers Create New Item with the SKU pre-filled, or Add to Existing Item. That is scan-to-create, and it is the entire strategy for the C tail. The scan buttons live in the footer of the Inventory screen, they are hidden for Viewers, and scanning applies to inventory items only.
For parts that carry no code, you can print one — but only for the parts you could not scan, and expect the first pass to be slower than typing. A label template puts the item's SKU or its Name in the code, and you export one filled-in label at a time as a PNG. Choosing between a printed barcode, a QR code and an NFC tag is a decision worth making once; the steps are in label printing.
Work in 45-minute sessions. As a rule of thumb accuracy falls off after that, and every error costs more to find than it did to make.
If two people type at once, split the sheet by row range rather than by whoever gets there first — when two people change the same field at once the last change saved wins, and only changed fields sync.
Before typing a row, search its SKU. Search is live, case-insensitive and partial across name, SKU and category, and during a migration it is the only duplicate check you get.
These are planning figures, not measurements: 90 seconds for a full record, 45 for a short one, 30 for a scan-created one, each with 20% added for interruptions. Time your own first ten records and replace them — a sheet that needs a decision on every row runs at half these speeds. Plan against the right-hand columns.
| Record type | Fields typed | Seconds each (typing / with 20% overhead) | Items per hour | 100 items |
|---|---|---|---|---|
| Full record | 9 | 90 / 108 s | 33 | 3 h 0 m |
| Short record | 4 | 45 / 54 s | 67 | 1 h 30 m |
| Scan-to-create | 3 (SKU pre-filled) | 30 / 36 s | 100 | 1 h 0 m |
The bottom row is why the tail is cheap: the SKU arrives from the barcode, so only three fields get typed. It is also why the tail should never be scheduled as a block — those items appear at the bench, a few a day, for months.
Pairing helps less than it looks. Assume a reader-and-typist pair manages about 1.6× one typist rather than 2×: the 131 minutes of keying becomes roughly 82 minutes elapsed but costs 164 person-minutes — 49 minutes of calendar time and a second pair of eyes, bought for 33 extra person-minutes. Worth it on the A list, where an error is expensive and hard to find later. Not worth it below that.
One caveat about the tail. Those 304 C items would be 3 hours 2 minutes if you sat down and did them in a block, and you never will. They spread across months at a handful a day, and the ones nobody handles again are never typed at all — if half of them go untouched for a year, the tail costs about an hour and a half in total, thinly enough that nobody notices.
Count what you typed, not the whole stockroom. The point is to test the transcription rather than the shelf, and transcription is where a migration goes wrong — the picking was already fine yesterday.
Score it as exact matches, by item rather than by unit, because "close" is not a match.
Transcription accuracy = items counted that matched exactly ÷ items counted
If the B sample misses 90%, the sample was the warning — count the rest of the B list rather than only fixing what it turned up.
Correct anything that misses the same day. Single units go through the + / − buttons on the item card; a bulk add or remove goes through the three-dot menu → Adjust, which shows a live preview before you commit. Adjusting stock needs the User role or above, so a Viewer cannot do it. And an adjustment can never take quantity below zero — it stops there, and the movement quietly under-records by the difference.
Editing an item's quantity in the item editor on the web writes no stock movement and raises no alert. Use the Adjust sheet whenever the change should be recorded.
The web app does not remember which location you were on: every page load selects the first location alphabetically, so check which location is selected before you adjust anything. The Windows and Android apps store the active location per device, which means two people on the same account can be looking at different sites without either of them realizing.
Verify once, then stop. How often to count afterwards, how many items, and who owns the round is a separate discipline with its own arithmetic.
Take a backup the moment the A list is in, and another when the tail stops trickling. Two files, dated, stored somewhere that is not the laptop doing the typing. Each takes about a minute.
The file is one timestamped JSON covering items, kits, equipment, checklists, suppliers, customers, folders, work orders and label templates, together with their child rows. Activity logs and stock movements are not in it.
One file covers the whole account, not one site. That is exactly what you want on the day somebody deletes a location and takes every item, kit, piece of equipment and checklist at that site with it.
Restore merges by ID — new records added, existing ones updated, nothing deleted — and it marks every row it writes as not deleted. Restoring an older backup therefore brings back records the team deleted after that backup was taken, and nothing is removed to compensate. Reconcile afterwards rather than assuming it only filled in what was missing.
A backup binds to the account that created it: not a migration path between two Stockout accounts, not something you hand to a colleague to import, and not a route in from a spreadsheet. Restore, Reset to Sample Data and Clear Data all write to the shared cloud, so they affect the whole team rather than the device that ran them. Backup and restore has the steps.
Pick the date before you start typing and write it at the top of the sheet. Ten working days from the first entry session is enough; fourteen is the outside limit. Miss it and you are running two records indefinitely.
Two live records diverge at the rate stock moves and there is no third record to arbitrate: five issues a day recorded in only one of the two leaves 50 movements out of step after ten working days, with no way to tell which record is wrong.
During the overlap, one direction only. Stock changes go into the app and the sheet is read for reference. Never the reverse, and never both.
Save a copy named ARCHIVE with the date on it, set it read-only for everyone, and delete every formula in the live copy that computes a quantity. A sheet that still adds up is a sheet somebody will still trust.
The tail is not a reason to extend the date. C items appear through scan-to-create as they are handled, and a part nobody touches during the overlap window was never going to be typed anyway.
On the freeze date, take the second backup and switch on the Low Stock and Out of Stock alert types in Settings. The four types — Low Stock, Out of Stock, Near Capacity, Full Capacity — toggle independently and apply to every item at the location that device is set to; there is no per-item alert switch, so it is the A-item thresholds you typed that decide which ones actually fire. Expect a burst over the first few days as thresholds meet reality. Alerts 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 — so the burst settles on its own.
Set alert recipients on every device that should send. They are a comma-separated list saved per device or browser and they do not sync, and they do not fire at all while a device is in the All Locations view. Email alerts work on every platform; mobile push is the Android app.
Under about fifty items, one person handling the stock, nothing time-critical when it runs out and no second site — a sheet is the cheaper answer and migrating is a hobby. The decision rule is who needs to read the number and where they are standing when they need it, not how many rows there are.
The arithmetic in this series stays in a spreadsheet permanently. Reorder point, safety stock, service levels and Z factors, annual usage value and the A/B/C cut, inventory turnover, days of supply, carrying cost, fill rate, dead stock and aging: Stockout calculates none of them, charts none of them and stores none of them. The single reorder-ish input in the whole product is the per-item Low Stock At threshold.
Supplier data stays with you too. Stockout does not track, store or know supplier lead time, minimum order quantity, supplier part numbers or supplier pricing. What it holds is an org-wide directory of vendor name, ordering-portal URLs and contacts, with items linked from the item editor's "Sourced from" picker. Reordering means tapping a saved portal link and placing the order on the vendor's own site.
If you want the movement data back in your own sheet, the read-only public API is the route: GET and HEAD only across 24 collections, including the stock-movement ledger, with keys minted at Settings → Developers → API Keys by Owners and Admins. Read-only means read-only. It cannot push counts back, cannot power a two-way integration and is not a way to get a spreadsheet in, and a key reads the whole organization rather than one site. See the API documentation.
One expectation to set before somebody opens Analytics on a week-old catalog. Trend lines are reconstructed by unwinding stock movements from today's on-hand total rather than stored as point-in-time snapshots, so a freshly typed catalog has no history at all — the charts start the day you start recording movements. Analytics reads at most the last 13 months of stock movements, and deleting an item removes it from analytics entirely, including its past movements, so every historical point moves when you do. Analytics ships exactly eight charts — Total Stock Per Day, Weeks Cover, Sell Through, Intake & Outtake, Stock to Capacity, Stock at Cost vs Retail, Work Order Revenue vs Cost and Work Order Profit — and the features page covers the rest of what ships.
The sheet is where you work out what the number should be; the app is where the number lives and gets watched.
In execution order. Nothing here takes long on its own, and doing them out of order is what turns four and a half hours into a fortnight.
There is no import, so the app's contribution starts after the typing. 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.
Week two is undramatic, which is the point of doing week one in this order. The A items get counted again, the two or three thresholds that fired wrongly get corrected, a handful of C items appear at the bench each day, and the sheet stays read-only. What makes the new record worth the afternoon is what you do with it next: the practices that stop stockouts are the reason for the whole exercise. The rest of the series works through the arithmetic and the routines that sit around them.
No. There is no CSV, Excel or Google Sheets import, no bulk upload and no paste-a-list entry mode, and the public API is read-only, so it is not a way in either. The only bulk path into an account is restoring a backup JSON that the same account produced, plus Reset to Sample Data, which loads demo records. Every real item is typed into the item editor or created from a scan, so the practical plan is to make the spreadsheet earn its rows first: set the critical spares aside, delete anything else with no movement in twelve months, merge duplicates, then type only the items that carry the value and let scanning build the rest.
Plan on about 3 hours for 100 full records (name, SKU, quantity, Price At Cost, Price At Retail, Storage Spot, Max Capacity, Low Stock At, Near Capacity At) at an assumed 90 seconds each plus a 20% allowance for interruptions, which works out at roughly 33 items an hour. A short record of four fields runs at 45 seconds, 54 with the same allowance, or about 67 an hour, so 100 short items is 1 hour 30 minutes. Items created from a scan are faster again at roughly 100 an hour, because the SKU arrives from the barcode. These are planning figures, not measurements — time ten of your own records in the first session and re-plan from there.
Three categories. Rows with no movement in the last twelve months: delete them or park them on an ARCHIVE tab, and do not type them — but set the critical spares aside first, because parts held against a line stoppage, a regulatory requirement or a replacement cycle longer than a year sit still by design and belong in the app whatever their last issue date. Duplicate rows for the same part under two spellings: merge them and keep both codes, since an item can carry multiple SKUs and scans match any of them, but go and count the part rather than adding the two quantities together on trust. And the long tail of cheap, slow items: leave them out entirely and let them arrive through scan-to-create the first time somebody handles one, because anything nobody handles again was never worth the keystrokes. On the 620-row sheet this guide works through, 204 rows — about a third — failed one of those tests, which is roughly three hours of typing never done. Your own share will differ; the point is to find out before you start typing.
Decide before you type, because it is the most expensive decision to reverse. Every item, kit, piece of equipment, checklist, folder and work order belongs to exactly one location, the same product at two sites is two separate records with independent quantities and thresholds, and there is no transfer workflow — moving stock between sites is two separate adjustments. Only Owners and Admins can add, edit or delete a location, though every role including Viewer can switch between them, and deleting a location permanently removes every item, kit, piece of equipment and checklist at that site. A brand-new account has to create its first location before it can use the app at all.
Count what you typed, not the whole stockroom, and score it as exact matches by item: transcription accuracy = items counted that matched exactly ÷ items counted. Count every item in your top group and a sample of about twenty from the next one — 54 items takes roughly 36 minutes — and hold a 95% bar on the top group and 90% on the sample. Correct anything that misses the same day with the + / − buttons or the three-dot menu → Adjust, which needs the User role. Two web-app details matter here: editing quantity in the item editor on the web writes no stock movement and raises no alert, so use Adjust, and the web app does not remember your location — every page load selects the first location alphabetically, so check which location is selected before adjusting anything.
For a short, dated handover only. Pick the freeze date before you start — ten working days from the first entry session — and during the overlap send every stock change to the app and read the sheet for reference only, never the reverse. Two live records diverge at the rate stock moves: five issues a day recorded in only one of them leaves 50 movements out of step after ten working days, with no third record to settle which is right. On the date, save a copy named ARCHIVE with the date, make it read-only and delete every formula that computes a quantity. What does stay in a spreadsheet permanently is the arithmetic — reorder point, safety stock, usage-value ranking, turnover and carrying cost. Stockout calculates and stores none of those; its only reorder-ish input is the per-item Low Stock At threshold.
Clean the sheet, rank by value, and type the items that actually cause problems. Stockout holds the thresholds and tells you when one is crossed.