v 13.0 Third Party 82
Odoo Online
On Premise
Odoo Apps Dependencies Discuss (mail)
Lines of code 4491
Technical Name kpi_scorecard
LicenseSee License tab
Versions 17.0 12.0 15.0 16.0 13.0 14.0
You bought this module and need support? Click here!
Odoo Online
On Premise
Odoo Apps Dependencies Discuss (mail)
Lines of code 4491
Technical Name kpi_scorecard
LicenseSee License tab
Versions 17.0 12.0 15.0 16.0 13.0 14.0
Odoo dashboards are cool and nice-looking but they give you mostly the Past results overview without a chance to set up and control targets. This app is to solve that problem by introducing KPI interface to manage company and personal targets. The tool helps to organize work as a set of periodical goals and to control those goals in any business or functional area.

Balanced Scorecard Interface

The whole list of KPI targets for a period is available from a single interface. Right from here you can set up new targets and edit existing ones, observe actual and target values, evaluate success by indicative red / green color, observe historical trends, open and close periods. It is also possible to export a whole scorecard to an Excel table.

To make navigation over targets comfortable, KPIs are structured by categories. It let quickly consider only those KPIs which are of interest at the moment. For example, to observe only sales targets or targets of a specific Odoo user. Another important peculiarity is that KPIs might have parent-children relations. For instance, 'Total company sales' > 'Sales America' > 'John Brown Sales'. Such hierarchy allows to highlight targets with indicative padding for instant overview of sub-KPIs.

It is only up to you which KPIs to add and which approach to apply for KPIs' sectioning and hierarchy.

KPIs targets by periods

KPI scorecard is not just a dashboard, but it is a full-featured tool to set and control company and individual targets. Targets should be measurable and time-constrained. 'Sell as much as possible' is not a goal, while 'Generate 100,000 Euro Revenue in the year 2021' is a good target for a sales person, for example.

That is why, each goal should have a target value and should be defined for a period. In such a way, the app let you have a full picture of results to undertake corrective actions in advance.

Real-time control and historical trends

When a user opens scorecard interface, he/she is shown targets of a current period (if it exists). Actual values are re-calculated regularly and automatically by the special Odoo cron job. In such a way, it is possible to understand which KPIs require more attention in real time at a first glance.

Simultaneously, it is always possible to switch to another period to have broader picture (e.g. from monthly to yearly KPIs) or to observe the Past / the Future targets (e.g. to plan efforts efficiently).

Besides, each KPI target has a special button to observe history by all periods. The latter might be useful to understand overall trends.

In case you have similar KPIs from a period to period, the tool let you copy targets. To that end use the field 'Copy target from' when you open a new period or the button 'Substitute' for existing ones.

The app allows to set periods of any length including intervals which cross each other (and even the Past periods!). To open a new KPI period you should just set start and end dates. Those dates will be used to calculate KPI actual value. For example, KPI formula might include a basic KPI measurement for total amount of sale orders, while date field of this measurement is defined as 'Order date'. Then, only sale orders which order date is within the period would be taken into account. Thus, KPI scorecard would show total revenue for a given period.

It is recommended to have more or less strict logic of periods for comparability purposes. Usually, KPI targets are set for a whole year and quarterly/monthly intervals. It let not only have KPI overview, but also check historical trends. The app automatically considers various periods in order to define which might be compared to this one, and will show users a chart of actual values by a specific KPI. It is possible to define tolerance on the configuration page. For example, 2-days tolerance is needed to compare quarterly periods (since quarter might take from 90 to 92 days), and 3-days tolerance for months (unluckily, February may last 28 days).

KPI periods work in a similar way as accounting / fiscal periods. The idea behind is to make sure that at a certain point KPI actual values are frozen and might be used for a final analysis of a period. It is hardly good to update December KPIs in the next August even though a sale total needs to be corrected, for example.

That is why when a period end date is already in the Past, it is preferable to close that period to avoid further updates of KPI targets actual values. Besides, it would speed up actual values' recalculations.

Drag-and-drop formulas for KPI calculations

A KPI (a key performance indicator) is a measurement which aims to evaluate a certain aspect of organizational or personal activities. This tool let you prepare an unlimited number of such measurements and calculations of almost any complexity.

