Import & export
From a form you can export its records to Excel, CSV or JSON, and import records back in. Both are scoped to the current form, and an export is named after the form with _export appended (e.g. Invoices_export).
The best way to import is to start from an export. Because the workbook you uploaded only defines the app's structure (its values aren't imported), the reliable way to load data is to match the export file's layout exactly. Export the form first — even with no records — to get a file with the correct column headers (including the
Record ID column and any line-item columns). Fill in your rows, keep the same columns in the same order, then import.- Import updates and adds. Rows that match an existing record update it; unmatched rows are created.
- Upsert by key: if a form defines
keyfields, importing updates existing records that match those key values. Without keys, theRecord IDcolumn controls update-vs-create. - Auto fields are system-filled on import: a value in an
autocolumn is only ever used to match an existing record for update — a new row always gets a freshly assigned value (sequence number orulid/nanoid), even if the cell carries one. Leave theautocolumn blank for the rows you want created. - Masked values aren't re-imported: exports show sensitive fields as
••••••; re-importing that file leaves the stored value untouched (a masked cell means “unchanged”), so you never overwrite real data with bullets. - After every import you get a summary: total rows, how many were created, updated or skipped (blank or unrecognised rows), and how many had errors — with each failing row listed so you can fix it and import again. Line items are tallied separately as imported vs. skipped, and nothing is silently dropped.
- Master data is included too: an Excel export — and the workspace backup — carries a sheet for each lookup / master-data table with its current values, so re-importing the whole app (or restoring a backup) brings your Master Data Maintenance edits back. Sensitive master-data columns mask like records (
••••••unless you include sensitive data), and a masked cell never overwrites a stored value.