Formula
Configuration reference: Fórmula
Overview
The Formula component calculates values automatically based on other columns in the same record or data from other features. The result is read-only — users cannot edit formula fields directly.
Writing formulas
Formula types
| Type | Description | Example |
|---|---|---|
| SUM | Add values from selected columns | Price + Tax + Shipping |
| SUBTRACT | Subtract column values | Budget - Spent |
| MULTIPLY | Multiply column values | Quantity × Unit Price |
| DIVIDE | Divide column values | Total / Count |
| CONCATENATE | Combine text from columns with a separator | "FirstName LastName" |
| SUMIF | Sum values from a feature with conditions | Sum order totals where status = "paid" |
| COUNTIF | Count records in a feature matching conditions | Count tasks where status = "complete" |
| XLOOKUP | Look up a value from another feature | Find a client's email by their ID |
| EXPRESSION | Free-form dynamic expression | Complex calculations with custom logic |
| ARITHMETIC EXPRESSION | Visual builder with parentheses and operators | (Price × Quantity) - Discount |
Cross-feature formulas
SUMIF, COUNTIF, and XLOOKUP can reference data in other features:
- SUMIF — Select a source feature, the column to sum, and define filter conditions (e.g., sum all invoice amounts where
clientIdmatches the current record's ID). - COUNTIF — Same as SUMIF but counts matching records instead of summing values.
- XLOOKUP — Specify a source feature, a lookup column (to match against), and a return column (the value to retrieve).
Zones on the map
ZONE(@local, "Zonas") returns the name of the zone the point in the @local column falls in. The first argument is a Location column (a [lat, lng] list or the text "lat,lng" also work); the second is the name of the zones table, which must have a Zone column. The name comes from that table's title column (the first text column, for example «Nome»).
- When the point falls in more than one zone, the zone created first wins.
ZONES(@local, "Zonas")returns the names of every zone containing the point, separated by commas, in the same order.- When the point falls in no zone, or the location is empty, the result is empty text: a record that leaves a zone loses its name.
- The border counts as inside the zone.
- If the table does not exist, or has no Zone column, the cell shows the error.
The value recalculates when the record's location changes and when a zone is drawn, changed or deleted. Filter or group by the formula column as by any text.
CONCATENATE options
| Setting | Description |
|---|---|
| Campos para concatenar | Checkbox list of the other columns on the feature. Check a column to include it in the result. |
| Ordem dos campos | Once two or more columns are selected, reorder them with the up/down arrows — this is the order they appear in the concatenated text. |
| Máx. (per field) | Optional character limit for that field's contribution. Leave empty for no limit. When the field's value is longer than the limit, it is cut to that length and suffixed with …. |
| Separador de texto | Text inserted between each field's value. Defaults to ", " if left empty. |
The limit is applied per field, not to the final concatenated string — each column is truncated independently before being joined with the separator.
For a linked_select field, the limit applies to the resolved label (the display value shown for the link), not to the underlying row ID.
Truncation happens on the calculated value that gets stored: table, search, and export all see the cut text, with … appended. The source column itself is never modified.
Display options
| Setting | Description |
|---|---|
| Render as component | Display the formula result as another component type (e.g., render as a Select badge or Linked Select link) |
| Render component config | Configuration for the display component |
Formula history
OutDo keeps the last 3 formula configurations as history, allowing you to roll back to a previous formula if needed.
In all views, formula fields display their calculated result as read-only text (or as the configured render component).
Errors
A formula that cannot compute stores the error instead of a value: the field is empty and shows a red # with the reason in the tooltip (for example «Divisão por zero» or «A coluna @preco não existe nesta tabela»). The same applies to list cards and form side panels. In the form the reason is spelled out and, for whoever can design the workspace, an Editar coluna… link opens the column settings. Once the cause is fixed (the data changes or the formula is edited), the value comes back on the next recalculation. A formula with no result keeps the previous value.
A formula that reads another formula of the same row that has an error does not compute: it carries the error «A fórmula depende de «coluna», que tem um erro» instead of counting the missing value as 0.
Texto quando sem valor applies only to empty cells, never to an error. An empty column counts as 0 inside a calculation.
The builder checks the formula before saving: unknown functions, a wrong number of arguments, unclosed parentheses or quotes, columns and tables that do not exist and cycles between formulas block Guardar (the first blocking problem is the one the button reports). All problems are listed in a banner inside the Cálculo card, in the error colour when any blocks and the warning colour otherwise; references to columns or tables that no longer exist turn red under Depende de. If a column the formula uses is deleted later, the cells show the configuration notice until the formula is fixed.
Errors are system metadata (__errors): they never appear in the API, exports or the AI. Zeros that a failing formula stored before this release are only corrected on the row's next recalculation or on Recalcular.