User guide
Fields
Every field type in OpenRows, its options, how type conversions work, links, lookups and rollups, formulas and their functions, and per-field edit permissions.
Adding and editing fields
Click the Add field button (the "+" at the right end of the grid's header) to create a field. The field editor opens as a popover: give the field a name, pick a type, set its options, and press Create field (or Ctrl/Cmd Enter).
The type picker groups types into Basic, Choice, Contact, People & links and Computed. Type in Search types… to filter, use the arrow keys and press Enter to pick one.
Owners and creators get these actions in a column header's menu:
| Menu item | What it does |
|---|---|
| Edit field | Opens the field editor |
| Rename field | Opens the editor with the name selected |
| Change field type | Opens the editor on the type picker |
| Edit description | Opens the editor on the description |
| Edit permissions | Who may edit the field's cells (see below) |
| Duplicate field | Opens the editor prefilled with "Name copy", the same type, options and description. Cell values are not copied |
| Insert left / Insert right | Creates a new field next to this one |
| Delete field | Moves the field to the trash after a confirmation, with an Undo toast |
Depending on your role, the menu also has Move left/right, Freeze up to this field, Select column, Reset width and Hide field. Hiding is a view setting: see Views.
The primary field (the first column, which names each record) can't be deleted or hidden, and it can't be a link, formula, button, lookup, rollup or count. You can't delete a field that a lookup, rollup, count or formula reads: change or remove those fields first. Deleted fields can be restored from the trash: see Bases, tables and records.
Field types
| Type | Category | What it stores | Options and notes |
|---|---|---|---|
| Single line text | Basic | One line of text, up to 100,000 characters | Line breaks become spaces |
| Long text | Basic | Multi-line text, up to 100,000 characters | Enable rich text formatting: headings, bold, italic, strikethrough, inline code, code blocks, quotes, bulleted, numbered and check lists, and links (http, https and mailto only). Stored as Markdown |
| Attachment | Basic | Files | Upload in the cell or the expanded record; images get thumbnails |
| Checkbox | Basic | On or off | Icon (check, star, heart, thumbs up, flag, dot) and Color |
| Number | Basic | A decimal number | Decimal places (0 to 8), Allow negative numbers |
| Currency | Basic | An amount in one currency | Currency code (ISO code such as USD, EUR), decimal places (default 2), allow negative numbers |
| Percent | Basic | A percentage | Decimal places, allow negative numbers. Typing 50 or 50% stores 50% |
| Date | Basic | A calendar day, no time | Date format: Local, Friendly (October 25, 2026), US (10/25/2026), European (25/10/2026), ISO (2026-10-25) |
| Date and time | Basic | A point in time | Date format, Time format (12 hour or 24 hour), Time zone (default UTC; times you type are read in it) |
| Duration | Basic | A length of time | Duration format: h:mm, h:mm:ss, h:mm:ss.s, h:mm:ss.ss, h:mm:ss.sss. A plain number is read as minutes in h:mm, as seconds otherwise |
| Rating | Basic | 1 to the maximum | Maximum (1 to 10, default 5), Icon, Color |
| Barcode | Basic | A code and its symbology | EAN-13, EAN-8, UPC-A, UPC-E, Code 128, Code 39, ITF, QR and Data Matrix; check digits are verified. The cell shows the code's text |
| Single select | Choice | One choice from a list | Choices: add, rename, recolor, reorder (drag, or Alt+Up/Down), remove. Up to 1,000 choices |
| Multiple select | Choice | Any number of choices | Same choices editor. Pasted text is split on commas |
| Contact | An email address | Text that isn't an address is left empty | |
| URL | Contact | An http or https link, up to 2,048 characters | A bare domain gets https://; other schemes are refused |
| Phone number | Contact | A phone number as typed | Digits, spaces, + - ( ) . / and an optional extension |
| User | People & links | Collaborators of the base | Allow adding multiple collaborators (up to 100 per cell), Notify collaborators when they're added. Removed members show as "Former member" |
| Created by | People & links | Who created the record | Read-only |
| Last modified by | People & links | Who last changed the record | Read-only |
| Link to another record | People & links | Records of another table (or the same table) | See Linked records |
| Autonumber | Computed | A unique, increasing number per record | Read-only |
| Created time | Computed | When the record was created | Date format, time format, time zone. Read-only |
| Last modified time | Computed | When any field of the record last changed | Date format, time format, time zone. Read-only |
| Lookup | Computed | Values of a field in the linked records | See Lookups, rollups and counts |
| Rollup | Computed | One value aggregated from the linked records | See Lookups, rollups and counts |
| Count | Computed | How many records a link field links to | 0 when there are none |
| Formula | Computed | The result of a formula over the record's fields | See Formulas |
| Button | Computed | A clickable button in each cell | Button label (default "Open") and When clicked: Open a URL (the URL comes from a formula; only http and https results work, and they open in a new tab) or Run automations (see Automations) |
Read-only and computed fields can't be typed into; OpenRows fills them for you.
Converting field types
Change a field's type or options from Change field type or Edit field. Before you save, a conversion preview runs the conversion over the first 100 records and shows:
- "All N values in N records convert without loss." when nothing changes, or
- a warning when values would be cleared or changed (rounding, dropped choices, a removed choice still in use), ending with "This can't be undone.", and
- examples as before → after, with cleared values shown as "Empty".
Converting into a computed type (formula, lookup, rollup, count) discards the stored values, because the field fills its own. Things to know:
- Values that can't be read as the new type become empty (for example text that isn't a date).
- Converting to a select adds a choice for every value that doesn't match an existing one.
- Converting to a link matches each value against the primary field of the linked table, ignoring case. Names that match nothing become new records in the linked table.
- Converting a link to another type turns the linked records' names into values (text joins them) and moves the inverse link field to the trash.
- Converting to text uses the values as they're displayed.
Linked records
A Link to another record field connects records across tables of the same base. Options:
- Link to table: any table of the base. It can't be changed after the field is created.
- Allow linking to multiple records: on by default; turn it off for one linked record per cell.
- Limit record selection to a view: only records that a view of the linked table shows can be linked. This is enforced on every write, not only in the picker.
Creating a link adds a matching field to the linked table, named after this table (with a number if that name is taken). Both sides always stay in sync. A link to the same table has no inverse field. Deleting either side moves both fields to the trash; restoring one brings back the pair with its links.
Cells show the linked records' primary field values ("Unnamed record" when it's empty). You can paste or import names: they're matched against the linked table's primary field. Deleted records disappear from link cells and come back if the record is restored.
Lookups, rollups and counts
These fields read through a link field of the same table. If the table has none, the editor asks you to add a "Link to another record" field first.
- Lookup: pick the Linked record field, then the Field to look up in the linked table. The cell lists each linked record's value, in link order.
- Rollup: pick the linked record field and the Field to roll up, then an Aggregation:
| Aggregation | Function |
|---|---|
| Sum | SUM |
| Average | AVG |
| Minimum | MIN |
| Maximum | MAX |
| Count numbers | COUNT |
| Count non-empty values | COUNTA |
| Count all values | COUNTALL |
| All true | AND |
| Any true | OR |
| An odd number true | XOR |
| Join with a separator | ARRAYJOIN (set the Separator) |
| Unique values | ARRAYUNIQUE |
| Non-empty values | ARRAYCOMPACT |
| Concatenate | CONCATENATE |
Sum, Average, Minimum and Maximum also have Decimal places (or Automatic).
- Count: pick the linked record field. The cell is the number of linked records.
Computed values update when the linked records change. A field can't read itself through a chain of lookups, rollups or formulas; OpenRows refuses a circular reference. After a large change, a spinning icon in the column header ("Updating values. Some may be out of date for a moment.") shows that values are still being recomputed.
Formulas
A formula field computes a value for each record from its other fields, like Airtable formulas. The editor highlights the formula, completes field names (type {) and functions (Ctrl Space lists everything), shows help for the function under the cursor, marks errors where they are, and previews the Result type and the result for the First record before you save. You can't save an empty or invalid formula.
Syntax
- Reference a field as
{Field name}. A single-word name also works without braces (Price * 2). Inside braces, write\}for a}in a name. References survive renames. - Text goes in single or double quotes, with backslash escapes (
\n,\t,\"). TRUEandFALSEare booleans. Function names ignore case.- Operators, from tightest to loosest:
*/, then+-, then&(joins text), then comparisons=!=(or<>)<<=>>=. Use parentheses to group.
IF({Status} = "Done", "Closed on " & DATETIME_FORMAT({Closed at}, "YYYY-MM-DD"), "Open")
A formula can be up to 10,000 characters, and parentheses and calls can nest up to 64 levels.
Results
| Result type | Shown as | Options |
|---|---|---|
| Number | A number | Decimal places (Automatic or 0 to 8) |
| Text | Text | |
| Date | A date and time | Time zone (default UTC) |
| Boolean (1 or 0) | 1 or 0 | |
| List | Items joined with ", " |
A formula that fails for a record shows #ERROR!. Dates are computed in UTC unless you use SET_TIMEZONE. Formulas that call NOW() or TODAY() are refreshed every hour, not continuously; TODAY() is the current day in UTC.
Functions
OpenRows supports 84 functions.
| Category | Functions |
|---|---|
| Text | ARRAYJOIN, CONCATENATE, ENCODE_URL_COMPONENT, FIND, LEFT, LEN, LOWER, MID, REPLACE, REPT, RIGHT, SEARCH, SUBSTITUTE, T, TRIM, UPPER, REGEX_MATCH, REGEX_EXTRACT, REGEX_REPLACE |
| Logical | AND, OR, XOR, NOT, IF, SWITCH, BLANK, ERROR, ISERROR, TRUE, FALSE |
| Numeric | ABS, AVERAGE, CEILING, COUNT, COUNTA, COUNTALL, EVEN, EXP, FLOOR, INT, LOG, MAX, MIN, MOD, ODD, POWER, ROUND, ROUNDDOWN, ROUNDUP, SQRT, SUM, VALUE |
| Date and time | CREATED_TIME, DATEADD, DATESTR, DATETIME_DIFF, DATETIME_FORMAT, DATETIME_PARSE, DAY, HOUR, IS_AFTER, IS_BEFORE, IS_SAME, LAST_MODIFIED_TIME, MINUTE, MONTH, NOW, SECOND, SET_LOCALE, SET_TIMEZONE, TIMESTR, TONOW, FROMNOW, TODAY, WEEKDAY, WEEKNUM, WORKDAY, WORKDAY_DIFF, YEAR |
| Lists | ARRAYCOMPACT, ARRAYFLATTEN, ARRAYUNIQUE, ARRAYSLICE |
| Record | RECORD_ID |
Notes:
- Date units for DATEADD, DATETIME_DIFF, IS_SAME, TONOW and FROMNOW:
milliseconds(ms),seconds(s),minutes(m),hours(h),days(d),weeks(w),months(M),quarters(Q),years(y), singular or plural. - DATETIME_FORMAT and DATETIME_PARSE use Airtable's format tokens, such as
YYYY-MM-DDorD MMMM YYYY h:mm A. - WEEKDAY and WEEKNUM take an optional week start, "Sunday" or "Monday". WORKDAY and WORKDAY_DIFF take optional holidays.
- LAST_MODIFIED_TIME() with field arguments gives when those fields last changed.
- The REGEX functions don't support backreferences or lookaround.
- Aggregates such as SUM and MAX accept lists (lookups, multiple selects) and skip text and blanks.
Field descriptions
Add a description under Description in the field editor (up to 2,000 characters), or with Edit description in the column menu. It shows as an info icon in the column header, with the description as its tooltip.
Edit permissions per field
Owners and creators can limit who may change a field's values with Edit permissions in its column menu. Under Who can edit this field, choose:
- Editors and up (the default)
- Creators and up
- Specific people: pick roles and collaborators
- Nobody (read-only)
Everyone who can see the table still sees the field; this only limits editing. A restricted field shows a lock icon in its header. When a field is restricted, Allow this field to be filled through forms lets public forms set it on the records they create (see Forms). Table-level permissions (who may add, delete and edit records) also apply; both must allow a change. See Sharing and permissions.
On the hosted service, edit permissions depend on your plan (see https://openrows.io/pricing); self-hosted instances have no limits.