# Import customers from a CSV

Customers from your current CRM or a spreadsheet, in a few minutes, and undone in one click if it was the wrong file.

## The file

- One customer per row, the column names in the first row.
- Comma, semicolon or tab; UTF-8 or Excel's own encoding.
- Up to 5,000 rows and 2 MB. Split larger files.

## Steps

1. **Customers → Import a CSV** (owners and developers), choose the file.
2. **Say what each column is.** sumwerk guesses from the column names: name, email, company, country, account
   manager, tags, Stripe customer id, lead since, trial dates. Any other column becomes an attribute of its own,
   named after the column; "Leave out" skips it.
3. **Look at the first rows** as they will be, then **Import**.
4. **See what every row did:** new, updated, already as in the file, or left out with the reason. The left-out
   rows download as a CSV with their reason, to fix and import again.

## Who is who

A row with a **Stripe customer id** updates the customer with that Stripe customer; else a row with an **email**
sumwerk knows updates that customer; every other row is a new customer. A second row for the same customer in the
same file is left out. Rows without an email or a Stripe id become new customers each time the file is imported.
For a customer that came from Stripe, the import adds tags, dates, the account manager and attributes, and never
changes its name, email, company or country: Stripe keeps those.

Dates: `2026-10-08` or `08.10.2026`. `10/08/2026` could be either order and is left out with how to write it.

## Undo

**Undo this import** removes the customers it created, unless someone has worked with them since (people, notes,
tasks, emails, deals), and gives the customers it changed their old values back, field by field, unless a field
was changed again after the import. The page says what it kept and why.

## Rehearse it

Try the same file in a [sandbox](/docs/sandbox) first: test data only, nothing reaches live.