Formula construction is as simple as it is to write down a mathematical expression: just drag and drop formula parts in a right order with correct operators. When Odoo computed actual values for a specific period, it would automatically retrieve data from a database according to parts' logic. As formula parts you can apply:

  • KPI variables - rules how to calculate data from Odoo database. For example, 'total number of sales orders' or 'number of quotations of sales team Europe'.
  • Other KPIs - to make derivative calculations. For example, you may have KPIs 'Sales count' and 'Opportunities count', and a derivative KPI 'Opportunity to sales success ratio'.
  • KPI constants - figures which do not depend on actual Odoo data, but which are frozen globally or for a specific time frame. Constants allow to introduce parts which can not be retrieved from modules and/or which should remain the same during the whole period.
  • 2 special variables - 'Period Days' and 'Days Passed'. Those figures are calculated not from Odoo data, but from the KPI period settings under consideration. 'Period Days' is an interval length in days. 'Days Passed' is a length between period start and today (if today is before period end; otherwise period end). Those parameters let calculate per-time KPIs, such as, for example, 'Average sales per week'.
  • Mathematical operators - including subtraction, addition, multiplication, division, exponentiation, any float number.

Depending of business logic of KPI formula, the final calculation result might have different form:

  • Simple number: for example, 'Average sales count per week'.
  • Percentage: for example, 'Sales to opportunities success ratio'.
  • Monetary: for example, 'Total Sales per period'. Make sure the measurement field you used is in the same currency (usually company default currency)!

For simple numbers and percentage you may also define result suffix and prefix to make a figure nice looking (e.g. add "%" as suffix to have "88%"). For monetary result type it is recommended to define a currency, which symbol would be added to result.

Finally, you may decide how calculation result should be rounded. Available options are from 0 to 4 decimal points (1 > 1.2 > 1.23 > 1.235 > 1.2346).

KPI variables and basic measurements to retrieve Odoo data

Preparing basis for KPI calculations is not a simple task. The good news is that such job should be done only once, while results are used forever.

A basic measurement is the core object used for retrieving actual KPI value from Odoo database. Basic measurements represent the most general calculation, while KPI measurements specify those. For example, 'total number of sales orders' should be a basic measurement, while narrower 'number of quotations of the sales team Europe' is recommended to be a precision of that basic measurement (so, a KPI measurement or a KPI variable). Each basic measurement might have an unlimited number of linked KPI variables. In such a way, KPI variable let you prepare a formula part which might calculate:

  • A total number of specified records within a given period. For example, a number of registered leads or a number of posted customer invoices.
  • A sum of specified records' numeric fields. For example, sum of all orders amount total or sum of paid taxes by invoices.
  • An average of specified records' numeric fields. For example, average planned hours per task or average days to assign a lead

If those 3 types of calculations are not enough, basic measurements let you prepare the Python code to compute any sort of figures based on any Odoo data.

Basic measurements are not used themselves for formula constructions, they are required to prepare any sort of formula variables (KPI measurements). In order to create a basic measurement you should define:

  • Model - is an Odoo document type from Odoo database, so with which data set you work. For, examples, 'Sales Order' or 'Task'. Here you can rely not only upon standard or custom objects (including ones created through the interface or the Odoo studio.), but also on Odoo reports. The latter is quite useful if indicators are already calculated for existing dashboard (for example, total sales amount in default currency from the 'Sales Analysis Report').
  • Date fields - are required to understand whether a specific document type relates to a considered period, so, how to distribute objects by time intervals. For example, for tasks you might use 'create date' to analyze jobs registered within this KPI period. It is possible to apply a few date fields (e.g. 'Opportunities opened and won in January 2021'). If date fields are not specified, KPI period would not influence this basic measurement.
  • Filters - allow you to restrict records set by any stored field. For example, you may calculate count of only won opportunities based on stage settings or only posted customer invoices based on journal entry type and state.
  • Measure field - is available and required only for calculation types 'Average' and 'Sum'. It defines which figure you use for calculations. For example, total amount of Sales Analysis Report to get accumulated sales revenue or work hours of tasks to get average spent time per each task.
  • Company field - would be needed for multi companies environment. According to that field, KPIs are considered only withing a KPI period target company. Take into account that records without company stated would be used for all companies' KPI calculations.

'Python code' is the special type of basic measurement. This type requires technical knowledge but let you compute any sort of figures based on any Odoo data without restrictions.

Correct Python code assumes saving the value into the special variable 'result'. From other perspectives, it might be any Python basic script with possibility of SQL queries (using 'env.cr').

In your calculations you may also rely upon the special variables: 'period_start' (the first date of the period), 'period_end' (the last date of the period), 'period_company_id' - res.company object for which Odoo makes calculations at the moment (according to a KPI period under consideration).

A KPI measurement is a final variable used for KPI calculations. It represents specification of basic measurement. For example, 'number of quotations of the sales team Europe' might be a precision of a basic measurement 'total number of sales orders'.

The key idea to distinct KPI variables from basic measurements is to simplify data preparation. Each basic measurement might have an unlimited number of linked KPI measurements. So, the only thing you would need to do is to apply extra filters (in the example 'Sales Team Name is Europe').

Take into account that basic measurements of the type 'Execute Python code' can't be any more specified, since they do not relate to any records. In such a case, there is no sense to have a few KPI measurements.

