Set this up in minutes
Nested locations that mirror your layout (3 on Starter, 50 on Business, unlimited on Enterprise), stock tracked per location, and a mobile app for the floor. Flat plans from $19/mo.
Start free trialYou did the sensible thing. You went through the item list, put a number in the minimum column, and waited to be told when something was running out. Weeks later you are standing at an empty shelf that never sent you anything.
The alert is usually working. The number is the problem, and the specific number is almost always zero.
Why zero is the off switch#
Every threshold system has to answer one question before it can warn you about anything: which items has a human actually configured? Almost none of them add a separate "alerts on/off" checkbox per item, because that is a second field to maintain on thousands of rows. Instead they use the threshold itself as the signal. A threshold above zero means somebody thought about this item. A threshold of zero means nobody did.
So the filter reads "warn me when stock is at or below the threshold, and the threshold is greater than zero." An item sitting at zero threshold is skipped entirely - including when its stock is also zero.
That second part is what catches people. You would think an item at zero on hand is the most urgent thing in the building. But 0 <= 0 is true for every single unconfigured row in the file, and a freshly imported catalog is thousands of rows at zero stock and zero threshold. Without the greater-than-zero rule, the first email you would ever receive is a critical alert about hundreds of items you have not even counted yet. You would delete it. Then you would delete the next one. Within a week you would have trained yourself to ignore the only message the system sends, and the one real stockout in month three would go past you with the rest.
So the rule exists for a good reason, and it is not going away. It just means the number you write is a switch as much as a threshold, and writing zero is the same as writing "never tell me about this one."
If you take nothing else from this page: on the sheet where you work out your reorder points, if the arithmetic gives you zero, do not write zero. Write the smallest whole number you would genuinely want a warning at, or leave the item off the sheet on purpose. Both are honest. Zero is neither - it looks configured and behaves unconfigured.
What number to actually write#
The textbook formula is average usage times lead time, plus a buffer. That is right, and it is also the part everyone already knows. The judgment is in the three inputs.
Average usage per week. Use the last three months if you have them, not the last month, and not the best month. Pull the number from whatever record you have - stock movements, sales, the pile of pick slips on the desk. If you genuinely have no history, ask the person who does the picking. They will be roughly right, and roughly right beats a blank field.
Lead time in weeks. Not what the supplier's website says. What actually happened the last three times you ordered, measured from the day you sent the order to the day the box was on your shelf and counted. If those three numbers were 1, 2 and 5 weeks, your lead time is closer to 5 than to 2, because the whole point of the number is to survive the bad case.
The buffer. This is where people over-engineer. There is a statistically correct way to do it involving demand variability and a service-level factor, and for a small operation there is a faster way that gets you most of the way there: add one more week of usage for anything you cannot easily get elsewhere, and nothing for anything you can pick up locally the same afternoon. A specialist casting with one supplier gets a buffer. Standard fasteners from a trade counter do not - your buffer is the shop down the road.
So: (weekly usage x lead time in weeks) + buffer, rounded up to a whole number, and never below one.
A worked example. You use about 12 units a week. Your supplier genuinely takes 2 weeks. It is a specialist part, so add a week of cover: 12. That gives (12 x 2) + 12 = 36. When you drop to 36, you order - and you have about three weeks of stock in hand while the order is in transit.
Now the slow mover. You use one of these every six weeks. Weekly usage is 0.17. Lead time is 2 weeks. The arithmetic gives 0.34, which rounds to zero, which switches the item off. This is the case the whole page exists for. Round it up to 1. You will get warned while the last one is still on the shelf, which is exactly when you want to know about a part you only touch every six weeks. If it is a critical spare, write 2 so you are warned with two still in hand.
The order to do this in#
Do not do the whole catalog. That is the mistake that turns this into a project you abandon.
- Take the top 30 to 50 items - the ones that would actually stop work if they ran out. For most shops that is a small list you could write from memory.
- Fill in the three inputs for those only. One sitting, an hour or two.
- Round every result up, minimum one. Check the sheet for zeros before you load it. Any zero left on the sheet is a decision to be silent about that item - make sure it is deliberate.
- Load them and leave it alone for a month.
- Then review what happened. Two failure modes, opposite fixes. If you got a warning and then sat on the stock for weeks without it moving, the threshold is too high - lower it. If you ran out with no warning, or the warning arrived too late to be useful, your lead time was optimistic - raise it.
- Only then extend the list. Add the next tier once the first tier's numbers have proven themselves.
The review step is the one that gets skipped, and it is the one that makes the numbers good. Your first pass is a guess. The second pass, informed by a month of reality, is a system.
Two things that will still surprise you#
A threshold reads your total, not your shelf. If you hold stock in more than one place, the check is commonly against the company-wide figure rather than per site. Ten units spread as nine in the main store and one at the bench reads as ten - comfortably above a threshold of five - while the person at the bench is out. If that split matters to you, a single threshold per item cannot express it, and you need either a separate item row per site or a standing habit of restocking the bench from the main store on a schedule.
A daily check is not an instant one. Plenty of systems sweep on a schedule rather than the moment a quantity changes. There is a reason for that - a per-change trigger emails you five times during one morning's picking - but it does mean your threshold needs to absorb up to a day of usage before you hear anything, which is another reason to round up rather than down. Worth checking which kind you have.
Where the product fits#
If you use InventoryQuick, here is exactly what the low-stock alert does and does not do.
It runs once a day, at 09:00 UTC, and sends you the items at or below the reorder point by email, showing current stock against the minimum. SMS by default carries only items that hit zero, up to three named, and a connected Slack, Teams, Zapier or webhook lists the first ten. The job grades each item internally (critical at zero, high at or below half, medium otherwise) to decide which items SMS sends (Critical only by default - change it under Settings > Notifications > SMS Alert Types); integrations list the first ten regardless. It is a daily sweep, not an instant one, so the timing caveat above applies to it. Items in the trash are left out.
Four limits worth knowing in the same breath:
- It only considers items whose reorder point is above zero, for the reason described at the top of this page. This is the one that catches people.
- It compares against your company-wide total on hand, so it cannot tell you one location is empty while another is full. There is no per-location threshold to set - the reorder point is a single field on the item.
- Seeded sample rows are excluded. Items whose SKU begins with
SAMPLE-are skipped deliberately, because they ship set low and would otherwise make your first-ever email a critical alert about demo data. If you are testing the feature on sample rows and seeing nothing, that is why - test it on a real item. - Two silencers fail at different points, and one of them is invisible on the settings screen even though you can clear it. If email notifications or the low-stock alert email is switched off - and SMS alerts are not switched on against a verified number and you have no active Slack, Teams, Zapier or webhook connection either - your account is skipped before the job looks at your items at all, so there is nothing to find in a log. A past one-click unsubscribe does two things: it switches Email Notifications off, and it leaves a flag that blocks the email at the final send step - switching Email Notifications back on in Settings clears both. That block lands at the final step, after the check has already found your low items, because every message honors its unsubscribe link. The settings screen does not currently tell you that you are unsubscribed, so if alerts stopped after you unsubscribed from something else, that is the likely cause. Check the two switches first; switching Email Notifications back on also clears a past unsubscribe, though the settings screen never shows you that you had one.
The reorder point is also an importable column, so you can work the numbers out in a spreadsheet and load the set at once rather than typing them in one at a time. Two things about that import are worth knowing before you use it.
The import offers a "default minimum" that arms every row - useful precisely because an imported catalog with no threshold column can never fire a single alert. It is labeled "There is no reorder point in this file. Set one for all N items?", and it appears only when no column in your file maps to the reorder point. That is the part worth knowing: because the offer is gated on the column being absent entirely, it cannot reach a zero you typed on purpose. If your file has a reorder point column, every whole number is written as you typed it (a decimal is rounded, so 0.34 becomes zero), and a blank cell stays silent.
The other one is friendlier. When you come back after a month to load your revised numbers, choose Update for duplicate SKUs and keep the file to sku, name and reorder_point: Update writes only the columns the file carries, but a name is required on every row and is written too, so export first and edit that file; descriptions, categories and suppliers stay as edited - and a file with no threshold column at all leaves your existing reorder points untouched rather than wiping them to zero.
CSV import is available on every paid plan, including Starter, and throughout the 7-day trial. An expired account cannot import.
The sheet#
The template below is one row per item and three input columns (weekly usage, lead time in weeks, buffer), a working-notes column, and the reorder point you land on. The stop rule is printed on the sheet itself, because that is where you need to read it - at the moment the arithmetic hands you a zero and you are about to write it down.
It is a plain CSV. Fill it in wherever you like and keep it as your own working record. If you do load it, the column names sku, name and reorder_point are ones the importer recognizes, so they land where you would expect. The other columns are named so that the importer does not recognize them, which means the preview step shows them for you to assign or ignore rather than writing them anywhere by surprise. One caution if you rename them: a column called notes, note or tags is recognized and will be written onto the item, so keep your private working remarks under a header the importer has never heard of. Delete the ten note lines at the top and the two example rows before you upload - the importer reads the first line as the header.
Download the free reorder point worksheet (CSV) - two worked example rows, the stop rule printed inside the file, and blank rows to fill in. No signup, nothing uploaded.
Related: Reorder point formula and calculator | How to calculate safety stock | How to prevent stockouts | ABC analysis worksheet | Your first item list
Common questions
Why does my reorder point never trigger an alert?
The usual cause is a threshold of zero. In most systems the filter reads warn me when stock is at or below the threshold, and the threshold is greater than zero - so an item sitting at zero threshold is skipped entirely, including when its stock is also zero. Writing zero is the same as writing never tell me about this one: it looks configured and behaves unconfigured.
Why do alerting systems ignore a reorder point of zero?
Because 0 is at or below 0 for every unconfigured row in the file, and a freshly imported catalog is thousands of rows at zero stock and zero threshold. Without the greater-than-zero rule, the first email you would ever receive is a critical alert about hundreds of items you have not even counted yet. You would delete it, and the next one, and within a week you would have trained yourself to ignore the only message the system sends.
What reorder point should I write for a slow-moving item?
Round up, never below one. If you use one of these every six weeks, weekly usage is 0.17 and a two-week lead time gives 0.34, which rounds to zero and switches the item off. Write 1 instead and you get warned while the last one is still on the shelf, which is exactly when you want to know about a part you only touch every six weeks. If it is a critical spare, write 2 so you are warned with two still in hand.
How do I work out the three inputs?
Average usage per week from the last three months, not the last month and not the best month - pull it from stock movements, sales, or the pile of pick slips, and if you have no history at all, ask the person who does the picking. Lead time from what actually happened the last three times you ordered, measured from the day you sent the order to the day the box was on your shelf and counted; if those three numbers were 1, 2 and 5 weeks, your lead time is closer to 5 than to 2. Buffer: one more week of usage for anything you cannot easily get elsewhere, nothing for anything you can pick up locally the same afternoon.
When does the InventoryQuick low-stock alert run?
Once a day, at 09:00 UTC. It sends you the items at or below the reorder point by email, showing current stock against the minimum. SMS by default carries only items that hit zero, up to three named, and a connected Slack, Teams, Zapier or webhook lists the first ten. The job grades each item internally (critical at zero, high at or below half, medium otherwise) to decide which items SMS sends (Critical only by default - change it under Settings > Notifications > SMS Alert Types); integrations list the first ten regardless. It is a daily sweep rather than an instant one, so your threshold needs to absorb up to a day of usage before you hear anything. Items in the trash are left out.
Can a low-stock alert tell me which location is empty?
No. It compares against your company-wide total on hand, so it cannot tell you one location is empty while another is full. There is no per-location threshold to set - the reorder point is a single field on the item. Ten units held as nine in the main store and one at the bench reads as ten, comfortably above a threshold of five, while the person at the bench is out. If that split matters to you, you need either a separate item row per site or a standing habit of restocking the bench from the main store on a schedule.
My low-stock alerts stopped arriving. What silenced them?
Two silencers fail at different points, and one of them is invisible on the settings screen even though you can clear it. If email notifications or the low-stock alert email is switched off - and SMS alerts are not switched on against a verified number and you have no active Slack, Teams, Zapier or webhook connection either - your account is skipped before the job looks at your items at all, so there is nothing to find in a log. A past one-click unsubscribe does two things: it switches Email Notifications off, and it leaves a flag that blocks the email at the final send step - switching Email Notifications back on in Settings clears both. That block lands at the final step, after the check has already found your low items, because every message honors its unsubscribe link. The settings screen does not currently tell you that you are unsubscribed, so if alerts stopped after you unsubscribed from something else, that is the likely cause. Check the two switches first; switching Email Notifications back on also clears a past unsubscribe, though the settings screen never shows you that you had one.
I set reorder points on the sample data and got nothing. Why?
Seeded sample rows are excluded. Items whose SKU begins with SAMPLE- are skipped deliberately, because they ship set low and would otherwise make your first-ever email a critical alert about demo data. If you are testing the feature on sample rows and seeing nothing, that is why - test it on a real item.
Can I import reorder points from a spreadsheet?
Yes. The reorder point is an importable column, so you can work the numbers out in a spreadsheet and load the set at once rather than typing them in one at a time. CSV import is available on every paid plan, including Starter, and throughout the 7-day trial; an expired account cannot import. The headers sku, name and reorder_point are ones the importer recognizes - but so are notes, note and tags, which will be written onto the item, so keep your private working remarks under a header the importer has never heard of.
Will the import default minimum overwrite a deliberate zero?
No. The offer appears only when the file has no reorder point column, so every whole number is written as typed (a decimal is rounded, so 0.34 becomes zero); a blank cell stays silent. It is labeled There is no reorder point in this file. Set one for all N items? - and because it is gated on that column being absent, it never reaches a zero you typed on purpose.
Will re-importing my revised numbers wipe the edits I made in the app?
No. Choose Update for duplicate SKUs and keep the file to sku, name and reorder_point: Update writes only the columns the file carries, but a name is required on every row and is written too, so export first and edit that file; descriptions, categories and suppliers stay as edited. And a file with no threshold column at all leaves your existing reorder points untouched rather than wiping them to zero.
More from the blog
Asset Numbering Scheme: How to Number Equipment That Moves (2026)
A bin code is the address of a place that stays put; an asset number is the identity of a thing that moves. That one difference decides everything: why you leave gaps in bin numbering but never in asset numbering, how many digits to pad to, what you must never encode, the leading-zero spreadsheet trap, and how to renumber without a big bang.
Your First Item List: A Starter Guide for a Back Room and a Spreadsheet
How a small operation builds its first usable item list — which six columns earn their place, how to name locations you will still recognize in a year, and the reorder-point number that quietly turns alerts off.
8 Inventory Management Best Practices for Small Business
8 proven tactics to reduce stockouts and cut carrying costs. Reorder points, ABC analysis, cycle counting, barcode scanning, and supplier management.
After the Count: How to Investigate a Variance Before You Post It
Your count sheets are full and the numbers do not match. Here is how a small operation works out why before posting the adjustment - the four causes worth checking, in the order that finds them fastest, and the ones to stop chasing.