Use the Table component

Collect repeating rows of structured data - line items, attendees, or expense entries - in a spreadsheet-like layout.

Use the Table component

What the Table component does

The Table component in the Form Builder component library

The Table component is in the Basic section of the component library.

The Table lets submitters add multiple rows of related data in a spreadsheet-like layout. Each column is a form component (Input, Dropdown, Date/Time, and so on), and the submitter adds rows as needed. Common uses:

  • Expense line items with description, amount, and category
  • Attendee lists with name, email, and role
  • Inventory requests with item, quantity, and unit cost

Add a Table to your form

Tables must be placed directly inside a Section - they cannot be nested inside Groups, Tiles, or other containers.
1
Add the table

Drag the Table component from the component library onto your form, then click it to open its Properties panel.

2
Build the columns

Under Columns, click a column to open it. Each column is its own component - drop the type you want into it (Input, Dropdown, Date/Time, Computed, and so on) and configure its properties.

3
Label and save

Set the header label for each column, then click Save.

Table properties

Label
The text displayed above the table.
Columns
Each column is a field. Open a column to set the component type - Input, Dropdown, Checkboxes, Date/Time, Computed, and more - and configure it like any other component.
Initial Rows
How many empty rows show when the form loads. Defaults to 3.
Min Rows
The minimum number of rows the submitter must fill in. Defaults to No Limit.
Max Rows
The maximum number of rows allowed. Leave blank for no limit.
Enable Delete
On by default. Lets the submitter remove rows. Turn it off for fixed-row tables.
Display Rows Logic
In the Rules section. An expression that controls how many rows are shown - use it to drive the row count from another field or formula.
Visibility
Editable, Visible, or Hidden, per workflow step, like any field.
A column is only editable when the Table itself is set to Editable on the current step. If the table is Visible (read-only) on a step, its columns are read-only too - even a column you intended to be editable. Set the table's Visibility to Editable on any step where submitters should fill it in.

Use formulas in Table columns

Table columns support formulas, which makes them useful for per-row calculations. For an expense table:

  • Add a Quantity column (Input, Number type)
  • Add a Unit Price column (Input, Number type)
  • Add a Total column (Computed) with the formula quantity * unitPrice

The Total column calculates automatically for each row as the submitter enters data.

To calculate a grand total across all rows, add a Computed field outside the table that sums the column - for example, expenseTable.reduce((sum, row) => sum + row.total, 0).
Dropdown columns in a table can be connected to datasets, just like standalone dropdowns - useful for category or item-selection columns.

Reference table values with getCell()

Inside a table, use getCell() to reference the current row's value for a specific column. This is useful when a formula in one column needs to read another column in the same row:

getCell(columnId)

For a table with a quantity column and a unitPrice column, a Computed column can use:

getCell(quantity) * getCell(unitPrice)

This calculates each row's total by reading that row's quantity and unit price.

Common uses for getCell():

  • Cross-column calculations within the same row
  • Conditional values based on another column - for example, getCell(category) === 'Travel' ? getCell(amount) * 1.1 : getCell(amount)
  • Referencing column values in Validation Rules or Show/Hide Field Rules inside a table
Last reviewed by Nick Duell and published on June 22, 2026 7PM ET