In a multi company environment KPI Measurements are applied globally or for each company individually. In the former case that variable is available for any company KPI formulas, while in the latter - only for specific one (it let make quicker overview while constructing formulas).

Shared KPIs and self-control

Full rights for all KPIs, targets, and settings belong to users with the right 'KPI Management - KPI manager'. Simultaneously, the tool let you share KPIs with other users as well.

In particular, you can grant an access to observe KPIs using the 'Read rights' section on a KPI or a KPI category form. The section 'Edit rights' would not only allow to see scorecard by related KPIs, but also to set targets for those. The latter might be useful in case you ask your manager to manage goals within a department, for example.

Take into account: all security settings are additive and they are not restrictive. KPI managers would have full rights for all KPIs disregarding the settings, while other users would have rights only to KPIs which settings (or category settings) allow them so.

Multi companies

The tool is compatible with multi companies' environment. In particular, KPI periods and KPI targets are set up for each company individually (global targets are not possible).

KPI basic measurements assume that a company field is selected for a chosen model. It let distinguish which records are under consideration. If a company field is empty, all records would be analyzed.

Constants, KPI variables, and KPI formulas might be also assigned to a specific company. That might be used to simplify selection of formula parts when companies operate in different business areas.

To change the frequency of KPI targets recalculations:
  1. Turn on the debug mode.
  2. Go to KPI > Configuration > Settings.
  3. Find the button 'Configure cron job'.
  4. You are welcome to update the settings 'Execute Every' and 'Next Execution Date'. Please do not make it too frequent (e.g. once in 5 minutes), since operation is resource demanding, and might be not fully finished within a pair of minutes.

Basic Measurements are not used to create a formula by themselves. Even if you don't want to add any more filters to the Basic Measurement, you should still create a Variable linked to it. Then, this Variable will appear in the list of available ones for creating a formula.

The app itself does not introduce its own data (with exception of the KPI constants aiming exactly to apply missing data) or integrations. The app calculates and prepares interfaces based on existing Odoo data. For example, you can get the information about the number of sale orders for a particular period from the app Sales.

The module is universal and can get data from any Odoo module, including account balances. For example, you can calculate the total profit for a month based on the invoices (journal entry).

You can also get the data from a source outside of Odoo, through connecting it with an Odoo module. For example, if you have data from Google Analytics in your Odoo PostgreSQL, then such data might be used to prepare KPIs.

Measurement (Variable) - is a specification of a basic measurement. The key idea is to simplify data preparation. You define 'Total Sales' once, and then unlimitedly use it for 'Sales Europe', 'Sales John Brown', 'Website Sales', etc by adding extra filters.

According to the current Odoo Apps Store policies:

  • every module bought for version 12.0 and prior gives you access to all versions up to 12.0.
  • starting from version 13.0, every module version should be purchased separately.
  • disregarding the version, purchasing a tool grants you a right to all updates and bug fixes within a major version.

Take into account that the faOtools team does not control those policies. For all questions, please contact the Odoo Apps Store representatives directly.

The easiest approach is to use the Odoo store built-in workflow:

1. Open the module's page and click the button Deploy on odoo.sh

2. After that, you will be redirected to the GitHub page. Login to your account and click 'Create a new repo' or use the existing one. Please, make sure, that your repository is private. It is not permitted to publish the apps under the OPL-1 license. If necessary, create a new repo for your Odoo.sh project

3. Then, go to odoo.sh and click on the deploy button, submit the decision in the pop-up window and click 'Continue'. The action will trigger the installation process.

These steps will install the app for your project production branch. If you want to deploy the apps for other branches or update the module, you should undertake the following actions:

1. Upload the source code for the app from the Odoo store

2. Commit the module to a required GitHub repository. Make sure that none of the app folders/files are ignored (included in the .gitignore of your repo). Repositories are automatically created by odoo.sh, which might add by default some crucial items there (e.g. /lib). You should upload all module directories, subdirectories, and files without exceptions

3. Deploy a target branch of the odoo.sh project or wait until it is automatically built if your settings assume that.

  1. Unzip the source code of the purchased tools in one of your Odoo add-ons' directories;

  2. Re-start the Odoo server;

  3. Turn on the developer mode (technical settings);

  4. Update the apps' list (the apps' menu);

  5. Find the app and push the button 'Install';

  6. Follow the guidelines on the app's page if those exist.

Yes, sure. Take into account that Odoo automatically adds all dependencies to a cart. You should exclude previously purchased tools.

A red/orange warning itself does not influence features of the app. Regretfully, sometimes our modules do not pass standard automatic tests, since the latter assumes behavior which is in conflict with our apps goals. For example, we change price calculation, while standard Odoo module tests compare final price to standard algorithm.

So, first of all, please check deployed database features. Does everything work correctly?

