How to Set Optimal Reorder Points in Odoo from Real Sales History
Turn guesswork min/max reordering rules into data-driven stock targets — updated automatically
Odoo’s reordering rules are powerful — if the min/max numbers in them are right. In most companies they were typed in once, based on gut feeling, and never touched again. This guide explains what stale reorder points cost, why spreadsheet recalculations don’t stick, and how AutoSTOCK computes an optimal stock target for every product from your real Odoo sales history and writes it back as standard stock.warehouse.orderpoint rules your procurement already understands.
💸 What Guesswork Reorder Points Cost You
Every product in your warehouse answers to two numbers: the minimum that triggers replenishment and the maximum you fill up to. Get them wrong in either direction and you pay:
- Set too low: stockouts on your best sellers. Customers wait, orders are cancelled, and sales quietly leak to competitors who had the item on the shelf.
- Set too high: working capital frozen in slow movers, shelf space wasted, and dead stock that eventually gets written off.
- Set once and forgotten: demand changes every season, but rules typed in two years ago still drive today’s purchasing. The gap between real demand and stored rules widens every month.
- Not set at all: Odoo’s replenishment has nothing to work with, so purchasing runs on memory, hallway conversations, and panic orders with expensive express shipping.
The math behind a good reorder point — average demand, demand variability, vendor lead time, desired service level — is well understood. The problem is nobody has time to run it for hundreds or thousands of SKUs, month after month.
🔧 How Teams Usually Try to Fix It
1. Manual rules in Odoo
Odoo lets you create a reordering rule per product with min and max quantities, and its scheduler will faithfully act on them. But Odoo does not tell you what the numbers should be — that judgment is yours, per product, forever. With more than a few dozen SKUs, the rules fossilize.
2. The quarterly spreadsheet
Export sales, build formulas, compute new min/max values, then retype them into Odoo one by one. It works — once. The export is stale the day after, the retyping introduces errors, and the exercise is painful enough that “quarterly” becomes “yearly” becomes “never”.
3. Custom scripts or heavyweight planning modules
A developer can script the statistics, but the script needs maintenance, and its output still has to land in Odoo safely. Full-blown demand planning suites do the math well but bring their own database, their own screens, and an implementation project — heavy for an SMB that just wants correct min/max values in the system it already runs.
🤖 The Automated Way: AutoSTOCK
AutoSTOCK is a BOTS4.me bot that analyzes your real sales history in Odoo — 120 days by default, configurable — computes an optimal stock target per product, and writes the result back as native Odoo reordering rules. No new planning screens: your Odoo keeps working exactly as before, just with numbers that are finally right and kept fresh automatically.
Real sales history analyzed
Optimal target computed per product
Native min/max rules written to Odoo
Report emailed after every run
📐 Five optimization modes — pick the one that fits
Coverage: keep N months of average demand in stock (default 2). Simple, predictable, easy to explain to the whole team.
Service level: statistical Gaussian safety stock for a chosen availability target between 80% and 99%, using each product’s real vendor lead time from Odoo — longer lead times automatically mean more safety stock. Erratic or thin demand is excluded so statistics are never applied where they don’t belong.
Demand percentile: distribution-free safety stock derived directly from your actual demand pattern — no normality assumption at all.
Hybrid: automatic per product — AutoSTOCK classifies every product by how regularly it actually sells, then applies Service level math to the steady sellers and Demand percentile math to the erratic ones. Products too sparse for either are left alone instead of getting a misleading target.
Recent-weighted: no cut-off date — the same idea as Coverage, but recent sales count more than old ones: a sale counts half as much once one lead time has passed, a quarter after two. Nothing drops off a cliff at the edge of the analysis window.
⚠️ Qualification gates — one-off items never get stocked
A product only receives a stock target if enough different customers bought it enough times — both thresholds configurable. That one special-order machine you sold once will never appear on your shelf as “safety stock”.
Set it up in about five minutes
- Step 1 — Register: create an account at bots4.me/bots and add AutoSTOCK. First month free; a permanent freemium tier (report-only, with daily limits) exists if you just want to look.
- Step 2 — Connect Odoo: install the free BOTS4.me Connect module (Odoo 13–19). Odoo Online uses a zero-code XML helper plus an API key from Settings → Users → Account Security; Odoo.sh and on-premise get the one-click Python connector. One connector serves all eleven BOTS4.me apps.
- Step 3 — Pick mode and period: choose Coverage, Service level, Demand percentile, Hybrid, or Recent-weighted, set the analysis window (120 days by default), and set qualification thresholds. Coverage works on every paid tier; the other modes are available at the Business tier.
- Step 4 — Start in Demo Mode: AutoSTOCK runs the full analysis and emails the complete report — computed targets, stock cover in months, before/after rule values — while changing nothing in Odoo. Report-only mode is built in for as long as you want it.
- Step 5 — Go live: enable rule writing and set the run schedule — from every 15 minutes to weekly, within your operating hours. Targets are recomputed and rules refreshed automatically from then on. Writing rules to your ERP requires the Family tier or higher.
📅 What Day-to-Day Operation Looks Like
After every scheduled run you receive a stock optimization report: computed targets, current stock cover in months, products that need replenishment, and exactly which rule values changed. Reports and logs come in your choice of 31 languages. In the dashboard at bots4.me/bots you get per-app Control, Logs, and Settings tabs, Bot Power on/off, and every feature individually toggleable — with full decision logs for every run. The platform is EU-hosted, GDPR-native, and protected with 2FA.
Because AutoSTOCK writes standard Odoo reordering rules (regular stock.warehouse.orderpoint min/max records), nothing else in your workflow has to change: Odoo’s own replenishment, your buyers, and your existing reports all keep working with the same records — now continuously kept honest by real sales data. It is the same platform that runs Mail2ERP for IMP Kontakt, which processes roughly 4,700 RFQs and orders per month.
🔄 From Stock Targets to a Closed Inventory Loop
Correct reorder points are step one of a fully automated replenishment loop. Step two: AutoPURCHASE turns those targets into draft purchase orders — computing per-product needs, grouping lines per preferred vendor, and respecting vendor minimums, so you only review and confirm. Step three: when suppliers confirm, Supplier2ERP reads the confirmation emails and updates your POs in Odoo with confirmed prices, quantities, and delivery dates.
AutoSTOCK sets the targets → AutoPURCHASE drafts the orders → Supplier2ERP keeps them honest. Own all three and replenishment becomes something you supervise, not something you do.
🌍 Works Beyond Odoo?
AutoSTOCK supports Odoo versions 13 through 19 today — Odoo Online, Odoo.sh, and on-premise — with more ERPs on the roadmap. The wider BOTS4.me platform already connects to 21+ ERPs (SAP Business One, SAP S/4HANA, Oracle NetSuite, Dynamics 365, QuickBooks, Xero, ERPNext, and more) through its other apps, so if you need stock optimization on another system, tell us which one — integrations are prioritized by demand.
❓ Frequently Asked Questions
How do I calculate optimal reorder points in Odoo automatically?
Odoo itself executes reordering rules but does not compute what min/max should be. AutoSTOCK adds the missing calculation: it analyzes your real sales history from Odoo (120 days by default), computes an optimal target per product using one of five optimization modes — coverage, service level, demand percentile, hybrid, or recent-weighted — and writes the result back as standard Odoo reordering rules on a schedule you choose.
What data does AutoSTOCK use to compute stock targets?
Your actual Odoo sales history over a configurable period (default 120 days), plus each product’s real vendor lead time from Odoo in service-level mode. Targets are based on what customers really bought — not on assumptions or industry averages.
What is the difference between the coverage, service level, demand percentile, hybrid, and recent-weighted modes?
Coverage keeps N months of average demand in stock (default 2) — simple and predictable. Service level computes Gaussian safety stock for a chosen availability target between 80% and 99%, using real vendor lead times. Demand percentile derives safety stock directly from your demand distribution without assuming it is normal. Hybrid classifies each product by how regularly it sells and applies Service level math to the steady sellers, Demand percentile math to the erratic ones. Recent-weighted works like Coverage but lets recent sales count more than old ones, so nothing drops off a cliff at the edge of the window. You can switch modes anytime in the dashboard.
Does AutoSTOCK overwrite my existing Odoo reordering rules?
It maintains standard stock.warehouse.orderpoint min/max records so your own procurement flow keeps working with them. If you prefer to look before anything is written, report-only mode and Demo Mode run the full analysis and email the report — including before/after rule values — without changing your ERP.
How do I stop one-off or special-order products from getting a reorder point?
AutoSTOCK’s qualification gates only assign a stock target when enough different customers bought a product enough times — both thresholds are configurable. Products that fail the gates simply never get a rule, so one-off items stay out of your warehouse.
Does it work with Odoo Online, Odoo.sh, and on-premise?
Yes — Odoo 13 through 19 on all three hosting types. Odoo.sh and on-premise use the free one-click BOTS4.me Connect Python module; Odoo Online, which forbids custom Python, uses a zero-code XML helper module plus an API key from Settings → Users → Account Security.
Is there a free tier for AutoSTOCK?
Yes. Beyond the first free month on paid plans, AutoSTOCK has a permanent freemium tier: full stock analysis and email report in report-only mode, with daily limits and no rules written to your ERP. Upgrade when you want the rules maintained automatically.
📚 Related Guides
- Hub: How to Automate Odoo End-to-End: From Email Order to Paid Invoice
- Next step in the loop: How to Automate Purchasing in Odoo: Draft POs from Real Needs
- Closing the loop: How to Import Supplier Order Confirmations into Odoo Automatically
- The sales side: How to Automate Order Confirmation, Delivery and Invoicing in Odoo
- Connector setup: How to Connect Odoo to BOTS4.me (Odoo 13–19)
Stop Guessing Your Reorder Points
Connect Odoo in about five minutes and get your first full stock optimization report in Demo Mode — zero changes to your ERP. First month free, cancel anytime.