Importing & Exporting
Bring data in from spreadsheets, other systems, or contact files — and get it back out as CSV or JSON. Imports are guided, resumable jobs: you can load a file today, finish the field mapping tomorrow, and nothing is written to your real data until you confirm.
Two ways to start an import
- From a table — open any list (for example Contacts) and choose Import into this table
from the toolbar. The target is already known, so the wizard jumps straight to matching your file's columns against that table's fields.
- The general import wizard — for bulk moves from another system, possibly into **several
tables at once**. A multi-sheet spreadsheet offers each sheet as its own target; a flat export that mixes, say, customer and order columns lets you split the fields across targets.

missing, ask your administrator — see Who Can See What.
What you can import
| Source | What the system reads |
|---|---|
| CSV | Delimited text; the first row becomes the column names. |
| Spreadsheet (XLSX) | A whole workbook; every sheet can feed a different table. |
| Contact file (VCF) | vCards; each card becomes one row, with multiple emails or phones kept together. |
| JSON | A list of records; nested values appear as dotted names like address.city. |
| API pull | Pulls records directly from another system's API. Save the connection details once as a source template and reuse it for future imports. |
Large files are streamed in the background, so even very big imports will not time out or fill up your browser.
Mapping: match your columns to fields
After loading, the wizard suggests a mapping for every source column — exact name matches, common synonyms (e-mail → Email, org → Organization), and mappings you saved from earlier imports. Every suggestion carries a confidence level so uncertain matches are highlighted for your review. Nothing is committed until you approve the mapping.

In the mapping grid you can:
- Change any target, or map a column to a custom field.
- Add a per-field transform: trim spaces, fix casing, parse dates, split multi-values, or apply a
value table (for example NY → New York).
- Mark a column ignored (it simply is not imported).
- Mark a target required — rows missing it are rejected with a per-row error.
- Flag one or more columns as a match key (see below).
- Save as template so your corrected mapping pre-fills next time.
silently dropped without your knowledge. With the right permission you can also have the wizard
auto-create custom fields for unmapped columns — it is off by default and always shows you the
exact list of fields it would create before doing anything.
Updating existing records (match keys)
Imports never silently overwrite your data. By default every row inserts a new record. If you flag a match key (for example Email), the run first detects rows that match existing records and pauses for your review. You choose a policy, and can override it row by row:
| Policy | What happens to a matched row |
|---|---|
| Update all matches | The existing record is updated with the imported values. |
| Skip | The existing record is left untouched; the row is not imported. |
| Insert as new | The match is ignored; a new record is created anyway. |
A row matching more than one existing record is flagged ambiguous, and you pick which record it should update — or skip it.
confirm-first rule applies to cross-table links matched by name: the system proposes, you decide.
Watching and resuming a job
Import runs execute in the background — you can close the browser and come back. The My imports view lists every job with its status, row counts, and errors:
- Resume a job you loaded but have not finished mapping.
- Watch progress live while a run is importing.
- Review per-row results when it finishes: what was inserted, updated, skipped, or failed and why.
- Re-run failed rows after fixing the cause, export failed rows for offline correction, or
delete the job.
When a run finishes you get a notification (see Notifications) telling you how many rows imported and how many failed.
Exporting
Open any list and press Export in the toolbar (visible only with export permission). In the export dialog you choose:
- Format — CSV or JSON.
- Scope — just the current page, or every record matching your current filter.
- Columns — tick exactly what you need, including export-only columns that are hidden in the
table view.

first — otherwise the file contains the old values. Very large exports may be capped by your
plan's export limit; narrow the filter if you hit it.