Documentation

Everything in RowFold, explained.

The same guide that powers in-app help — every view, field type, permission, automation, and the full API. Signed in, press F1 on any page for help about exactly where you are.

Getting started
Getting started

Getting started with RowFold

RowFold is a workspace of related tables — customers, projects, invoices, anything you track — with views, reports, and AI on top. This article walks you from creating an account through onboarding, templates, your first workspace and table, and a quick tour of Home, the sidebar, and the ⌘K palette.

Create your account

On the sign-up page, enter your Full name, Work email, and a Password of at least 8 characters, tick the box agreeing to the Terms and Privacy Policy, then press Create account. A strength meter rates your password as you type, and the eye icon shows or hides it.

If a teammate already invited you to a workspace, sign up with the same email address. That claims the account they created for you: you set your password and keep every workspace membership you were invited to.

Returning later? Use Sign in. Leaving Keep me signed in checked keeps your session alive for 30 days.

Signing up starts your 14-day free trial: every feature is unlocked from the first minute, no card required. The sidebar shows how many trial days remain.

Walk through onboarding

Right after sign-up you land in a three-step setup: About you, Workspace, and Invite team. Step 1 asks what you'll build — Operations, Sales & CRM, Product & Eng, Bookings & Services, People & HR, or Personal. Picking a card selects a suggested template and accent color and moves you straight to step 2 (Personal suggests Blank workspace); press Skip if none fits.

Step 2 is where your first workspace takes shape: type a Workspace name, pick an emoji and accent color for its icon, and choose a template. Continue unlocks once you have both a name and a template selected.

Step 3 lets you invite teammates now or press Skip for now. Either button finishes setup: the workspace is created and you land on Home.

When you land on Home a short welcome tour points out the workspace switcher, your tables, search, and the Workspace section in the rail. Skip it or replay it any time — the replay lives at the bottom of this help panel.

Choose a template or start blank

A template creates a set of pre-wired related tables — complete with relation, lookup, and rollup fields, plus sample records so nothing looks empty. Onboarding offers Service Business, Project Delivery, Sales CRM, Product Roadmap, Talent Pipeline, Issue Tracker, Editorial Calendar, Events Co., and Inventory & Supply, or Blank workspace to start from scratch. Use the search box or the category chips to narrow the list.

The full gallery lives on the Workspaces page (also reachable from Browse templates on an empty Home). It goes much further — real-world setups like Cedarwood Salon Booking, Cedar Veterinary, Heritage Realty, Compass Magazine, Long Road Podcast, Velocity Legal, Riverstone Academy, and personal ones like Reyes & Park Wedding, Japan, 2 weeks, Personal library, Back garden 2026, and The Verdigris Court (a tabletop campaign).

You can create as many workspaces as you like, so trying a template is cheap — explore one, then start your real one blank if you prefer.

Invite teammates

On the invite step, type an email, choose a role — Editor (the default), Viewer, or Admin — and press Add or Enter. You can change each person's role in the list or remove them before finishing. You can always invite more people later from Members.

Everyone you add becomes a member of the new workspace with the role you chose; you become its Admin. Invited teammates activate their account by signing up with the same email address you entered.

The setup screen also notes where you stand: you're on your 14-day free trial — everything unlocked, workspaces unlimited, no card needed. Teammates you invite each take one seat when you pick a plan later.

Find your way around Home

Home greets you with a snapshot: counts of tables, records, relation fields, and teammates, plus a Jump into button for your busiest table. Your tables shows a card per table — click one to open its records — and while you have at least one table but fewer than eight, a dashed New table card rounds out the grid. Recently touched lists the six most recently updated records across the workspace.

The Getting set up checklist tracks four milestones — Create your workspace, Add your first table, Add records, and Connect tables with relations — and each row links straight to the page where you do it. The Ask RowFold card opens the search-and-ask palette, and a small card below it points you into the rail's Workspace section for schema, automations, and permissions.

Get around: the sidebar and views

The left sidebar (the rail) is your map. At the top sit the RowFold logo — a click takes you Home — and the workspace switcher, which opens the Workspaces page to jump to another workspace or create one. Below come Home, Ask RowFold (it wears an AI badge when an AI model is configured), and your Tables list with live record counts. Under that, a Workspace section gathers everything you build and govern — Reports, Schema & relations, People & access, Permissions, Import data, Automations, Developers, and Audit log. Your avatar, Settings, and sign out live at the bottom.

Select a table and six view pills appear under it: Grid, Board, Gallery, Calendar, Tree, and Gantt. They are the same table through different lenses — switching views never changes your data.

Once you star items, a ⭐ Starred section appears in the rail for one-click access.

One rail, no modes

There are no separate modes to switch between: browsing records, editing values, switching views, and asking questions all share the same rail as the structural work. Designing tables and fields, the schema map, permissions, import, automations, the developer API, and the audit log are simply the entries gathered under the rail's Workspace section — always one click away, never tucked behind a separate mode.

To create a table, open the Tables page and press New table: give it a Table name, pick a Template type (Custom starts blank; other types come pre-built with their typical fields), and press Create and add fields → to refine it. There's also Build with AI, which turns a plain-English description into a connected set of tables — you approve before anything is created. Both options appear only for workspace Admins.

Search and ask with ⌘K

Press ⌘K (or Ctrl+K) anywhere to open the palette. Type to search tables and records, move with , open with Enter, and close with Esc. The same box accepts plain-English questions about your data.

Prefer to go straight to asking? ⌘/ (or Ctrl+/) opens the ask prompt directly, and Ask RowFold in the sidebar opens the full page.

Keyboard shortcuts

⌘/CtrlK Open or close the search palette Anywhere
⌘/Ctrl/ Open the ask prompt directly Anywhere
↑ / ↓ Move through results ⌘K palette
Enter Open the highlighted result ⌘K palette
Esc Close the palette or open panels Anywhere
Enter Add the typed email to the invite list Onboarding invite step
Getting started

Workspaces

Workspaces are the top-level homes in RowFold: each one holds its own set of related tables and its own member list. You create them from templates or from scratch, switch between them from the sidebar, and use roles to control who can do what inside each one.

Create a workspace

Everything in RowFold lives inside a workspace — a self-contained home for a set of related tables and the people who use them. To make one, click the workspace switcher near the top of the sidebar to open the Workspaces page, type a Workspace name, pick a template card, and click Create workspace.

You automatically become the new workspace's Admin, so you can build tables and invite people right away. A template drops you on the schema map so you can see what was built; a blank workspace takes you straight to creating your first table.

Pick a template or start blank

Template cards show a tagline, a short description, and chips listing the tables they will create. Picking one builds a pre-wired set of related tables — complete with relations, lookups, and rollups like lifetime value per customer — plus sample records so every feature has something to show.

Templates are grouped by category — Sales & marketing, Services & bookings, Product & engineering, Content & marketing, People & operations, and Personal — covering everything from CRM and recruiting to vet clinics and wedding planning. Prefer an empty canvas? Choose Blank workspace under Start fresh.

The Service Business card is pre-selected when the page loads, so double-check your choice before you click Create workspace. If your data already lives in spreadsheets, follow the import link on this page instead — RowFold builds a workspace for you from CSVs or Excel.

Switch between workspaces

The workspace switcher sits just under the RowFold logo in the sidebar. It shows the active workspace's icon, name, and kind, plus how many workspaces you belong to in total. Click it to open the Workspaces page, then pick any card under Your workspaces to jump in.

You only ever see workspaces you are a member of. When a page doesn't specify a workspace, RowFold falls back to your oldest workspace — the one that was created first.

Tell your workspaces apart

Each workspace carries an icon and an accent color that appear on its card and in the sidebar switcher, plus a kind label (like CRM or Bookings) that shows in the switcher. These come from the template you chose at creation — a blank workspace gets a neutral + badge.

There is no editor for changing a workspace's name, icon, color, or kind after creation, so if the look matters to you, pick the template that fits.

Invite people and set roles

Open the workspace's People page to see everyone with access. Each member card shows their role and a plain-English summary of what it allows. From most to least access:

  • Admin — full control: schema, members, automations, everything.
  • Editor — read, create, edit, and delete records; no schema or member control.
  • Contributor — read everything and create new records; cannot edit or delete records that already exist.
  • Viewer — read-only, for stakeholders who only need visibility.

Only workspace Admins can manage membership. Use the role dropdown on a member's card to change their role, Remove to revoke their access, or + Invite to add someone with a starting role. The picker under Invite someone lists only people you already share a workspace with — if all of them are members already, the invite form doesn't appear.

Transfer ownership

To hand a workspace to someone else, open Settings and find Transfer workspace ownership in the Danger zone. Choose the member to promote and click Transfer: they become that workspace's Admin and you are moved to Editor there.

You can only transfer a workspace you administer, and only when it has at least one other member.

Leave, export, or wind down

Removing a member — or being removed — only revokes access. The workspace and everything in it stays put for its remaining members, and there is no button for deleting a whole workspace.

Before winding anything down, grab your data from Data export in Settings: Full workspace JSON covers schema and every record across all your workspaces, and CSV per table downloads a zip with one CSV for every table you can access. To close your account, type your email to confirm and click Delete account — your profile, memberships, and permission overrides are removed, shared workspaces remain for their other members, and it cannot be undone.

Getting started

Concepts & glossary

Learn the words RowFold uses — workspaces, tables, fields, records, views, relations, and reports — and how the single rail and its Workspace section fit together, so the rest of the app makes sense at a glance.

