KPI

A value indicator (progress bar or tile) with color thresholds based on value.

Widget description: kpi

The KPI widget displays the value of a single field as a progress bar (with percentage) or as a tile with a large number. The color can change based on thresholds: for example, green above 80%, orange above 40%, otherwise red. It is ideal for budget utilization, completion progress, or days remaining until a deadline. It is a virtual widget and is not saved to the item.

Indicator / KPI tile widget settings: display mode, source field, target value, unit, and color thresholds

Adding to the form

  1. On the Widgets tab, select Indicator / KPI tile and drag it into a section.
  2. In the inspector, choose the Source value field. All fields except widgets are listed.
  3. Configure the mode, target value, unit, and optionally color thresholds.

A new widget defaults to a progress bar with a target of 100, title “Completion status”, unit “%”, and 50% width.

Inspector settings

OptionPropertyDescriptionDefault
Display modekpiConfig.modeprogress (Progress bar %) or tile (KPI tile).progress
Source value fieldkpiConfig.sourceFieldInternal name of the field to read the value from. Numbers are also parsed from text (comma as decimal separator, spaces ignored).not selected
Target value (100%)kpiConfig.targetValueProgress bar only: the value corresponding to 100%. Zero or negative values are treated as 100.100
Target source: Fixed number / From another columnkpiConfig.targetSource, kpiConfig.targetFieldProgress bar only. fixed uses the number from targetValue; field reads the target from the selected numeric column and updates live with the form. An empty, invalid, or zero target in the column falls back to targetValue (or 100), so division by zero never occurs. A column matching the source field is ignored.fixed
Card titlekpiConfig.titleWidget title. If omitted, falls back to custom label, then source field name, and finally “KPI Indicator”.empty
Unit / currencykpiConfig.unitText shown after the value, e.g., %, USD, pcs.empty
Default color accentkpiConfig.colorbrand (Primary), success (Green), warning (Orange), danger (Red). Used when no threshold matches.brand
Color thresholdskpiConfig.thresholds[]List of thresholds: operator, value, and color. See Color thresholds.none
By field value / By % completionkpiConfig.thresholdByProgress bar only: whether thresholds are compared against the field value or the calculated percentage.value
Custom label, Column span, VisiblecustomLabel, colSpan, defaultVisibleCommon widget options.“KPI Indicator”, 6, yes

Additional schema properties not shown in the inspector can be set in the raw JSON editor:

PropertyDescription
kpiConfig.subtitleSubtitle below the value; supports placeholders. If omitted, the widget description (description) is used.

Color thresholds

Thresholds are added with the Add color threshold button. Each has an operator (gte ≥, gt >, lte ≤, lt <), a value, and a color. Two buttons insert ready-made presets: Traffic light ↑ (higher = better) and Traffic light ↓ (lower = better). The Clear button removes all thresholds.

Evaluation order:

  1. Among thresholds with ≥ or >, the matched threshold with the highest value is chosen.
  2. If none of those match, among thresholds with ≤ or <, the matched threshold with the lowest value is chosen.
  3. If nothing matches, the default color accent is used.

For a progress bar set to By % completion, thresholds are compared against the percentage (0 to 100). Otherwise, they are compared against the source field value (for tiles, always against the value).

Runtime behavior

Text translations

customLabel, kpiTitle, kpiSubtitle, and kpiUnit can be translated. See Translations and multilingual forms.

Rules and scripts

Color threshold editor with the Traffic light ↑ preset (three rows: operator, value, color) and the By field value / By % completion toggle
A progress bar (green, 85%) and a KPI tile (red) side by side on a form using the same thresholds

Configuration example (JSON)

{
  "internalName": "widget_kpi_budget",
  "customLabel": "Budget utilization",
  "fieldType": "kpi",
  "colSpan": 6,
  "defaultVisible": true,
  "kpiConfig": {
    "mode": "progress",
    "sourceField": "Spent",
    "targetSource": "field",
    "targetField": "Budget",
    "title": "Budget utilization",
    "unit": "USD",
    "subtitle": "Project [Title]",
    "color": "danger",
    "thresholdBy": "percent",
    "thresholds": [
      { "id": "t1", "operator": "lt", "value": 70, "color": "success" },
      { "id": "t2", "operator": "gte", "value": 70, "color": "warning" },
      { "id": "t3", "operator": "gte", "value": 90, "color": "danger" }
    ]
  }
}

Limitations and tips