Skip to main content
A user-defined field uses an existing reusable Data Type — typically a named enum — as the field’s type. Define the list of allowed values once as a Data Type, then apply it to as many fields as you need. Editing the Data Type updates every field that uses it. Common examples:
  • A course_status_enum shared by courses.status and applications.course_status
  • A priority_enum shared by every table that has a priority column
  • A country_code_enum shared by users.country and addresses.country

User-defined vs. inline enum

Both constrain a column to a fixed list of values. Pick based on whether the list is shared: If you don’t have a Data Type yet, create one first — see Data Types.

Configuration options

How it appears in the API

The field is generated as the same enum type wherever the Data Type is referenced. Updating the Data Type — adding, removing, or renaming values — propagates to every field that uses it and to every place the type appears in the GraphQL schema. See the GraphQL API Explorer to inspect the generated types.

Permissions

User-defined fields are subject to the per-role read and write rules configured in Role-Based Access.

FAQ

Every field that uses the Data Type sees the change immediately. Adding a value is safe; removing one will fail validation on rows that still hold the removed value, so plan removals carefully.
Yes — change the field type and pick the matching Data Type. Existing values that match the Data Type’s allowed list carry over; values that don’t will need to be migrated.
Open the Data Model sidebar, click the dropdown arrow next to + Add Table, and choose Add Data Type. Once created, it becomes available in the Enum Type picker on any user-defined field.
Today, Data Types are enums — that’s the built-in shape. The user-defined field is the way to apply that shape to a column.