Browse documentation

Add, edit & import records

Get records into a data object and keep them up to date.

Once a data object exists, you fill it with records (its rows). You can add and edit them by hand, or import many at once from a CSV. This page covers all three.

Add a record

  1. Open the data object to see its record grid.
  2. Click New Record at the top right of the grid toolbar.
  3. Fill in the fields in the dialog, then click the Create button (it's labelled with the object's name, for example Create Counterparty).

The dialog is titled New followed by the object's name and shows one field per attribute, each with the input that fits its type: a text box for text, a number box for numbers, a calendar for dates, a TRUE / FALSE picker for booleans, and a searchable record picker for relationship and option attributes (select, status, priority, and the like). Formula attributes aren't shown, since they're computed, and the built-in system fields (the id and the created and updated timestamps) are filled in for you.

You can submit with the Create button or by pressing Enter, and dismiss the dialog with Cancel or Esc. When the record saves, the dialog closes and the new row appears in the grid.

The grid toolbar's top right, with the Import / Export button and the New Record button.
New Record sits at the top right of the grid toolbar.

Edit records inline

For small changes you don't need the form; edit values straight in the grid.

  • Start editing with a single click on a cell. The editor matches the attribute type: type into text and number cells, pick a day from the calendar on date cells, choose TRUE or FALSE on booleans, and search the record picker on relationship and option cells. File cells open a file picker.
  • Move around with the usual grid keys. Enter or Tab commits the cell and moves to the next one, Esc cancels the edit you're in, and Ctrl+Z / Ctrl+Y undo and redo your edits.
  • Read-only cells appear in grey and can't be edited: formula columns (computed for you), the system fields such as the id and timestamps, and every cell on an archived row.

Inline edits are not saved as you go. Your changes are held locally, and a Save changes button and a Discard changes button appear while any edit is pending. Click Save changes (or press ⌘S / Ctrl+S) to write them all at once, or Discard changes to roll them back. If a save is rejected, for example because a value breaks a uniqueness constraint, your edits are kept so you can correct them and save again.

A cell in the Domicile column in edit mode, outlined and ready for a new value, with other rows below.
Single-click a cell to edit it in place.

Work with records in bulk

To act on many records at once, select them with the checkboxes at the left of the grid. The header checkbox, Select all loaded records, selects everything currently loaded; if more rows match your filters, a prompt lets you Select all N matching your filters.

While records are selected, a bar shows N selected with actions on the right:

  • Archive hides the records from active views, and Restore brings archived ones back.
  • Delete removes them permanently. Before you confirm, the dialog previews the impact, including how many related records will be detached or also deleted. Deleting cannot be undone.

Use the × on the bar to clear the selection.

The selection bar reading 100 selected with a Select all 558 matching your filters link, above rows with ticked checkboxes.
Select records with the checkboxes, or select every record matching your filters.

Import a CSV into an existing object

To add many records at once, import a CSV from the object's record grid. This flow adds new records; it does not update existing ones by matching a key column.

Open the importer

  1. Open the data object to see its record grid.
  2. Click Import / Export in the toolbar, then switch to the Import tab.
  3. Under Import with Schema Matching, click Select File and choose a .csv file. Files are read as comma-separated, and the first row is always treated as the header.

Spark parses the file and opens the Import Data Preview, a three-step wizard: Map, Validate, then Import. As it opens, Spark also takes a first pass at matching your columns to the object's attributes by name.

The Import / Export popover on the Import tab, showing Import with Schema Matching and a Select File button.
Import / Export, on the Import tab: choose a CSV under Import with Schema Matching.

Step 1: Map columns to attributes

Each CSV column has a dropdown where you choose the attribute it should fill, or Skip to leave it out of the import.

  • Columns Spark matched by name are pre-filled and tagged Auto; the rest start blank and need a choice. A header badge tracks progress as Mapped, and an icon on each column shows whether it's mapped, skipped, or still undecided.
  • Only text, number, date, datetime, and boolean attributes can receive a column. Relationship, file, and formula attributes are listed but disabled, with the reason shown, because they are filled through links or computed automatically rather than imported.
  • To resolve the remaining columns quickly, click Map with AI (offered while any column is still undecided). It proposes an attribute for each leftover column, which you can then adjust.

You can't continue until every column is either mapped or skipped. Click Next, and Spark runs validation automatically.

Step 1 Map, with each CSV column above a dropdown to pick the target attribute, one dropdown open showing Skip and the attribute list.
Step 1, Map: point each CSV column at an attribute, or Skip it.

Step 2: Validate and fix

Spark validates every row against the object's attributes, checking value types (dates, numbers, booleans), lengths, and required fields. This runs on the server against the whole file, not just the rows shown in the preview.

Problems are surfaced in place:

  • An invalid cell turns red; hover it to read what's wrong. Each row gets a green or red marker, and header badges count how many rows are Validated and how many are still Unvalidated.
  • If the file can't be read at all, a This file cannot be imported box lists the reasons instead.

To fix issues without leaving the wizard:

  1. Click a red cell, edit the value, and press Enter. Edited cells stay highlighted until you re-check them.
  2. When you've made your edits, click Validate to re-run the checks. Corrected cells clear.
  3. If the real fix is a different mapping, click Back to return to Map, change the column, and validate again.

Use Show invalid rows only to focus on the rows that still need attention. Every row must be valid to move on; there's no option to skip bad rows, so keep fixing and re-validating until nothing is red and no edits are pending. Then click Next.

Step 2 Validate, with 6 Validated and 1 Unvalidated badges and a red cell reading NA with the tooltip Expected a whole number.
Step 2, Validate: invalid cells turn red with a reason; fix them and re-validate.

Step 3: Import

Review the final data, then click Import N Records (the button names the row count). Spark imports the file and, on success, closes the wizard, refreshes the grid, and reports how many records were imported (and how many were skipped, if any).

Large files are handled fully: the preview grid shows up to the first 5,000 rows and 100 columns for speed, but every row and matching column in the file is validated and imported. If you close the wizard mid-import (with its × or Esc) while you have mapping or edits in progress, Spark asks to Discard this import? so you don't lose the work by accident.

Other ways to get data in

  • Creating a brand-new object from a CSV: see Create a data object, where Extract attributes with AI builds the schema for you.
  • On a recurring schedule: pull files automatically with Set up SFTP.
  • In response to an event: fetch and load data with a workflow.

Where to go next