Learn the vocabulary

  • Workspace — the top-level home for a set of related tables, with its own members and roles. You create one from a template or start blank.
  • Table — a list of one kind of thing: tasks, customers, invoices. Each table has its own fields and records, plus an emoji and accent color so you can spot it in the rail.
  • Field — a column in a table. Types include Text, LongText, Number, Currency, Date, Boolean (a true/false check), Select and MultiSelect, Email, Url, Phone, Percent, Rating, Progress, and People, plus the linked types below.
  • Record — a single row in a table: one task, one customer. Every record has a display name, and deleted records go to the Trash where they can be restored.
  • View — a layout for the same records. Every table offers six: Grid, Board, Gallery, Calendar, Tree, and Gantt. Switching views never changes your data.
  • Relation (link) — a field that connects a record to one or more records in another table of the same workspace.
  • Lookup — a field that shows a value pulled through a relation from a linked record. Edit the source record and the lookup follows.
  • Rollup — a field that summarizes linked records with a count, sum, average, minimum, or maximum.
  • Report — a saved summary of one table, shown as a table, a single KPI number, or a chart that can flip between bar and line and plot several columns at once — with filters, sorting, and grouping. Date groups can be bucketed by day, week, month, quarter, or year.
  • Ask RowFold — ask questions about your data in plain language from the rail or the search palette; answers cite the records they draw on.
  • Automation — a rule that watches a table and acts: a trigger (a record created, updated, deleted, matching conditions, or a schedule), optional conditions, then steps such as updating fields, creating records, sending email, calling a webhook, or generating text with AI.
  • API token / webhook — an API token is a workspace-scoped key (a signed JWT) for calling the REST API at /api/v1; a webhook posts each matching record change to a URL you choose so outside systems stay in sync. Both live on the Developers page.

Understand how your data is organized

Everything nests three levels deep: a workspace holds tables, and each table holds fields (its columns) and records (its rows). The rail shows the tables of your current workspace with a live record count beside each name; click the workspace name at the top of the rail to switch workspaces or create a new one.

Relations connect records across tables in the same workspace — a task can link to a project, an invoice to a customer. Lookups and rollups then carry values along those links, so you enter a number once and summarize it wherever it is linked. Deleting a record moves it to the Trash rather than destroying it, and restoring brings it back exactly as it was.

Find your way around the one rail

RowFold has a single rail — there are no modes to switch between. The top is for working with data: Home, Ask RowFold (badged AI when an AI model is configured), and your tables, each of which expands a row of view pills when selected.

Below your tables, a Workspace section gathers everything you build, connect, and govern, in order: Reports, Schema & relations (the live schema map), People & access, Permissions, Import data, Automations, Developers (API keys and webhooks), and Audit log. Super admins also see an Admin entry. Designing a table's fields opens from the Tables list itself.

Star anything and a ⭐ Starred section appears; your avatar, Settings, and sign out sit at the very bottom.

Pick a view for the job

Select a table in the rail and six view pills appear under it: Grid for spreadsheet-style editing, Board for cards in columns, Gallery for larger cards, Calendar for dated records, Tree for hierarchies, and Gantt for timelines. The same six views are offered in the table toolbar.

Views are presentations of one shared set of records, not copies. Change a record in any view and every other view reflects it.

Find anything with the search palette

Press ⌘K (Ctrl+K on Windows) anywhere, or click Search or ask… in the top bar, to open the palette. It searches the tables and records of your current workspace; use to move through results, Enter to open the highlighted one, and Esc to close.

To ask a question instead of searching, click the ask row at the top of the palette's results, or press +/ to open the ask dialog directly. Type your question there and press Enter; the answer cites the records it drew on.

Know what your role lets you do

Each workspace member has one of four roles. Viewers read; Contributors can also create records; Editors can also edit and delete records; Admins additionally control structure, members, and permissions. The New table, Add first table, and Build with AI actions only appear for workspace Admins, and the server enforces the same rule.

Admins can also fine-tune access per person: a table can be set to Full access, Read & create, Read only, or No access (hidden), and an individual field can be made Read only or Hidden for someone. Because of these overrides, two members of the same workspace may see slightly different tables and fields.

Keyboard shortcuts

⌘K / CtrlK Open or close the search palette Anywhere
⌘/ / Ctrl/ Open the ask dialog Anywhere
↑ ↓ Move between results Search palette
Enter Open the highlighted result Search palette
Enter Submit your question Ask dialog
Esc Close the dialog Search palette and Ask dialog
Getting started

Search, navigation & shortcuts

How to move through RowFold: the rail and topbar, switching workspaces, the ⌘K palette for searching or asking questions, the New button, starring, the peek drawer, and the complete keyboard shortcut catalogue.

Get around with the rail and topbar

The left rail is home base. The RowFold mark at the top takes you to Home, and just beneath it sits the workspace switcher. Below that come the Home and Ask RowFold links — Ask RowFold wears an AI badge when AI answers are configured — and then the Tables list, every table in the active workspace with its color, emoji, and record count. Click a table to open it, and the active one expands a row of view pills: Grid, Board, Gallery, Calendar, Tree, and Gantt.

Under the tables, a Workspace section lists Reports, Schema & relations, People & access, Permissions, Import data, Automations, Developers, and Audit log (super admins also get Admin). A ⭐ Starred section appears once you star something, and the rail footer shows your avatar with quick links to Settings and sign out.

The topbar carries breadcrumbs (Home, the workspace, then the current page), the Search or ask… button that opens the palette, and the New button.

Switch workspaces

Click the workspace card under the RowFold mark — it shows the current workspace's icon, name, kind, and how many workspaces you have in total. It opens the workspace list, where you can jump to another workspace or start a new one.

The rail lists only workspaces you're a member of, and everything in it — the table list, the palette, search results — stays scoped to the active workspace. If you don't belong to any workspace yet, the card reads Create workspace instead.

Search or ask from the palette

Press Ctrl/⌘ + K anywhere, or click Search or ask… in the topbar. Before you type, the palette offers your most recently starred records, every table with its record count, and a Navigate group with jumps to Home, Schema graph, Ask AI (labeled Ask your data when no AI model is connected), and Import data. Start typing and results refresh a beat after you pause — tables matched by name, plus records from the current workspace.

Move with , open the highlighted item with Enter, and close with Esc. The top row always offers to turn your words into a question — click it to get an answer instead of a list of matches.

You can also go straight to asking: press Ctrl/⌘ + / to open the ask panel, type a question, and press Enter. With an AI model connected the response is headed AI Answer; without one you get an Instant Answer, honestly labeled built-in analyzer — no AI used. When the answer draws on your records, citation cards appear beneath it — click one to jump to that record.

Create things with the New button

The New button in the topbar opens a menu of starting points:

  • Build with AI — describe what you're tracking in plain words and review a proposed set of tables, fields, and relations before anything is created. Press Ctrl/⌘ + Enter in the description box to generate. Admins only.
  • New record — jumps to a table's grid, where the quick-add row is waiting. Appears once the workspace has at least one table.
  • New table — add a table to this workspace. Admins only.
  • New workspace — start from a template or blank.
  • Import workspace — bring in CSVs or Excel; relations are detected for you.

Star tables and records

Star a record with the ☆ Star button in its peek drawer, and star a table with the star icon at the top of its page. A toast confirms each toggle.

Starred items surface in two places: the ⭐ Starred section of the rail (the first six, tables first) and the top of the ⌘K palette (your four most recently starred records). Stars are saved in this browser, so they're personal to you — and to this device.

Peek at records without leaving your view

In the grid, click a cell once to select it, then press Space — or click the expand icon that appears on the Name cell — and the record slides open in a peek drawer, no page change. In the Board and Gallery views, clicking a card opens the same drawer.

The drawer has three tabs: Fields shows every value, Activity shows what changed and when, and Graph draws a small map of related records — click any outer node to open its peek on top of the current one. Relation chips and Related records cards do the same, building a breadcrumb trail; click a crumb or ← Back to retrace, or press Esc to step back one record at a time.

When you want the whole page, Open full record is always in the drawer's header.

Build and govern from the Workspace section

Everything structural lives in the rail's Workspace section, no mode-switch required. Schema & relations opens the live schema map, where dragging between tables creates Relation fields; the Tables list higher up is where you design a table's fields, and a record's own detail page is where you add one-off links between two specific records. Automations builds trigger-and-step rules, and Developers manages API keys and webhooks.

Governance sits in the same section: People & access and Permissions control who can do what, Import data brings in CSVs and Excel, and Audit log shows who changed what. Super admins also see an Admin entry for the operator console.

Back out with Esc

Esc always closes the topmost thing first: the palette, the ask panel, the Build with AI dialog, the navigation drawer, then the peek drawer one stacked record at a time, then a cell edit, and finally the cell selection itself. Press it repeatedly to unwind all the way back to the page.

On small screens the rail tucks away into a slide-out drawer. Open it with the menu button at the left of the topbar; tapping the dimmed backdrop, choosing any link, or pressing Esc closes it again.

Keyboard shortcuts

Ctrl/⌘K Open or close the search palette Anywhere
Ctrl/⌘/ Open the ask panel Anywhere
Esc Close the topmost layer: palette, ask panel, dialog, drawer, peek, cell edit, then cell selection Anywhere
↑ / ↓ Move through results ⌘K palette
Enter Open the highlighted result ⌘K palette
Enter Submit your question Ask panel
Ctrl/⌘Enter Generate the schema plan Build with AI dialog
↑ ↓ ← → Move the cell cursor Grid view
Tab / ShiftTab Move one cell right / left Grid view
Page Down / Page Up Jump 15 rows down / up Grid view
Home / End Jump to the first / last cell in the row Grid view
Enter Edit the selected cell Grid view
Space Open the selected record in the peek drawer Grid view
Delete / Backspace Clear the cell (not the Name column or read-only fields) Grid view
Ctrl/⌘C Copy the cell value Grid view
Ctrl/⌘V Paste into the cell Grid view
Ctrl/⌘D Fill down from the cell above Grid view
Any letter, number, or symbol Start editing, replacing the value with what you type Grid view
Enter Save and move down (in a long-text cell, Enter starts a new line instead) Editing a cell
Tab / ShiftTab Save and move right / left Editing a cell
Esc Cancel the edit Editing a cell
Enter Add the record Quick-add row
Esc Clear and leave the box Quick-add row
Enter Apply the filter Filter value box
Esc Close the filter popover Filter value box
Views
Views

Grid, Board & Gallery

The main surface for working with a table's records: a spreadsheet-style grid with inline editing and full keyboard navigation, plus Board and Gallery layouts that show the same records grouped into columns or laid out as cards.

Switch views

Every table opens in the grid. The tabs above the table switch how the same records are shown: Grid, Board, and Gallery render right here, while Calendar, Tree, and Gantt open their own pages.

Whichever layout you pick, you're looking at the same underlying records — a change made in the grid shows up on the board and in the gallery too. A record count sits at the right end of the toolbar, and the grid's footer shows both records and fields.

Create records

Click New record at the top right to open a full form. Display name is required — it's the short name shown in lookups and relationships. Each field gets an input matched to its type, and relation fields let you Ctrl/Cmd-click to link several records at once. Lookup and rollup fields are computed automatically, so they don't appear in the form.

