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

What the Table component does

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
Timesheets with date, start time, end time, and total hours worked
Add a Table to your form
Tables must be placed directly inside a Section - they cannot be nested inside Groups, Tiles, or other containers.
Drag the Table component from the component library onto your form, then click it to open its Properties panel.
Under Columns, click a column to open it. Each column is its own component - drop the type you want into it (see Types below) and configure its properties.
Set the header label for each column, then click Save.
Pro Tip!
You can utilize Inputs within Tiles that have borders to create the same look as a table. Using the Computed Component, you can calculate totals in real-time in the same way a table can.
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 (see below) - 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.
Input Types
Address & Distance: Use Address and Distance fields that automatically calculate mileage between two addresses. When selecting the Distance input, make sure to assign which column you would like as Start Address Field and End Address Field.
Text: If you're using User Input as the Text type, you can apply a Mask to control the format of the text. And, if this column contains numbers, you can enable the Sum option and add up all the values in that column.
User Input: Submitters can type their own input.
Fixed Value List: You can force a pre-set list of values to display in the column.
Formula: Use a formula to auto-fill values
Dropdown: Choose from a list of predefined options, just like a Dropdown component. Sum is available here, if applicable, as well.
Checkbox: Similar to Checkbox component, you can allow users to check boxes or use a formula to control the true/false state.
Number: Use this for numerical inputs. Enable the Sum option to automatically total up all the values in the column.
Email: Forces email validation, ensuring the entered text is a valid email address.
Date, Time, Date & Time, Month: These input types present the appropriate picker. You can apply logic to restrict the minimum and maximum date or time users can choose. For Time inputs, you can also set the Interval, like limiting selections to every 15 minutes — useful for scheduling meeting blocks, for example.
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