All Collections
Make work flow
How to
Calculated columns using Favro APIs & Webhooks
Calculated columns using Favro APIs & Webhooks
Dovidas Baranauskas avatar
Written by Dovidas Baranauskas
Updated over a week ago

This article shows how you can do calculated columns using Favro APIs & Webhooks. As example of a calculated column we use the popular RICE model.

About the RICE Scoring Model

The RICE model helps prioritize product ideas by scoring them on reach, impact, confidence, and effort. Higher scores mean bigger potential impact with less work, making them better choices.




Number of users affected by the change


Positive impact on users and business


Level of certainty in estimates


Time and resources required


In this example, we will automatically update Favro cards with their RICE Score based on the shared fields representing the above Factors (Reach, Impact, Confidence, Effort).

The flow will look like this:

The code for the RICE Calculator App in the above diagram, is available on Github.


Favro board configuration

We will need 4 Status shared fields, denoting the 4 factors.

And we will need a Number shared field for the RICE Score

Configuring the app

The IDs of the shared fields are going to be unique to your setup. In order to get the relevant shared field IDs, you will need to follow 2 steps:

  1. Get all available custom fields - note that this list is paginated

  2. For each of the relevant shared fields, get the custom field and extract the ids of items

Note: Along with the main application, you will find a simplified helper to help with the above two steps.

Now that you have retrieved all the relevant IDs, update the relevant IDs in the RICE calculator file

const riceScoreFieldId = "InsertRelevantId"; // RICE Score customfield id

const reachCustomField = {
customFieldId: "InsertRelevantId", // Reach custom field id
items: [
{ id: "InsertRelevantId", value: 1 }, // None
{ id: "InsertRelevantId", value: 3 }, // Minority
{ id: "InsertRelevantId", value: 5 }, // Some
{ id: "InsertRelevantId", value: 8 }, // Majority
{ id: "InsertRelevantId", value: 10 }, // All

const impactCustomField = {
customFieldId: "InsertRelevantId", // Impact custom field id
items: [
{ id: "InsertRelevantId", value: 1 }, // No impact
{ id: "InsertRelevantId", value: 3 }, // Minor inconvenience
{ id: "InsertRelevantId", value: 5 }, // Moderate impact
{ id: "InsertRelevantId", value: 8 }, // Significant impact
{ id: "InsertRelevantId", value: 10 }, // Critical impact

const confidenceCustomField = {
customFieldId: "InsertRelevantId", // Confidence custom field id
items: [
{ id: "InsertRelevantId", value: 1 }, // No evidence
{ id: "InsertRelevantId", value: 3 }, // Low
{ id: "InsertRelevantId", value: 5 }, // Medium
{ id: "InsertRelevantId", value: 8 }, // High
{ id: "InsertRelevantId", value: 10 }, // Absolute certainty

const effortCustomField = {
customFieldId: "InsertRelevantId", // Efort custom field id
items: [
{ id: "InsertRelevantId", value: 1 }, // Trivial
{ id: "InsertRelevantId", value: 3 }, // Minor
{ id: "InsertRelevantId", value: 5 }, // Moderate
{ id: "InsertRelevantId", value: 8 }, // Significant
{ id: "InsertRelevantId", value: 10 }, // Major

Setup webhook on Favro board

Follow our build your own integrations based on outgoing webhooks article to setup the following webhook:

⚠️ Note: You will need to have an internet accessible address to be able to receive the webhook events. This can be achieved by hosting the code on your current Cloud hosting service, example: Amazon EC2, Azure, Google Cloud, Heroku. During development, you can use a solution such as Ngrok to provide a publicly accessible domain for your app.

Running the example

Start by installing the dependencies

npm install

You can either use the recommended environment variables method, or replace the relevant lines in the index.js with their corresponding values.

export FAVRO_URL=""

node index.js

Note: We recommend using an API Token instead of your password. You can generate the token in your profile in Favro

Then make sure it's runnable with:

chmod +x

Finally, run the script

Did this answer your question?