If you still assume that warning influences real features, please contact us and forward full installation logs and the full lists of deployed modules (including core and third party ones).

Regretfully, we do not have a technical possibility to provide individual prices.

No, third party apps can not be used on Odoo Online.

Yes, all modules marked in dependencies are absolutely required for a correct work of our tool. Take into account that price marked on the app page already includes all necessary dependencies.  

The price for our modules is set up in euros. The Odoo store converts prices in others currencies according to its internal exchange rate. Thus, the price in US Dollars may change, when exchange rate changes.

Bug reporting

In case you have faced any bugs or inconsistent behavior, do not hesitate to contact us. We guarantee to provide fixes within 60 days after the purchase, while even after this period we are strongly interested to improve our tools.

To send us a bug report: press the "Website" link on the top of this page and push the button "Bug Report" (the tab Support). Alternatively, copy the link https://faotools.com/s/ghlq7e

No phone number or credit card is required to contact us: only a short email sign up which does not take more than 30 seconds.

Please include in your request as many details as possible: screenshots, Odoo server logs, a full description of how to reproduce your problem, and so on. Usually, it takes a few business days to prepare a working plan for an issue (if a bug is confirmed) or provide you with guidelines on what should be done (otherwise).

Public features requests and module ideas (free development)

We are strongly motivated to improve our tools and would be grateful for any sort of feedback. In case your requirements are of public use and might be efficiently implemented, the team would include those in our to-do list.

Such a to-do list is processed on a regular basis and does not assume extra fees. Although we cannot promise deadlines and final design, it might be a good way to get desired features without investments and risks.

To share ideas: press the "Website" link on the top of this page and push the button "Share Features Ideas" (the tab Support). Alternatively, copy the link https://faotools.com/s/y8ez1w

No phone number or credit card is required to contact us: only a short email sign up which does not take more than 30 seconds.

Questions and misc issues

Feel free to contact us with any other concerns, doubts, or questions: press the "Website" link on the top of this page and push the button "Raise Question" (the tab Support). Alternatively, copy the link https://faotools.com/s/e9fqbm

About the team

faOtools (faotools.com, former odootools.com) is the team of developers and business analysts to help you extend Odoo's potential. We have been communicating with end users to whom the software became the main business tool since 2012. As a result, we are proud of dozens of successful Odoo apps developed. We are open for new ideas and challenges to create the best Odoo apps for business needs all over the world.

You may like the tools

Cloud Storage Solutions

The technical core to synchronize your cloud storage solution with Odoo

OneDrive / SharePoint Odoo Integration

The tool to automatically synchronize Odoo attachments with OneDrive files in both ways

Google Drive Odoo Integration

The tool to automatically synchronize Odoo attachments with Google Drive files in both ways

OwnCloud / NextCloud Odoo Integration

The tool to automatically synchronize Odoo attachments with OwnCloud / NextCloud files in both ways

KnowSystem: Knowledge Base System

The tool to build deep and structured knowledge base for internal and external use. Knowledge System. KMS

Universal Appointments and Time Reservations

The tool for time-based service management from booking appointment to sale and reviews

Password Manager

The tool to safely keep passwords for shared use

198 168
Joint Calendar

The tool to combine different Odoo events in a few configurable super calendars. Shared calendar. Common calendar.

78 66
Odoo Documentation Builder

The tool to create website documentation based on your knowledge base

Odoo Proprietary License v1.0

This software and associated files (the "Software") may only be used (executed,
modified, executed after modifications) if you have purchased a valid license
from the authors, typically via Odoo Apps, or if you have received a written
agreement from the authors of the Software (see the COPYRIGHT file).

You may develop Odoo modules that use the Software as a library (typically
by depending on it, importing it and using its resources), but without copying
any source code or material from the Software. You may distribute those
modules under the license of your choice, provided that this license is
compatible with the terms of the Odoo Proprietary License (For example:
LGPL, MIT, or proprietary licenses similar to this one).

It is forbidden to publish, distribute, sublicense, or sell copies of the Software
or modified copies of the Software.

The above copyright notice and this permission notice must be included in all
copies or substantial portions of the Software.


Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author or have a question related to your purchase, please use the support page.
There are no ratings yet!
on 9/19/20, 6:47 PM


I would like to know if this module work also in community 12 version.


Odoo Tools
on 9/20/20, 6:45 AM Author


Yes, the app is available for 2 versions: Odoo v12 and Odoo v13 (compatible with both Community and Enterprise). You may find the app for the version 12 by the link: https://apps.odoo.com/apps/modules/12.0/kpi_scorecard/

Feel free to contact us by any related issues or to request a free demo database using our support portal - https://odootools.com/my/tickets/newticket?&url_app_id=138&ticket_version=12.0&url_type_id=4