Skip to content

Running an import

Upload a file, preview every row, then commit, safely.

An import goes from a CSV file to committed records in a few clear steps, with a preview in the middle so nothing changes until you are sure.

A data import, from CSV to committed records
Upload a CSV
Bring your data from another system as a CSV file.
↓ the importer reads the columns
Match the shape
The importer works out which kind of record the file holds and maps the columns to fields.
↓ run a dry run
Dry run
A preview shows what every row would do, row by row, without changing anything yet.
↓ commit when it looks right
Commit
The rows are imported. Historical records come in quietly, with no emails, dunning, or webhooks.

The steps

  1. Upload a CSV. Export your data from your current system as a CSV and bring it in.
  2. Match the shape. The importer looks at the columns and works out which kind of record the file holds, then maps each column to a field.
  3. Dry run. Before anything is written, a dry run shows what every row would do, row by row: what would be created, what would be updated, and what has a problem. Nothing has changed yet.
  4. Commit. When the preview looks right, you commit, and the rows are imported for real.

Let AI do the tedious matching

On the Grow plan and up, two buttons in the review step do the fiddly parts for you.

On the match-columns step, "Suggest columns with AI" looks at your headers and a sample of your rows and fills in the columns the importer could not match on its own. When your file writes values in a way we do not recognize, "Match values with AI" reads them and maps each one to the value our system stores. It handles more than status words: "On Hold" becomes paused and "CANX" becomes cancelled, "Auto" becomes yes, "US Dollar" becomes USD, "Deutschland" becomes DE, and "Net 30" becomes 30. When it is not sure how a value should read, it leaves it for you to decide rather than guessing.

If a dry run has rows with problems, there is also a "Diagnose errors with AI" button. It groups the problem rows by what went wrong, explains each group in plain words, and when the same fix works for every row in a group it offers a one-click fix, such as filling in a missing currency with USD.

If you would rather not click through each step, "Set up with AI" does all of it at once: it matches the leftover columns, translates the values, and reads the dates. Then it opens with a short read of your file in plain English: what it is, how many rows are ready, and what still needs attention. It knows how records relate, so it can tell you things like "import your customers before these subscriptions" or point out an invoice whose currency does not match its customer.

When a value could mean more than one thing and the assistant is not sure, it does not guess. It shows a short "A few questions" card and asks you, for example which currency a bare "$" means, with the likely choices to pick from. Your answer is applied to every matching row. After you import, "Summarize with AI" writes a short recap of what happened and points out anything worth a second look.

The AI only ever suggests. Nothing is imported, and you see the result and can change any match before you commit, exactly as with the manual flow. If the AI is not sure about something, it leaves it for you rather than guessing. On the Launch plan the buttons show what the feature does and how to turn it on.

Historical data comes in quietly

The whole point of importing history is to record what already happened, not to make it happen again. So imported records are brought in marked as historical. Bringing in a past invoice does not email the customer, does not start dunning, and does not fire webhooks. Your customers do not get a wave of messages about bills they settled months ago in your old system.

It is safe to try

Two things make an import safe to run:

  • The dry run changes nothing. You can preview a file, read the per-row results, fix the file, and preview again as many times as you need before committing.
  • A committed import can be rolled back. If a committed import turns out wrong, it can be undone.

Edge cases

  • The dry run is the review step. Read it before committing; it tells you exactly what each row will do.
  • Imported records are historical. They do not trigger the emails, dunning, or webhooks a live change would.
  • Order matters, and the importer knows it. Some records depend on others, covered on the next page.