FormWork FormWork

Data Tables Overview

Store and manage structured data for use across your forms.

Data Tables provide structured data storage that can be referenced by forms and workflows. Use them for dropdown options, lookup values, reference data, and more.

What Are Data Tables?

Data Tables are like spreadsheets within FormWork:

  • Columns define the structure (typed fields)
  • Rows contain the data (entries)
  • References allow access from forms and workflows

Unlike regular forms, data tables are designed for:

  • Simpler structure (no nested groups)
  • Lookup and reference operations
  • Shared data across multiple forms

When to Use Data Tables

Manage dropdown lists that:

  • Might change over time
  • Are shared across forms
  • Need to be maintained by non-developers

Example: Product categories, countries, departments

Lookup Values

Reference data for calculations:

  • Pricing tiers
  • Tax rates by region
  • Discount schedules

Reference Data

Store related information:

  • Product catalog
  • Customer tiers
  • Status definitions

Creating a Data Table

From the Dashboard

  1. Go to your project
  2. Click Data Tables tab
  3. Click New Data Table
  4. Enter a name
  5. Start adding columns

Adding Columns

Columns are similar to form fields:

  1. Click Add Column
  2. Choose column type
  3. Configure properties
  4. Save

Available Column Types

TypeDescription
TextSingle-line text
NumberNumeric values
SelectDropdown selection
ToggleYes/No values
DateDate values

Column Properties

PropertyDescription
NameColumn header
IDReference identifier
TypeData type
RequiredMust have value
DefaultDefault value

Managing Data

Adding Rows

  1. Click Add Row or use the empty row at bottom
  2. Fill in cell values
  3. Data saves automatically

Editing Cells

  • Click a cell to edit
  • Tab to move between cells
  • Enter to confirm and move down

Deleting Rows

  1. Select row(s) using checkboxes
  2. Click Delete
  3. Confirm deletion

Bulk Operations

Import/export for bulk changes:

  • Export to CSV
  • Edit in spreadsheet
  • Import updated data

Data Table Structure

Internal Representation

Data tables are actually forms under the hood:

  • Columns = Fields
  • Rows = Entries
  • Cells = Answers

This means they support:

  • Entry IDs
  • Timestamps
  • The full API

Limitations

Data tables intentionally simplify:

  • No nested fields (groups, repeaters)
  • No conditional logic
  • No validation rules
  • No workflows
  • No metafields

For complex data, use a regular form.

Referencing Data Tables

From Forms

Use as options data source:

{
  "field_type": "select",
  "options_data_source": {
    "source_reference": "data_table:products.rows",
    "label_reference": "name",
    "value_reference": "id"
  }
}

From Workflows

Look up values:

data_table:pricing[tier={{ entry.answers.tier }}].rate

Filter rows:

data_table:products[category="electronics"]

Best Practices

Naming Conventions

Use clear, consistent names:

  • product_categories not categories1
  • pricing_tiers not prices

Column IDs

Keep IDs stable:

  • Use for references
  • Changing breaks existing references
  • Use underscores, lowercase

Data Maintenance

  • Regularly review and clean data
  • Document what each table is for
  • Limit who can edit critical tables

Performance

  • Keep tables focused (not too many columns)
  • Archive unused rows
  • Use specific columns in references