How to Track Inventory Metrics in Odoo 18: Complete Step by Step Guide
By Braincuber Team
Published on March 14, 2026
Inventory metrics are the backbone of profitable operations — yet most D2C brands fly blind, losing $14,200 monthly to stockouts and overstock. We've seen founders burn through cash because their warehouse guy typed a 0 instead of an O in the SKU field. This complete tutorial shows you how to implement automated inventory KPI tracking in Odoo 18, eliminating manual Excel VLOOKUPs and preventing costly inventory mistakes.
What You'll Learn:
- Configure Odoo 18 Inventory module for automated KPI tracking
- Set up essential metrics: turnover ratio, sell-through rate, days on hand
- Implement carrying cost calculations and shrinkage tracking
- Create automated dashboards and reporting workflows
- Integrate sales data for comprehensive inventory performance analysis
Understanding Essential Inventory Metrics
Before diving into Odoo configuration, let's establish why these metrics matter. Inventory metrics are quantifiable measures that evaluate the effectiveness of your inventory management. Without tracking these, you risk incurring significant carrying costs, lost sales due to low stock, and customer service issues from failing to meet demand.
Sales & Velocity Metrics
Track how quickly inventory moves and meets customer demand through turnover ratio, sell-through rate, and days on hand.
Cost & Efficiency Metrics
Monitor financial impact through carrying costs, average inventory value, and unit labor costs for warehouse operations.
Step-by-Step Implementation in Odoo 18
Configure Inventory Module Settings
Navigate to Inventory → Configuration → Settings. Enable Advanced Tracking, Multi-Step Routes, and Traceability options for comprehensive metric collection.
Set Up Product Categories for KPI Grouping
Create product categories under Inventory → Configuration → Product Categories. Assign Costing Method (FIFO, AVCO) and Valuation settings for accurate COGS calculations.
Configure Warehouse Operations
Under Inventory → Configuration → Warehouse Management, set up Routes for each operational flow: Receipt → Quality Control → Storage → Picking → Delivery.
Enable Automated Reordering Rules
Navigate to Inventory → Configuration → Reordering Rules. Set Minimum Stock, Maximum Stock, and Quantity to Order for each product to automate stock level monitoring.
Implementing Key Inventory Metrics
Inventory Turnover Ratio Setup
Create a custom report under Reporting → Inventory → Inventory Valuation. Use the formula: Inventory Turnover = Cost of Goods Sold / Average Inventory. Schedule this report to run monthly for trend analysis.
Sell-Through Rate Calculation
Navigate to Inventory → Reporting → Inventory Moves. Create a pivot table comparing Units Sold vs Units Received. Formula: Sell-Through Rate = (Units Sold / Units Received) × 100. Set up automated email alerts when rates drop below 75%.
Days on Hand Tracking
Use Inventory → Products → Product Variants to view current stock levels. Create a custom field for Days on Hand = (Average Inventory / COGS) × 365. Set up color coding: Green (0-30 days), Yellow (31-60 days), Red (61+ days).
Advanced Cost and Efficiency Metrics
Total Carrying Cost = Storage Costs + Insurance + Taxes + Obsolescence + Shrinkage + Opportunity Cost
Annual Rate = (Total Carrying Cost / Average Inventory Value) × 100
Per Unit Cost = Total Carrying Cost / Total Units
Set Up Carrying Cost Tracking
Create Analytic Accounts under Accounting → Configuration → Analytic Accounts for each cost category: Storage, Insurance, Taxes, etc. Automatically allocate these costs to inventory valuation monthly.
Inventory Shrinkage Monitoring
Enable Inventory Adjustment workflows. Use formula: Shrinkage % = (Recorded Inventory - Actual Inventory) / Recorded Inventory × 100. Set up automated alerts when shrinkage exceeds 2% of inventory value.
Critical Warning
Never skip physical inventory counts. Even with automated Odoo tracking, schedule quarterly physical audits to validate system accuracy and identify shrinkage patterns.
Creating Automated Dashboards
Build KPI Dashboard
Navigate to Apps → Dashboard. Create widgets for: Inventory Turnover, Sell-Through Rate, Days on Hand, Carrying Cost %, and Shrinkage Rate. Set real-time data refresh and color-coded alerts.
Set Up Automated Reporting
Use Settings → Technical → Automation → Automated Actions to schedule weekly KPI reports. Email PDF summaries to management with trend analysis and exception alerts.
| Metric | Formula | Target Range | Odoo Report Location |
|---|---|---|---|
| Inventory Turnover | COGS / Average Inventory | 8-12 times/year | Inventory → Inventory Valuation |
| Sell-Through Rate | (Units Sold / Units Received) × 100 | 75-85% | Inventory → Inventory Moves |
| Days on Hand | (Avg Inventory / COGS) × 365 | 30-45 days | Custom Dashboard Widget |
| Carrying Cost % | (Total Costs / Avg Inventory) × 100 | 15-25% | Accounting → Analytic Reports |
Integration with Sales and Operations
Connect Sales Data
Ensure Sales → Configuration → Settings has Inventory module enabled. This automatically links sales orders to inventory movements for accurate sell-through calculations.
Implement Lost Sales Tracking
Create a Lost Opportunity pipeline in Sales → CRM. Tag opportunities lost due to stockouts. Formula: Lost Sales Ratio = (Lost Sales Value / Total Potential Sales) × 100.
# Python script for Odoo automated KPI calculation
def calculate_inventory_kpis():
# Get current inventory data
products = env['product.product'].search([])
for product in products:
# Calculate turnover ratio
cogs = sum(move.value for move in stock_move_history_ids
if move.location_dest_id.usage == 'customer')
avg_inventory = product.quantity_available * product.standard_price
turnover_ratio = cogs / avg_inventory if avg_inventory > 0 else 0
# Calculate days on hand
days_on_hand = (avg_inventory / cogs * 365) if cogs > 0 else 0
# Update product with KPIs
product.write({
'x_turnover_ratio': turnover_ratio,
'x_days_on_hand': days_on_hand,
})
Best Practices for Inventory Metrics Management
Regular Physical Audits
Schedule quarterly cycle counts. Use Odoo's Inventory → Operations to create adjustment journals and reconcile discrepancies immediately.
Leverage Automation
Set up Automated Actions for low stock alerts, reorder triggers, and KPI threshold notifications to prevent stockouts proactively.
Frequently Asked Questions
How often should I calculate inventory metrics in Odoo?
Calculate turnover ratio and sell-through rate monthly. Track days on hand and carrying costs weekly. Monitor shrinkage and accuracy rates quarterly through physical audits.
What's a good inventory turnover ratio for D2C brands?
For D2C brands, aim for 8-12 turns annually. Fast fashion should target 12-15 turns, while premium goods may be acceptable at 4-6 turns depending on margins.
How do I track lost sales in Odoo inventory metrics?
Create a lost opportunities pipeline in CRM. Tag stockout-related losses and calculate: Lost Sales Ratio = (Lost Sales Value / Total Potential Sales) × 100.
What carrying cost percentage should I target?
Target 15-25% of inventory value annually. Include storage (2-4%), insurance (1-2%), taxes (1-2%), obsolescence (6-12%), and opportunity costs (5-8%).
How can I automate inventory KPI reporting in Odoo?
Use Odoo's Automated Actions to schedule weekly KPI reports. Create dashboard widgets with real-time data and set up email alerts for threshold breaches.
Need Help with Odoo Inventory Metrics?
Our experts can help you configure automated KPI tracking, set up custom dashboards, and integrate inventory metrics with your sales operations for complete visibility.
