Create a database in an app
- Open Data Sheets from the dashboard sidebar and choose the app the data belongs to. Databases are team + app scoped, so every database lives under exactly one app.
- Click New database. Give it a name and a slug — the slug is the stable handle and must be unique within the app (lowercase, hyphenated). Add an optional description.
- Click Create. You land in the database with an empty sheet list, ready to add your first sheet.
How many databases you can create per app is plan-limited (max_databases_per_app; -1 means unlimited).
Add sheets
- Click + Sheet (or the + on the sheet tab bar). A starter sheet with a couple of text columns is created.
- Rename the sheet by double-clicking its tab. The slug regenerates from the name on first save and can be edited later — it's the identifier the SDK, workflow tasks, and agent tools use, so pick something stable.
A database can hold up to the plan's max_data_sheets_per_database sheets (default ceiling 20 when no plan override applies).
Define columns
- Click + Column to add a column, then set its display name and type. Types include text, number, boolean, date / datetime / time, large text, JSON, select / multi-select (with a fixed option list), array (free-form tags), the string variants url / email / phone, the number variants currency / percent / rating, and a system-managed auto increment id. See Managing sheets, columns, and rows for what each type does.
- Each column has a
key(the field name code reads) derived from its name, and a displaynameyou can change without breaking the key. - Reorder columns by dragging the grip handle on a column header; the order is saved with the sheet. A sheet can hold up to 50 columns.
Add and import rows
- Click + Row to add an empty row and edit cells inline. Cell editors are type-aware; large text and JSON cells open a side editor. Edits auto-save.
- Import CSV to seed a sheet from a spreadsheet. Choose Append (add the CSV rows after the existing ones) or Replace (delete all current rows and insert the CSV — this clear is permanent). CSV headers match each column's
keyfirst, then its displayname; unknown headers are skipped. - Export CSV downloads the whole sheet with column keys as headers, so an export → edit → import round-trip is lossless.
Rows per sheet are plan-capped (max_data_sheet_rows). With the database created and sheets defined, link it from a playground (Using Data Sheets from a Playground), reference it from a workflow (Data Sheets in workflows), or attach it to an agent (Data Sheets in agents).