Build KPIs with Odoo Spreadsheet dashboards in Enterprise, native graph/pivot views on custom SQL models, or BI tools connected to PostgreSQL read replicas. Define measures on sale.report, stock moves, or MRP OEE fields, refresh on cron for heavy metrics, and place tiles on board views or website dashboards for executives with drill-down to underlying list views.
Steps
- List KPIs: OTIF, inventory turns, MO variance, DSO, and backlog age.
- Create SQL view models (models.Model with _auto=False) for performant aggregates.
- Add graph and pivot views in XML with filters by company and date range.
- In Enterprise, add Spreadsheet dashboard snippets linked to pivot data sources.
- Schedule ir.cron to materialize heavy KPIs into kpi.snapshot tables if needed.
- Secure dashboards with groups; hide cost fields from operations roles.
- Validate numbers against accounting and inventory subledgers monthly.
Common mistakes
- Live pivot on stock.move without date domain timing out.
- Mixing invoice and delivery metrics without documented definition.
- Duplicating KPI logic in spreadsheet and Python with different results.
- No company filter on multi-company databases.
- Exposing payroll KPIs on shared dashboards.
Odoo version notes
Spreadsheet dashboards are Enterprise highlights in Odoo 16–18. Community uses pivot/graph on custom models or Metabase external. Odoo 18 expands data connectivity—verify license. KPI boards should be retested after upgrade when account.report engines change.
When to bring in help
If the fix touches custom modules, regulated traceability, or production outages, a focused rescue sprint beats months of trial and error. See our Odoo service.