For quick capture, use the row at the bottom of the grid: type a name and press Enter to add the record instantly, ready for the next one. Pressing past the last row drops you straight into this box, and Esc clears it. The quick-add row only appears when your role lets you create records in this table.

Edit cells in the grid

Click a cell once to select it, then click again (or press Enter) to edit. You can also just start typing — the cell opens with your text replacing the old value — or double-click to edit immediately.

Each field type gets the right editor: select fields open a dropdown of their options, yes/no fields offer a Yes/No choice, dates get a date picker, and numeric types like rating (0–5) and percent (0–100) are kept within range. While editing, Enter saves and moves down (in a long-text field it adds a new line instead — press Tab or click away to save), Tab saves and starts editing the next cell to the right (Shift+Tab goes left), Esc cancels, and clicking away saves too. Changes save immediately — there's no separate save step — and the Updated column refreshes on the spot.

Relation cells work differently: double-click one (or click it while it's selected) to open a link picker where you can search, check several records, and press Save. Lookup and rollup cells are computed from linked records and can't be edited directly. Cells that are read-only for your role show a Read-only for your role hint and never open an editor.

Filter and sort

Click Filter to add a condition: pick a field, choose a condition, and enter a value. Conditions match the field's type — text offers contains, starts with, and ends with; numbers get comparisons like ≥ and ≤; dates offer is before and is after; select fields show their options as clickable pills. Most types also offer is empty and is not empty.

Each active filter becomes a chip in the bar — click a chip to edit it, or its ✕ to remove it. With two or more filters, a toggle appears to switch between AND (all must match) and OR (any can match).

Click Sort to order by any field, Ascending or Descending — or just click a column header: once for ascending, again for descending, a third time to clear. An arrow on the header shows the active sort. Until you sort, records are listed most recently updated first.

Select rows and act in bulk

Tick the checkbox at the start of a row to select it, or the checkbox in the header row to select everything. A bar appears showing how many records are selected, with three actions: Delete moves them to the Trash after a confirmation (you can restore them from there), Export CSV downloads the checked rows as a spreadsheet-ready file named after the table, and ✕ Clear deselects.

Bulk delete only touches records you're allowed to delete — anything outside your permissions is quietly skipped.

Work with the Board

The Board groups records into columns using the table's first single-select field — one column per option, plus an Unassigned column for records with no value yet (or a value that no longer matches any option). Each column header shows a count, and each card shows the record's name plus its first three other fields, skipping any that are empty.

Click a card to peek at the full record. Cards can't be dragged between columns — to move a record to a different column, change its select field in the grid or on the record's page. If the table has no single-select field with options, the Board tab shows the grid instead.

Browse the Gallery

The Gallery lays records out as cards: a large monogram tile, the record's name, and its first three fields, skipping any that are empty. It's a comfortable way to scan a table visually. Click any card to peek at the record.

Peek without leaving the view

Press Space on a selected cell to slide open the peek drawer — or click a board or gallery card. In the grid, clicking a row's number opens it too, as does the expand icon that appears on the name cell while it's selected. The drawer shows the record's fields, plus Activity (a history of changes) and Graph (a map of linked records) tabs, and a button to star the record.

Clicking a linked record inside the drawer stacks a new panel on top, with a breadcrumb trail and a ← Back button to retrace your steps. Open full record jumps to the record's dedicated page, and Esc closes the drawer — with stacked panels it steps back one panel at a time.

Keyboard shortcuts

↑ ↓ ← → Move the cell cursor Grid view
Enter Edit the selected cell; while editing, save and move down Grid view
Tab / ShiftTab Move right / left; while editing, save and edit the neighboring cell Grid view
Space Peek at the selected record Grid view
Esc Cancel an edit, clear the cursor, or close the peek drawer Grid view
Delete / Backspace Clear the selected cell (name, relation, lookup, rollup, and read-only cells are excluded) Grid view
Ctrl/⌘C Copy the cell's value Grid view
Ctrl/⌘V Paste into the selected cell Grid view
Ctrl/⌘D Fill down — copy the value from the cell above Grid view
Page Up / Page Down Jump 15 rows up / down Grid view
Home / End Jump to the first / last column of the row Grid view
Any letter or number Start editing, replacing the current value Grid view
Enter Add the record and keep typing the next one Quick-add row
Esc Clear the box and step back out Quick-add row
Views

Calendar, Tree & Gantt

Three read-only ways to look at the records you already have: Calendar plots them on a month grid by date, Gantt stretches them into timeline bars between a start and end date, and Tree lays out the links between records as an expandable hierarchy. Click any item in any of the three to open its record.

Switch views and pick a table

When a table is active, the sidebar shows a row of view pills: Grid, Board, Gallery, Calendar, Tree, Gantt. Click one to see the same table a different way.

Each view also has its own table picker in the header, grouped by workspace. In Calendar and Gantt, tables without a date field are grayed out and marked (no date) — those views need a date to place records in time. Tree accepts any table, since it works from links rather than dates.

Read the calendar

Calendar lays the month out Sunday through Saturday and places each record on the day from its date field. The line under the table name tells you which field the view is grouped by, along with how many events it found.

  • Each record appears as a colored pill; click it to open the record.
  • A day shows up to three pills. Busier days add a +N more note below them.
  • Every day with at least one event shows a count badge in the corner of its cell — the true total, even when only three pills fit.
  • Days outside the current month are shaded, today's cell is highlighted, and records with no value in the date field don't appear at all.

Move between months

Use the and buttons in the page header to step to the previous or next month, and Today to jump back to the current one. The month and year you're looking at is shown on the right side of the calendar's header bar.

Set up a table for the Gantt

Gantt draws each record as a horizontal bar from a start date to an end date, and it picks those fields for you by name: a date field whose name contains a word like start, begin, from, kickoff, or open becomes the start, and a second one containing end, finish, due, complete, target, closed, or to becomes the end. If no name matches, it falls back to your first date field for the start and any other date field for the end — so any two date fields give you true spans, and clear names just decide which plays which role. The toolbar always tells you which fields it chose.

With only one date field there is nothing to infer the end from, so every bar ends three days after it starts and the toolbar says End inferred (+3 days). Add a second date field to draw real spans.

Read the Gantt timeline

Months run along the top ruler, and a vertical Today line marks the current date. Each row shows the record's name and its dates on the left; the bar sits on the timeline to the right. Scroll horizontally to move through time — the name column stays pinned.

Click a bar or a record name to open that record. Records with an empty start date are left off the chart, and a record whose end date falls before its start is drawn as a single day.

Explore links in Tree view

Tree shows the records in a table together with the records they're linked to. Every record with at least one link in the chosen direction becomes a root branch; click a branch row to collapse or expand it. Each child row names the record, the table it lives in, and a small pill with the label of the link that connects them.

Use the Forward → and ← Backward toggle to switch perspective: forward shows outbound links (records this table links to), backward shows inbound links (records that link to this table). The header counts the roots, links, and nodes currently in view, and clicking any record name opens it.

When a view looks empty

Each view tells you what it's missing and offers the fix:

  • Calendar on a table with no date field shows Add a date field, which takes you to the table's field editor.
  • Gantt in the same situation shows Edit fields — one date field gets you bars with inferred ends, a second gets you real spans.
  • Tree with no relationships suggests flipping to the other direction, or following add a link to connect records.

If you have no tables at all yet, all three views point you to Create a workspace instead. Calendar and Gantt also fall back to that message when you open them fresh and none of your tables has a date field yet.

Working with data
Working with data

Records & the peek drawer

Every row in a table is a record, and there are two ways to open one: a quick peek drawer that slides in beside your view, and a full record page for editing and linking. This article covers reading, editing, linking, starring, and deleting records.

Open a record

In Board and Gallery views, click a card and a peek drawer slides in from the right — a fast, read-friendly summary that keeps your view underneath. In the grid, clicking a cell selects that cell instead, so peek another way: press Space with any cell of the row selected, click the expand arrow that appears on the selected row's name cell, or click a spot on the row outside the data cells, like the row number.

For the full page, click Open full record at the top of the drawer. To leave the drawer, click the dimmed background or the × button; Esc also closes it once you're on the first card.

Read a record in the peek drawer

The drawer opens on its Fields tab: the record's name, its table, and every field value rendered exactly as the grid shows it — progress bars for percents, stars for ratings, chips for selects. Fields that are hidden from you by field permissions are left out entirely.

Below the fields, Related records lists up to a dozen records connected to this one. The drawer is for reading — apart from starring, you make changes in the grid or on the full record page.

Hop between linked records

Relation values in the drawer are clickable chips. Click one — or any card under Related records — and a new peek card stacks on top of the current one, so you can wander through your data without losing your place.

A breadcrumb trail across the top shows the path you took. Click ← Back or press Esc to step back one card, or click any name in the trail to jump straight back to it.

Check activity and the graph

The drawer's Activity tab shows a light history of the record: when it was created, when it was last updated, and links made to other records, each with a timestamp.

The Graph tab draws a small map — this record in the center, up to eight connected records around it. Click any of the surrounding nodes to peek that record.

Edit a record on its page

The full page's Fields card holds the Display name and an input for every field, matched to its type — date pickers for dates, a Yes/No choice for Boolean fields, dropdowns for selects. Nothing is written until you press Save changes; the grid, by contrast, saves each cell as you go.

Lookup and rollup fields show computed values you can't type into — they're derived from linked records. Hover the small lookup, rollup, or relation badge next to a field name for a plain-English reminder of what it does.

Link records together

Relation fields on the record page are multi-select lists — the hint under each one reads Ctrl/Cmd-click to link several and counts the current links. Deselect everything and save to remove all of that field's links.

The Related records panel shows every record that links to this one — through a relation field or a one-off link — grouped by table with counts; click any chip to open that record. For a connection that doesn't fit any relation field, use Add a one-off link: pick a Target record, give the link a Key and an optional Label, and press Add link. One-off links appear under Manual links, where the × button removes one.

A one-off link can't reuse a key that belongs to a relation field on this table — you'll get a message telling you to edit that field instead. This protects the link from being wiped the next time the record saves.

Star a record

In the peek drawer, click ☆ Star — it flips to ★ Starred and the record joins the ⭐ Starred section of the sidebar, where up to six starred items show (starred tables listed first). Click the button again to unstar.

Stars are personal and saved in your browser, so your starred list is yours alone — it won't appear for teammates, and it won't follow you to a different device or browser.

Delete records — they go to the Trash

In the grid, tick the checkboxes at the left edge of the rows you want gone. A bar appears showing how many are selected; click Delete and confirm. The records move to the Trash rather than being destroyed.

On the Trash page, Restore brings a record back with its relations intact, Delete forever removes it permanently, and Empty trash purges everything you're allowed to delete. The Auto-purge column counts down a 30-day recovery window for each item, turning red in the final week — restore anything you want to keep before its time runs out.

Keyboard shortcuts

Space Open the selected record in the peek drawer Grid view, with a cell selected
Esc Step back one peek card; closes the drawer from the last card Peek drawer
Enter Edit the selected cell inline Grid view
Working with data

Importing data

The import wizard turns CSV files and Excel workbooks into connected tables — field types, cross-file relations, and rollups are detected for you, and you review everything before a single record is created.

Start an import

Open Import data in the left rail, or choose Import workspace from the New menu. The wizard walks you through four steps: add files, analyze, review the plan, import.

Nothing is created until the final step. Analysis only reads your data, so you can back out at any point without leaving anything behind.

Add your files

Drop files onto the upload area, or click browse to pick them. CSV files and Excel workbooks (.xlsx and .xls) both work, and you can add several files in one go.

  • Each CSV file becomes one table. Each sheet in an Excel workbook becomes its own table, so a whole workbook imports as a connected set.
  • The first row of each file or sheet is read as column headers. A file or sheet needs at least one data row under the header to be included.
  • Every sheet appears as a card showing its column and row counts — click to remove one before analyzing.

Choose where the data goes

By default the import creates a new workspace. The Workspace name field prefills from your first file's name — change it to whatever you like. When the import finishes, you become that workspace's Admin automatically.

If you opened the wizard from a workspace where you are an Admin, a Destination picker also offers importing into that workspace, adding the new tables alongside your existing ones — choosing it hides the Workspace name field, since nothing new is being created. Editors and Viewers never see this option, because adding tables changes the workspace's structure and that is reserved for Admins.

Analyze the files

Click Analyze files and RowFold reads a sample of each sheet — up to the first 300 rows — to propose a plan. Every column gets a suggested field type (numbers, currency, percentages, dates, emails, URLs, phone numbers, checkboxes, select lists, and more), and select columns get their options collected from your actual values.

Relations are found by matching values across files: when most of a column's values match the row names in another sheet — say an Orders file whose Customer column is full of names from your Customers file — that column is proposed as a relation between the two tables. Detected relations also produce suggested rollups, such as a count of linked rows or a total of an amount column.

Let AI refine the plan

When an AI model is configured, it reviews the detected plan and refines it: cleaner table and field names, better type calls, an emoji for each table, and rollups where the data makes them meaningful. It also writes a one-line summary and a short list of suggestions — things it noticed and ideas for later — shown above the plan.

Without a model configured, the built-in detection still produces the full plan on its own. AI runs only during analysis; the import step itself never calls the model.

Review and adjust the plan

Each proposed table appears as a card you can edit before anything is created:

  • Rename the table or any field by typing directly into its name.
  • Pick which column names each row with the Row name selector.
  • Untick a column's checkbox to leave it out of the import — columns that look like noise, such as empty ones, come pre-unticked.
  • Change any column's type from its dropdown. A relation column shows the table it points to; switch it to Text if you would rather import the raw values.
  • Suggested rollups sit in the Σ Rollups strip — click on any you don't want. Turning a relation into text also removes rollups that depended on it.

Use Back to files to add or remove files, then analyze again.

Finish the import

The Import button shows the total number of rows in your files. Clicking it builds every table and field, adds the records, then links relation columns: each value is matched against the row names in the related table, and matches become real record links, so rollups calculate immediately.

The confirmation screen shows how many tables, records, and relation links were created — and, if any relation values had no match, how many were left blank. Click any table pill to jump straight to its records, or See the schema map to view the imported structure as a diagram.

Values are tidied on the way in: currency symbols, commas, and percent signs are stripped from numbers, yes/no becomes a checkbox value, and dates are normalized to a standard format.

Several files with the same columns become one table

Exports are often split up — one file per year, per region, per batch — with the same columns in each. Drop them all in together and RowFold treats them as what they are: more rows of the same thing.

Files whose column headers match exactly are combined into a single sheet before anything is analysed, so you get one table rather than one per file. The upload list says so — “3 files combined — identical columns, so they become one table” — and the row count is the total across all of them, so you can check it before going any further.

A file whose columns differ, even slightly, stays separate and becomes its own table. Matching is on the full set of headers, ignoring case and surrounding spaces.

If you genuinely want identically-shaped files kept apart, import them one at a time.

Import into a table you already have

Importing into an existing workspace doesn't have to mean new tables. When the destination already has tables, each sheet gets an Into: picker — create a new table, or add these rows to one that's already there.

Choose an existing table and two more things appear:

  • Column mapping. Every column gets a picker: fill an existing field, or add it as a new field on that table. Columns are matched up by name automatically, so you normally only fix the odd one.
  • Match on. The column that identifies a row already in the table — a SKU, an email, an order number. Rows whose value is already there are updated; the rest are added.

Leave Match on empty and every row is simply added — which is what you want for a log or a list of new records, and what you very much don't want when re-importing a corrected export.

The wizard spells out which of the two will happen before you commit, and the summary at the end reports how many records were updated as well as how many were added.

What an update does and doesn't touch

Updating merges the incoming row into the record that's already there. Only columns with a value are written, so a blank cell never wipes what you already had — handy when your export only carries the fields that changed.

Columns you left as “+ New field” are added to the table as part of the import. Untick a column to leave it out entirely.

Relation, Lookup and Rollup fields can't be mapping targets. Lookups and rollups are calculated, and text dropped into a relation would sit there looking linked while pointing at nothing — so those fields aren't offered, and a column aimed at one is skipped rather than filled with something misleading.

Intelligence
Intelligence

Ask RowFold & AI tools

Ask plain-English questions about your data and get answers with clickable record citations, from a dedicated page or a pop-up panel available anywhere. Build with AI turns a written description into a proposed set of tables, fields, and relations that you review before anything is created.

Ask a question about your data

Open Ask RowFold from the left rail, type a question in plain words, and press Ask. Under Try one you can click a sample question — Customers with highest pipeline, Projects that are late, What changed last week, or Find renewal records — and it runs right away, so you can see what a good question looks like.

Before you ask anything, the page shows what RowFold knows about the current workspace: every table with its record count. That is the pool of data your answers draw from.

Read the answer and check its sources

The answer is written as prose, and every record it cites is rendered as a link you can open. Below the answer, Record citations lists each cited record with the table it lives in — click one to jump straight to it.

The line above the answer tells you exactly how it was produced: how many tables were read (only ones you can see), how many records were cited, how long it took, and whether the answer came from an AI model or the built-in keyword analyzer (no AI).

Ask from anywhere

Press Ctrl/⌘ + K or click Search or ask… in the top bar to open the palette. The first row — Ask AI anything, or Ask your data when no AI model is set up — opens the ask panel.

As you type, the palette searches the tables and records of your current workspace, and the top row becomes Ask: "your words". Click it to send your search text as a question instead of opening a match. Use and to move through the results and Enter to open one.

Ctrl/⌘ + / skips the palette and opens the ask panel directly. Type a question, press Enter, and the answer appears in place with up to six cited records as clickable cards. The panel needs an open workspace to know what to read.

Build tables with AI

Open the New menu in the top bar and choose Build with AI, or use the Build with AI button on the Tables page. Only workspace Admins see these entries, because creating tables changes the workspace structure.

Describe what you track in a sentence or two — the example chips below the box fill in a ready-made description you can edit. Press Design my schema (or Ctrl/⌘ + Enter) and RowFold drafts tables, field types, and the relations between them.

Review and approve the proposal

The proposal shows a one-sentence summary and each proposed table with its fields, their types, any select options, and where relation fields point. Nothing has been created yet — designing never writes to your workspace.

Press Redesign to go back and rephrase, or the create button (it states how many tables it will add) to apply the plan. After creation you land on the schema graph to see the result.

  • A plan proposes up to 5 tables, and never recreates a table name that already exists — new relation fields can point at your existing tables instead.
  • Every table gets a name column automatically, so the AI never adds one.
  • Each table the builder creates is recorded in the workspace audit log.

Work without an AI model configured

Everything keeps working when no AI model is connected — answers come from RowFold's built-in analyzer, which reads your real records and matches keywords. It is labeled honestly everywhere: the panel header says Instant Answer with the note built-in analyzer — no AI used, and the Ask page meta line says built-in keyword analyzer (no AI). If a configured AI model fails mid-question, the same analyzer answers instead and the answer says the model service was unavailable.

The built-in analyzer can: find late records (a date field before today on a record not marked done), rank records by any numeric field when you ask for the highest or largest, summarize tables and recent activity, review permissions and flag sensitive-looking fields, suggest a table your workspace might be missing, and search text across record names and field values.

Build with AI without a model proposes a single starter table named from your description, with Status, Priority, Due date, Owner, and Notes fields — its summary notes that connecting an AI model unlocks full multi-table design.

Know what data is sent

Nothing leaves RowFold unless an AI model is configured — the built-in analyzer runs entirely inside the app.

With a model configured, asking a question sends your question plus a snapshot of the current workspace: table names, field names and types, and record values, capped at the 200 most recently updated records per table with long values shortened. The snapshot is trimmed to your permissions first — tables you cannot view are left out entirely, and fields hidden from you are removed before the model reads anything.

Build with AI sends only your description plus the names and field types of your existing tables, so relations can point at them. No record data is included.

What each AI surface sends

RowFold has several AI surfaces, and each sends the model only what it needs — one sends nothing at all. Exactly what leaves RowFold, per surface:

SurfaceContext sent to the model
Build with AIYour description plus the workspace's table and field names (so relations can target existing tables). No record data.
Ask RowFoldYour question plus a workspace snapshot: table and field names and types, and sample records — up to the 200 most recently updated per table, long values shortened.
Search (⌘K)Nothing. Keyword search runs entirely inside RowFold's database; no query or record data is sent to a model.
Field suggestionsJust the table name — nothing else.
Import analysisSheet names, column headers, and a sample of rows (up to 300 per sheet) from the files you're importing — only when a model is configured; without one, detection runs locally and nothing is sent.

Every snapshot is trimmed to your permissions first: tables you can't view are dropped entirely, and fields hidden from you are removed before the model reads anything.

Requests go to Anthropic (the Claude API), one per call — and Anthropic's API terms don't permit training on API customer data. Repeated questions about the same workspace reuse a cached copy of the snapshot rather than resending it, and outputs return only to you: a schema plan to review, an answer with citations, yours to edit, ignore, or delete.

Keyboard shortcuts

Ctrl/⌘K Open or close the search palette Anywhere
Ctrl/⌘/ Open the ask panel Anywhere
Enter Ask the question you typed Ask panel
↑ / ↓ Move through results Search palette
Enter Open the highlighted result Search palette
Esc Close the palette, ask panel, or Build with AI dialog Anywhere
Ctrl/⌘Enter Submit your description for a schema design Build with AI dialog
Intelligence

Reports & charts

Reports turn your tables into saved, shareable answers: tabular summaries, KPI cards, and bar or line charts that pull fields, follow relations, roll up related records, and compute formulas — with grouping, filtering, and CSV export.

Create a report

Open Reports in the rail and click + New report. RowFold builds a starter report from your workspace's most-connected table — a category column and a numeric column when the table has them, plus up to three counts of related records — and drops you straight into the editor. If the workspace has no tables yet, you're sent to create one first.

Each saved report appears as a card on the Reports page, which also shows a quick workspace overview: table, record, relation, and teammate counts. Clicking a card opens the read-only view; the Edit button there takes you back to the editor.

Pick a visualization

The tabs at the top of the editor switch how the report renders: Table, KPI, or Bar.

  • Table lists every row, with a Total line for aggregation and formula columns.
  • KPI shows one big number per aggregation or formula column — its total across all rows (an average column shows the average). It needs at least one of those column kinds.
  • Bar charts every numeric column as a series, with a Bar/Line toggle. It needs at least one numeric column.

Click Save to keep changes to the name, emoji, base table, visualization, grouping, and sort. The Live preview panel shows the report against your real data as you build it.

Add columns

A report is a list of columns. Pick a kind, give it a Label, fill in that kind's controls, and click + Add column.

  • Field — a value straight from a column on the base table, or the record's name.
  • Lookup — follow a Relation field on the base table and pull a value (or the record name) from the linked record.
  • Aggregation — roll up records from another table that link back to this one: count, sum, avg, min, or max. count ignores the value field; the other four need a numeric field to aggregate.
  • Formula — arithmetic over other columns, referenced by label, e.g. [Pipeline $] / [Deals]. Operators: + - * / ( ).

Remove a column with the × button — any filters, grouping, or sort that used it are cleaned up automatically. The Base table picker sets which table the report reads from; changing it clears all columns and filters, so choose it first.

Group and sort

Group by collapses rows that share a value in one column into a single line per value. Numeric columns re-aggregate within each group (sums, or the aggregation's own operation for avg/min/max columns); text columns show the shared value, or a count like 3 values when members differ. The first column shows how many records each group contains, and formula columns don't appear in the Group by picker.

When the grouped column holds dates, pick a period — By day, By week, By month, By quarter, or By year — to see totals over time, such as revenue by month. Exact value groups by the precise date instead. Bucketed groups come out in chronological order unless you set an explicit sort.

Sort orders rows by any column, ascending or descending — numerically when both values are numbers, alphabetically otherwise.

Filter rows

Click + Filter (available once the report has at least one column) to add a rule: a column, an operator, and a value. Click Save filters to apply. Operators cover equality (=, ), text (contains), numeric comparisons (>, <, , ), and blank checks (is empty, is not empty — these need no value, so the value box greys out).

For date columns, in last … days and in next … days take a number of days and match a rolling window that includes today.

With more than one filter, a Match selector appears: all keeps rows that pass every rule; any keeps rows that pass at least one.

Chart multiple series

In the Bar visualization, every numeric column becomes a series with its own chip above the chart. Only the first series starts on; click chips to toggle others, and at least one always stays on. Each series keeps a fixed color, so turning one off never recolors the rest — the chips double as the legend.

Hover, tap, or keyboard-focus a point to read every visible series at that position in one tooltip. All series share a single axis, so pick series with comparable scales. Switch between Bar and Line with the toggle above the chart.

Share and export

Every member of the workspace can open a report. Cards on the Reports page link to the read-only view — the same numbers and chart without the editing controls — so it's the page to send teammates. Reports honor field permissions per viewer: a field hidden from someone stays blank in their copy, even when reached through a lookup, and hidden numbers can't leak through sum/avg/min/max (counts still work).

Export CSV on the read-only view downloads the current result as a spreadsheet-ready file. Grouped reports export the group label with its record count, and values with commas or quotes are escaped so columns line up in Excel.

Delete a report

Click Delete report at the bottom of the editor and confirm. Deleting is permanent — there's no undo — but it removes only the report definition; the records in your tables are untouched.

Intelligence

Dashboards

Dashboards are composable boards of live widgets — KPI cards, charts, tables, an AI summary, and an activity feed — laid out on a drag-and-drop grid. Each widget draws from a saved report or a metric you build on the spot over your data, and a board can be shared with the team or set as everyone's workspace home.

Create a dashboard

Open Dashboards in the rail and click + New dashboard — RowFold creates an empty board and drops you into the builder in edit mode. You can also jump between boards, or start a new one, from the dashboard switcher at the top-left of any dashboard.

A board is a grid of widgets. Add them from the panel on the right, arrange them, then click Save dashboard. Boards you can see appear as cards on the Dashboards page, with the workspace home and most-recent boards first.

Widgets you can add

In edit mode, the Add a widget panel offers eight types:

  • KPI card — one metric, with an optional sparkline and trend.
  • Line chart — a value over time.
  • Bar chart — compare across groups.
  • Donut / pie — each group's share of a total.
  • Data table — rows from a table or a saved report.
  • AI summary — plain-language highlights and anomalies about your workspace.
  • Activity feed — the most recent record changes.
  • Text / notes — a heading or bit of context you type in.

Click a type to drop it on the canvas. A tile's title is editable inline, and the × removes it.

Connect a widget to data

KPI, chart, and table widgets show a gear in edit mode — click it to choose where the numbers come from:

  • Saved report — point the widget at any report in the workspace, and its numbers stay in sync with that report. The Pull a saved report shortcuts in the panel do this in one click.
  • Build a metric — pick a table and a measure (count of records, or sum, avg, min, or max of a numeric field). Charts add a Group by field; grouping by a date lets you bucket By month, quarter, or year. A KPI can set an optional Trend by date field to draw its sparkline and change figure.

While you edit, tiles preview against your real data without saving, so you see the result before you commit it.

Arrange the grid

The canvas is a 12-column grid. In edit mode, drag a tile by its header (or anywhere on a KPI) to move it, and drag the bottom-right corner to resize; tiles snap to the grid. Give the whole board an accent colour from the panel to tell your dashboards apart.

Save dashboard keeps the layout, titles, accent, date range, and every widget's data connection. Cancel discards everything since you started editing — nothing is written until you save.

Generate with AI

In edit mode, click Generate with AI, describe what you want to see — "revenue and pipeline health, plus a recent-activity feed" — and RowFold lays out a set of widgets wired to your real tables and reports. Without an Anthropic key configured it still builds a sensible starter layout from your workspace's tables. Generating replaces the current layout, so use Cancel to undo it if you don't like the result.

The AI summary and activity feed

The AI summary widget writes a few grounded highlights about your workspace — what's up, what's at risk — and flags an anomaly when the numbers suggest one. When AI isn't configured it falls back to a plain heuristic summary, clearly labelled as such. The Activity feed lists the most recent record changes across the workspace, each dot coloured by its table.

Filter by date range

The Range control at the top of a board — This quarter, This month, Last 30 days, Year to date, or All time — narrows the widgets that are built on a date, such as a chart grouped by a date field or a KPI with a trend date. Widgets without a date dimension are unaffected, so the range never invents a filter that can't apply.

Share a dashboard and set a home

Click Share to control who sees a board. Set its visibility to everyone in the workspace or only people you invite, invite teammates by email as Can view or Can edit, and change or remove access per person. The owner and workspace admins always keep full control.

Turn on Workspace Home to make a board the one everyone in the workspace is pointed to — only one board per workspace can be the home, so setting a new one clears the last.

Structure & schema
Structure & schema

Tables & field types

Tables are the building blocks of your app — customers, projects, invoices, or anything your team tracks. This article covers creating a table (blank, from a template type, or with AI) and designing its fields: every field type, how to configure choices and cross-table connections, and what really happens when you delete a field.

Create a table

On the Tables page, click New table (in an empty workspace it reads Create first table). Give it a Table name and pick a Template typeCustom starts blank, while every other type comes pre-built with its typical fields. Click Create and add fields → and you land straight in the field editor.

Only workspace Admins can create tables. If you don't see the buttons, ask an Admin of your workspace.

Start from a template type

Each template type pre-builds the fields that kind of table usually needs, so you're editing a working table instead of a blank one:

  • Customer — Email, Phone, Status (Lead / Active / Inactive), Notes.
  • Project — Status (Planned / Active / Blocked / Complete), Start Date, Due Date, Budget.
  • Task — Status (Todo / In Progress / Blocked / Done), Priority (Low / Medium / High / Urgent), Due Date, Done.
  • Asset — Serial, Status (In Service / Maintenance / Retired), Acquired, Value.
  • Event — Start (required), End, Status (Scheduled / Confirmed / Completed / Cancelled), Notes.
  • Invoice — Amount (required), Issued, Due, Status (Draft / Sent / Paid / Overdue).
  • Document — URL, Type (Contract / Proposal / Spec / Report / Other), Status (Draft / Review / Final).

Template fields are ordinary fields — delete them or add more alongside them freely afterwards. The type itself is chosen at creation and can't be switched later.

Build with AI

Click Build with AI to describe what you're tracking in plain words — the AI designs the tables, fields, and the relations between them, and you review the plan before anything is created. Click ✦ Design my schema or press Ctrl/⌘ + Enter to generate the plan.

On the plan screen, click ↻ Redesign to try a different description, or approve the plan to create the tables — RowFold then opens the Schema graph so you can see the new tables and their connections.

Like New table, this is available to workspace Admins, and you need a workspace open first.

Add fields

Open the field editor from a table card's Fields button, or from the grid via Edit fields. In the Add field panel, type a Name — RowFold generates the field's key from it automatically, and once the field is saved you can read that key in the API key column. Pick a Type, tick Required on forms if every record needs a value (required fields show a * in the list), then click Add field.

Fields appear in the grid in the order you add them — there is no drag-to-reorder, so add them in the order you want your columns. Every record also has a built-in display name, shown in the grid's Record column, so you never need to add a name field yourself.

When you're done, Open grid view takes you to your data.

Field types at a glance

  • Text — a short, single line of text.
  • LongText — longer free-form notes.
  • Number — a plain number.
  • Currency — a money amount, displayed with money formatting.
  • Date — a calendar date, displayed in your date format.
  • Boolean — a yes/no value, shown as a checkmark when on.
  • Select — one choice from a list you define in Options (comma-separated), shown as a chip.
  • MultiSelect — several choices from your Options list, shown as multiple chips.
  • Email — an email address, edited with an email-style input.
  • Url — a web link.
  • Phone — a phone number.
  • Relation — links a record to one or more records in another table (see the next section).
  • Lookup — shows a value pulled from the record a Relation points to.
  • Rollup — aggregates values from records in another table that link back to this one.
  • Percent — a 0–100 value, drawn with a small progress bar in the grid.
  • Rating — a star rating out of five.
  • Progress — a number for tracking completion, shown as a plain value.
  • People — an owner or assignee, entered as a name.

Connect tables with Relation, Lookup, and Rollup

Relation fields link to other tables. Lookup fields pull a value from a linked record. Rollup fields aggregate values from records that link to this one.

  • Relation — choose a Related table from the other tables in your workspace. In the grid, each link renders as a chip you can click to peek at the linked record.
  • Lookup — pick Follow which Relation field on this table? from the dropdown, then answer Pull which field key from the target? with the target field's key (for example email or amount).
  • Rollup — answer Aggregate records from which table?, type the key of that table's Relation field pointing back here, choose an Aggregation (Sum, Count, Average, Min, or Max), and fill in the Numeric field key on source table — not needed for Count.

The config forms appear automatically when you pick one of these types in the Type dropdown. Lookups can only follow a Relation field that already exists on the table, so add the Relation first.

Delete a field

Click the × at the end of a field's row and confirm Delete this field?. The column disappears from the grid and forms right away, but your records are untouched — the values that were stored under that field are hidden, not erased.

Because values are kept, adding a new field later with the identical key brings the old data back into view. New fields are added at the end of the column order, so deleting and re-adding a field also moves it last.

Table emoji and accent color

Every table gets an emoji and an accent color automatically from its template type: Customer 🧑 mint, Project 📁 violet, Task ✅ amber, Asset 📦 sky, Event 📅 rose, Invoice 💸 coral, Document 📄 ink, and Custom 🧱 violet.

They appear on the table's card, at the top of the grid, and in accents like the fill of Percent bars. A table without an emoji shows the first letter of its name instead.

Name tables and fields so they read like English

Names are the one thing in a workspace that's hard to change later — every report, rollup, and AI prompt refers to your tables and fields by name, so a clean name keeps everything downstream clean. Four rules keep them honest:

  • Tables are plural nouns. Customers, Deals, Bookings — so one record reads naturally as "a Customer."
  • Fields are descriptive singular phrases. Just Email, not cust_email — the table already supplies the scope.
  • No abbreviations. Spell it out: Expected close, not Exp Cls. It saves more time than it costs.
  • Relation fields name the other side, not the action. The field on Deals that points at Companies is simply Company — not company_id or linked_company.

The payoff is readability: "Sum of Amount across Deals where Stage is Closed Won" is a sentence you can trust; SUM(deal_amt) WHERE stg = 'CW' is a guess at meaning. Watch for names that signal a deeper problem — Status1 / Status2 usually wants two real names like Stage and Health, and a Misc or Other field is often a sign you need a new table or to split an existing one.

Know when to split a table

A table starts as one concept; as it grows you'll feel one of three signs that it's really two concepts wearing one costume. Splitting early is cheap — splitting late is painful.

  • Half the fields are empty for half the rows. If Tasks has renewal_amount and contract_term filled in only for renewal rows, that's two things — split into Tasks and Renewals, with a relation between them if they belong together.
  • You keep filtering by one field. If you filter Contacts by type = "Customer" every single time, that field is doing a table's job — split into Customers and Leads, each with its own fields and relations.
  • Two distinct lifecycles. If some rows run "Open → In progress → Won → Lost" and others run "Draft → Submitted → Paid," they follow different state machines and belong in different tables, even when they share a few fields.

To split safely: create the new table with its unique fields, add a relation back to the original if they stay connected, move the rows with filter → Export CSV → import, update any reports that pointed at the old table, then soft-delete the moved rows (they wait in the Trash if you need them). And resist the urge when it isn't warranted — if two kinds of row share most fields and the same lifecycle, a Select field is plenty. The test: would you write different paragraphs about them?

Keyboard shortcuts

Ctrl/⌘Enter Generate the schema plan from your description Build with AI dialog
Structure & schema

Schema map & relationships

The schema map is a live diagram of every table in a workspace and the arrows connecting them, and it lets you create new relationships by dragging between tables. For ad-hoc, one-off links between two specific records, open a record's detail page and use Add a one-off link.

Read the schema map

Open Schema & relations in the left rail's Workspace section. Every table in the current workspace appears as a card showing its name, its record count, and each of its fields with the field's type. Click a card to jump straight to that table's records.

Arrows between cards are relationships. Each arrow carries a pill with the connection name and a count like ×12 — the number of live record-to-record links of that type. The toolbar above the map totals it up: how many tables, how many relationship types, and how many links overall.

The header's Tables button takes you to the table list. To connect two specific records that no relation field covers, open either record's detail page and use Add a one-off link.

Zoom and pan the map

Use the and + buttons in the map toolbar to zoom between 40% and 200%, and Fit to snap back to 100%. Drag any empty spot on the canvas to pan around a large schema.

Draw a relationship by dragging

Every table card has a small round + port on the right edge of its header. Press it and drag — a dashed line follows your cursor — then drop onto another table. The target table highlights as you hover over it.

A pop-over appears, titled with the two tables — Connect Clients → Projects, say. The name box is prefilled with the target table's name; change it if you like, then press Create relation. This adds a Relation field on the table you dragged from, pointing at the table you dropped on; from then on, you connect records by filling in that field on each record. Press Cancel or Esc to back out.

Link two specific records

Most connections are best expressed as Relation fields — defined once on a table and filled in per record. For a genuine one-off between two exact records that no relation field covers, open a record's detail page and use Add a one-off link.

Pick a Target record, give the link a Key (its connection name) and an optional Label, then press Add link. The new link appears under Manual links on that record, and the record it points at lists it under Related records — click either side to open the other.

Name the connection

The link's Key is its connection name — the label RowFold groups links by. The optional Label is a human-friendly note shown alongside the connection.

  • A Key that matches a Relation field on the starting record's table is rejected — you'll be told to set that field on the record instead, which keeps the one-off link from being wiped the next time the record saves.
  • Creating an identical link twice (same two records, same Key) quietly does nothing; no duplicate is stored.

See a record's links

A record's own detail page is where its links live: Manual links lists the one-off links you added from it, each with an × to remove it, and Related records gathers every record that links to this one — through a Relation field or a one-off link — grouped by table with counts. Click any chip on either side to open that record.

Choose links or Relation fields

Every link is a one-way arrow: it runs from a starting record to a linked record and carries a name. A record can sit on either end of any number of links, so one-to-many and many-to-many shapes both work.

Relation fields are the durable version: defined once on a table, filled in per record, and RowFold keeps the map's arrows in sync with their values. Lookup and Rollup fields — which pull or aggregate values across a relation — are added in a table's field editor, not on the schema map; the map just lists them on the table's card like any other field.

Preview multi-level records (concept)

The page at /MultiLevel is an interactive design concept for nested, multi-level records — a relation marked as owning its children so linked tables nest inside their parent. It is visible only to super admins (an app-operator allowlist), has no link in the rail, and everything on it is hard-coded sample data: edits are never saved, and the Submit → button on the form surface sends nothing.

Four numbered tabs show the same idea from different angles: Schema · composition (a field inspector with ownership modes Reference, Owns children, and Belongs to parent), Record panel · document (parent fields with owned children and grandchildren embedded inline, plus live rollup totals), Public form (LiveForm) (the same nesting as a fillable form with cross-level validation), and Ledger view (one row per parent, expandable to depth L0, L1, or L2).

A dropdown pill in the top bar switches between two demo datasets — Orders → Line items → Serials and Inspections → Rooms → Defects — and switching resets any edits. A floating Tweaks panel toggles Comfortable/Compact density and whether hidden conditional sections show as ghosted hints.

Keyboard shortcuts

Esc Close the Connect pop-over without creating the relation Schema map
Enter Create the relation from the pop-over's name box Schema map
Structure & schema

Subitems: records inside records

Some records only make sense inside another one — the line items on an order, the serial numbers on a line item, the checklist items on a task. Subitems let you build those rows directly inside the parent record instead of creating them separately and linking them up afterwards. This article covers turning a table into subitems, the editable grid you get on the parent, nesting several levels, and what happens when you delete.

Subitems vs. a plain relation

Both connect two tables, but they mean different things.

A plain Relation points at a record that exists on its own and gets reused — a customer, a part in your catalogue, a venue. You pick an existing one.

Subitems mean ownership: the child belongs to exactly one parent and is created inside it. You add them, you don't pick them. Delete the parent and they go too.

If you find yourself creating a record in one table just so you can link it from another, that relationship almost certainly wants to be subitems.

Turn a table into subitems

Do it from the parent — the way you'd describe it out loud (“an order has line items”).

  1. Open the parent table and choose Edit fields.
  2. In the Subitems panel, pick the child table.
  3. Press Make subitems of ….

RowFold adds the link on the child table pointing back at the parent (or reuses one that's already there). You never have to build the relation in reverse yourself.

Already have the relation on the child table? Open that table's field editor and press Make subitems on the relation row instead — nothing is recreated and no links are lost.

The grid on the parent record

Open any parent record and the subitems appear as a grid below its fields, with an Add… button. Rows are editable in place — click a cell, type, tab onward.

Computed columns ride along read-only, so a per-line lookup or rollup is visible while you work. The link back to the parent isn't shown as a column: it's always this record, so showing it would just be noise.

A relation column inside the grid (a line item's part number, say) gets a picker that searches the target table — and if what you need isn't there yet, type the name and choose Create to make it and link it without leaving the row.

Nesting several levels

Subitems nest. If serial numbers are subitems of line items, and line items are subitems of orders, then each line item row in the order gets an expander (▸). Open it and that line item's serial numbers appear, with their own Add button.

Levels load only when you expand them, so a long order stays fast. Nesting is capped at four levels deep — past that, open the row itself (↗) to keep going.

Totals from subitems

A Rollup on the parent summarises its subitems. An order total is a Rollup over Order Line Items, through the link back to the order, summing the amount field.

Because the rollup follows the same link the grid does, the number tracks whatever you type into the rows.

Deleting and restoring

Deleting a parent sends its subitems to the Trash with it, all the way down — an order takes its line items, and their serial numbers.

Restoring the parent from the Trash brings back the ones that went down with it. A subitem you had already deleted separately, before the parent, stays deleted — restoring a parent won't quietly resurrect things you meant to get rid of.

Letting AI find the hierarchy

When you describe a schema in Build with AI, it now marks the parent/child relationships itself — ask for orders with line items and serial numbers and you get the nesting, while shared things like a parts catalogue stay ordinary relations. The preview labels them inside … so you can see the shape before anything is created.

For a workspace you've already built, open Schema and press Suggest hierarchy. It reviews the relations you have, proposes the ones that look like ownership with a reason for each, and applies only the ones you tick.

Keyboard shortcuts

Enter Commit the cell you're editing Subitems grid
Esc Discard the edit and restore the previous value Subitems grid
Automate & connect
Automate & connect

Automations: when this happens, do that

Automations watch your data and act on it: when a record is created, updated, deleted, enters a matching state, or on a schedule, they run steps — update fields, create records, send emails, call webhooks, or generate text with AI. Every run is logged with a per-step breakdown.

Pick a trigger

Open Automations in the sidebar and press New automation. Choose when it fires: a record is created, updated (optionally only when specific fields change), deleted, matches conditions, or on a schedule.

Matches conditions is the “status becomes Done” trigger: it fires only when a record enters the matching state — editing a record that already matches won't re-fire it.

Schedules run every N minutes (5 minimum), daily, or weekly at a UTC time. With a table chosen, the schedule runs once per record matching your conditions (up to 100 per fire); without one it runs once per fire.

Add conditions

Conditions narrow any trigger: field equals / contains / is empty / greater than…, matched all or any. Numbers and dates compare properly (“due date less than 2026-08-01” works on Date fields). Use Name (display name) to test the record's name.

Stack the steps

Steps run top to bottom; if one fails, the rest are skipped and the run is marked accordingly. Five actions are available: Update the record (set fields on the trigger record), Create a record (in any table of the workspace), Send an email (up to 10 recipients), Call a webhook (POST JSON to your URL), and Generate with AI (write model output into a field).

Every text box accepts template tokens that render per run: {{record.name}}, {{record.id}}, {{record.url}}, and {{record.<field_key>}} for any field, plus {{table.name}}, {{workspace.name}}, {{trigger.summary}}, {{now}}, and {{today}}. Unknown tokens render as empty text, and field keys are the same slugs the API uses.

Watch it run

Run history shows every execution with status (Succeeded, Failed, Partly failed, Skipped), duration, the triggering record, and each step's result. Use Run now in the editor to test against the table's newest record. Changes made by automations appear in the audit log as Automation · its-name.

Chains are guarded: an automation whose changes trigger another automation works (to 3 levels deep), then the loop guard stops the chain and logs a Skipped run explaining why. Run history is kept for 90 days.

Update a linked record, and do arithmetic

An Update the record step doesn't have to change the record that triggered it. Which record to update also lists the relations on that table, so you can follow one and write to what it points at — “when a dispatch is created, update the linked part”.

Each assignment also picks an operation: Set to, Increase by or Decrease by. For the last two the value is the amount, and it can be a token — {{record.qty}} — so a dispatch of three units takes three off stock.

That combination is what lets automations do real inventory work: decrement on hand when something ships, add it back on a return, roll a counter forward.

Increases and decreases are applied by the database in a single operation, so two runs firing at the same time can't both read the same starting number and overwrite each other. Stock stays correct under concurrent dispatches.

Tick Never let it go below zero and a decrease that would go negative writes nothing and fails the step instead — you get a failed run to look at rather than a quietly negative balance.

Automate & connect

The REST API, API clients, and webhooks

The Developers page manages workspace-scoped API clients for the REST API (/api/v1) and outbound webhooks that push record changes to your systems. Clients exchange an id + secret for a short-lived access token. Full endpoint reference with curl examples lives at /Developers/Docs.

Create an API client

Only workspace Admins can create clients. On Developers, name the client, choose when it expires (30 / 90 / 365 days or never), and pick its scopes — read (every GET: tables, records, audit), write (create, update, delete, and restore records), and schema (create tables and fields, and manage webhooks) — then press Create client.

You get a public Client ID (rfc_…, safe to share) and a client secret (rfsk_…) shown once — copy the secret immediately, because RowFold stores only a hash of it and can never display it again. The client is your durable credential; it never rides on API calls. Instead, exchange it for a short-lived access token:

curl -X POST https://YOUR-HOST/api/v1/auth/token -H "Content-Type: application/json" -d '{"clientId":"rfc_…","clientSecret":"rfsk_…"}'

That returns an accessToken (a signed JWT) with expiresIn seconds — about an hour. Send it as Authorization: Bearer <accessToken> (an X-Api-Key header works too) on every other call, and exchange again when it expires. A client acts on its one workspace with admin-grade access, so treat the secret like a password — keep it server-side and never ship it in client code. Revoke a client from the Developers page at any time; it then mints no new tokens, and any it already issued stop working within the hour.

Call the API

Every request goes to /api/v1 over HTTPS, and every response is JSON. After exchanging your client for an access token, confirm it with GET /api/v1/meta, which echoes the workspace it opens, its scopes, and its expiry. A first real call — list your tables and their field keys — looks like this:

curl https://YOUR-HOST/api/v1/tables -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Conventions hold everywhere: JSON is camelCase in and out, timestamps are UTC ISO-8601 (their field names end in Utc), and record values are keyed by field key — the stable slug listed by GET /tables, with Relation values as arrays of record ids. Errors always use one envelope, { "error": { "code", "message", "details" } }, with a matching status: 400 validation (details names the fields), 401 a missing, invalid, or expired access token, 402 the workspace's trial has ended, 403 the token lacks the required scope, 404 not found in this workspace, and 429 rate limited. Each access token may make 300 requests per minute (a sliding window); over that returns 429 with a Retry-After header. The token-exchange endpoint has its own tighter per-IP limit — cache your access token for its lifetime instead of exchanging on every call.

API writes behave exactly like edits made in the app: they run through the same pipeline, land in the audit log as API · your-client-name, and fire your automations and webhooks. Deletes are soft — DELETE moves a record to the Trash, and restore brings it back.

Open the interactive API reference

Open the API reference at /Developers/Docs — the complete, per-endpoint reference and a live console. Enter a client ID and secret to authorize (it exchanges them for an access token in-browser) and every endpoint gains a Try it runner that calls your own workspace, next to copy-ready samples in cURL, JavaScript, and Python. Path fields like tableId autocomplete from your workspace once you authorize; read-only calls are marked safe to run and writes are flagged because they act on real data. It is the canonical place for the exact parameters, request body, and response of every endpoint — start there whenever this overview isn't specific enough.

What you can call

The API reaches everything in a workspace. Endpoints, with the scope each needs:

  • MetaGET /meta (any scope): the workspace a token opens, its scopes, and expiry.
  • TablesGET /tables (read) lists every table with its fields and field keys; POST /tables (schema) creates a table and optional starting fields; PATCH /tables/{tableId} (schema) renames one (its slug and field keys stay stable).
  • FieldsPOST /tables/{tableId}/fields (schema) adds a field; PATCH /fields/{fieldId} (schema) renames a field or edits a Select/MultiSelect's options. A field's key never changes; Relation fields need a relatedTableId, and computed Lookup and Rollup fields can't be created through the API.
  • RecordsGET /tables/{tableId}/records (read) lists them with paging, sorting, search, and filters; POST /tables/{tableId}/records (write) creates one or a batch; GET /records/{id} (read) retrieves a record plus its inbound and outbound links; PATCH /records/{id} (write) merges changes (send only what changes; null clears a field); DELETE /records/{id} (write) soft-deletes to the Trash; POST /records/{id}/restore (write) brings it back.
  • AuditGET /audit (read): the workspace audit log, newest first, including changes made through the API.
  • WebhooksGET /webhooks (schema) lists subscriptions with their secret and health; POST /webhooks (schema) creates one; PATCH /webhooks/{id} (schema) edits the URL, events, table scope, or pauses it with "enabled": false; POST /webhooks/{id}/rotate-secret (schema) issues a fresh signing secret; DELETE /webhooks/{id} (schema) removes it.

List, filter, and batch records

Listing records is the workhorse read. GET /tables/{tableId}/records takes pageSize (1–200, default 50) and offset; each response carries total and the next offset (null at the end). Add q to search the display name, and sort to order by createdAt, updatedAt, or displayName (prefix - for descending; the default is -updatedAt).

The filter parameter is a URL-encoded JSON array of {field, op, value} conditions, combined with match=all (default) or match=any. Operators: eq, neq, contains, not_contains, empty, not_empty, gt, gte, lt, lte; target the record name with the special field __displayName. Field-value filters scan up to 5,000 rows per request, and the response sets scannedCap when it hits that boundary.

Creating supports batches: send one record object, or { "records": [ … ] } for up to 50 at once. Pass an Idempotency-Key header and RowFold replays the first response for 24 hours if the same key and body arrive again — so a retried create never duplicates a record.

Receive webhook events

A webhook subscription POSTs each matching record change to your URL. Subscribe to any of record.created, record.updated, record.deleted, and record.restored, for all tables or a single one. Each delivery carries an X-RowFold-Event header, a unique X-RowFold-Delivery id, and an X-RowFold-Signature; update payloads include the record's previous values so your receiver can diff.

Verify every delivery. The signature header reads t=<timestamp>,v1=<hex>. Recompute an HMAC-SHA256 over timestamp + "." + rawBody using the hook's secret, compare it to v1 in constant time, and reject timestamps older than five minutes to stop replays — that proves the POST really came from RowFold. Answer with any 2xx within 10 seconds.

Deliveries run on a durable job queue that survives restarts and make up to 3 attempts — immediately, after ~30 seconds, then after ~5 minutes. A 4xx answer (other than 408/429) means your endpoint refused the payload and is not retried; a hook that fails 20 times in a row pauses itself. Every attempt — HTTP status, duration, error, and whether a retry is coming — is recorded under Recent webhook deliveries on the Developers page and kept for 30 days. Rotate the signing secret there (or with POST /webhooks/{id}/rotate-secret) and update your receiver before the next event fires; re-enabling a paused hook clears its failure counter.

Governance
Governance

People, roles & permissions

Manage who belongs to each workspace and what they can do there. Every member gets one of four roles as a baseline, and you can fine-tune access table by table and even field by field.

Understand the four roles

Every workspace member has exactly one role, which sets their default access to every table in that workspace:

  • Admin — full control. Views, creates, edits, and deletes records, and is the only role that can invite people, remove members, change roles, or set per-table and per-field overrides.
  • Editor — views, creates, edits, and deletes records. No member or permission management.
  • Contributor — views everything and creates new records, but cannot edit or delete existing ones.
  • Viewer — read-only. Useful for stakeholders who only need visibility.

Roles are set per workspace, so the same person can be an Admin in one workspace and a Viewer in another. Per-table overrides can raise or lower these defaults for individual tables.

See who has access

Open People & members in the left rail's Workspace section. Each member appears as a card showing their name, email, current role, and a short description of what that role allows. Your own card is tagged you.

Each card also shows a workspace count, such as In 3 workspaces — how many of your workspaces that person belongs to. Workspaces you are not a member of yourself are never counted.

Invite someone to the workspace

Scroll to Invite someone at the bottom of the People page — or press Invite person at the top of the Permissions page to get there. Choose a person under Person, pick a Role, and press + Invite.

The picker lists only people who already share a workspace with you and are not yet members here. When everyone you share a workspace with is already a member, the Invite someone section disappears. Inviting someone who is already a member changes nothing, so a double-submit is harmless.

Change a role or remove someone

On a member's card, pick a new role from the dropdown — it saves as soon as you choose. You can also change roles on the Permissions page, where each role button includes a reminder of what it allows.

Press Remove to take someone out of the workspace. You cannot change your own role or remove yourself; another Admin has to do that for you. Invitations, removals, and role changes made on the People page are recorded in the audit history.

Override access for a single table

Open Permissions, pick a person from the Members list, and find the Per-table overrides section. Each table has an override dropdown with five settings: Inherit from role, Full access, Read & create, Read only, and No access (hidden). Your selection saves the moment you make it.

Overrides work in both directions. Full access lets a Viewer create, edit, and delete in that one table, while No access (hidden) hides a table completely — even from an Editor. Choose Inherit from role to remove an override and fall back to the role's default.

The Effective column shows the result of role plus override as chips — View, Create, Edit, Delete, or Hidden — so you can confirm exactly what that person can do. Use Open → to jump into the table itself.

Hide or lock individual fields

Click a table's name in the overrides list to expand its fields. Each field has its own dropdown: Inherit, Read only, or Hidden. A Hidden field is invisible to that person and cannot be edited; a Read only field is visible but locked.

Field overrides only tighten access — if someone cannot edit the table, every field stays read-only for them regardless of the field setting. Setting a table to No access (hidden) hides all of its fields automatically. A chip next to the table name counts how many fields have overrides, so restricted fields are easy to spot later.

Governance

Audit log & Trash

See who changed what across your workspaces, and recover deleted records from the Trash. The audit log is your activity trail; the Trash is your safety net.

Know what gets audited

RowFold writes an audit entry for every meaningful change in a workspace:

  • Records — creating a record, editing a cell, and deleting records each write an entry naming the record and its table.
  • Schema — creating or renaming a table, adding or removing a field, tables built with AI, and tables created during an import all appear as Schema entries.
  • People — inviting someone, removing them, or changing their role is logged with the person's name; invitations and role changes record the role too. These entries appear under the Schema filter.
  • Workspaces — creating a workspace writes a Created entry that names the template it was built from.

Every entry captures when it happened, who did it, and a plain-language summary of the change.

Read and filter the audit log

Click Audit log in the rail to see activity for the current workspace, newest first. The chips across the top show a live count per action — click Created, Updated, Deleted, Schema, Restored, or Impersonated to focus on one kind of change, or All to clear the filter.

Each row shows When (in your local time, down to the second), the Action, What changed with the table and record it touched, and By — who did it. The page shows the 200 most recent entries that match your filter.

Send records to the Trash

Deleting a record never destroys it right away. Tick the checkboxes next to rows in the grid, then click Delete in the bar that appears and confirm — the records vanish from every view and report, but they move to the Trash instead of being erased.

Each deletion also writes a Deleted entry to the audit log, so you can always see who removed what.

Restore a record

Open the Trash to see deleted records from all your workspaces, most recently deleted first. Each row shows what the item is, where it lived (From), Deleted by, When, and an Auto-purge countdown.

Click ↶ Restore and the record returns everywhere it appeared before. Its links to other records come back with it — connections are kept intact while an item sits in the Trash. A confirmation banner tells you the restore worked.

Delete forever

To permanently remove a single item, click Delete forever on its row and confirm. This erases the record and its connections to other records, and it cannot be undone.

Empty trash purges everything in one go, also behind a confirmation. It only removes records from tables where you have delete permission — anything you can't delete stays in the Trash, and the banner tells you how many items were actually purged.

Watch the retention countdown

Every item in the Trash shows an Auto-purge countdown against a 30-day retention window. The days-left badge switches to a warning color once fewer than 7 days remain.

Restore anything you care about before its countdown runs out.

Who can do what

Anyone in a workspace can read its audit log and see its deleted records in the Trash — both pages only ever show workspaces you belong to.

Restoring and permanent deletion count as delete actions on the record's table. By default that means workspace Admins and Editors; Contributors and Viewers cannot restore or purge unless a per-table permission override grants them full access.

Account & settings
Account & settings

Settings & your account

Settings is where you shape how RowFold sees you and how it looks to you: your name and photo, how dates and money are formatted, interface preferences, notifications, data export, and account-level actions like transferring a workspace or deleting your account.

Open your settings

Click the icon beside your name at the bottom of the left rail — it shows Settings when you hover. Everything on this page belongs to your account, not to any one workspace: changes here follow you across every workspace you're a member of.

The page's side navigation jumps between cards: Profile, Formatting & locale, Preferences, Notifications, Security, Data export, and Danger zone.

Update your name and photo

Type a new name into Display name and click Save profile. Your name and initials update in the rail and everywhere teammates see you, immediately — no need to sign back in. The Email field is shown for reference and can't be edited here.

Click Upload image (or Change image if you already have a photo) to set a profile photo. It must be a PNG, JPG, WEBP, or GIF, 2 MB or smaller, and it appears right away. Until you upload one, RowFold shows your initials on a colored chip instead.

Choose how dates, numbers, and money look

The Formatting & locale card controls how dates, numbers, currencies, and times appear for you, everywhere in RowFold. Pick a Language & format, a Currency, and a Time zone, then click Save formatting.

Each menu starts on Auto — match this device. On Auto, no preference is stored: each device you use formats things using its own language and time-zone settings, and a hint under each menu shows what this device resolves to (for example en-US or Europe/London). Choose an explicit option and it follows you instead — every browser you sign in on formats the same way.

The Preview row shows a sample amount, date, and time that updates as you change the menus, so you can see exactly what you'll get before saving.

Tune preferences and notifications

Under Preferences, four switches shape the interface across the product: Show schema graph on every workspace home, Highlight relation fields in violet, Use plain-English labels (Summary not Rollup, Hops not Walks), and Enable beta features. Click Save preferences to apply.

Under Notifications, choose Email and In-app delivery separately for Mentions on records, Workspace digest (weekly), and Date reminders, then click Save notifications.

Sign in, stay signed in, sign out

You sign in with your Work email and Password. Keep me signed in is ticked by default and keeps you signed in on that browser for 30 days, renewing as long as you keep using RowFold; untick it and your session ends when you close the browser.

To sign out, click the icon beside the Settings icon at the bottom of the rail — it shows Sign out when you hover. You land back on the sign-in page.

Export your data, transfer a workspace, or delete your account

Under Data export, Full workspace JSON downloads the schema and every record across all your workspaces, and CSV per table downloads a zip with one CSV for every table you can access. Both work at any tier. A third tile, PostgreSQL dump, is shown as a Business-tier feature and isn't active here.

The Danger zone holds the irreversible actions. Transfer hands a workspace you administer to another member: they become the Admin and you stay on as an Editor. Delete account removes your profile, memberships, and permission overrides after you type your email to confirm — shared workspaces stay intact for their other members, and it cannot be undone.

Understand the "viewing as" banner

A dark banner across the top of every page reading You're viewing as … means this browser session is a super-admin signed in as another account, usually to help with a support question. Clicking Return to your account switches the session straight back to the admin's own account.

Impersonation is deliberately visible and safe: every start and stop is written to the audit log, the impersonated session never outlives the browser session, and deleting the account is blocked until the admin returns to their own account.

The Admin console (super-admins only)

Super-admins see an extra Admin entry in the rail, marked with a SUPER badge. It opens the Admin console: every account on this RowFold instance — name, email, workspace count, and join date — with a search box that matches name or email, and a super-admin badge on allowlisted accounts.

Clicking Log in as → starts impersonating that account after a confirmation prompt. You can't impersonate yourself or another super-admin. Super-admin status itself comes from a server-side allowlist set at deployment — no account can grant it from inside the app.