# Add and import customers

> Create a single customer record manually or bulk-import contacts from a CSV or Excel file.

Add contacts to your customer list one at a time from the dashboard, or bring in large sets with the import wizard. Both paths deduplicate by email — if a customer already exists, their record is updated rather than duplicated.

> **Plan** Customer limits vary by plan. Starter supports up to 1,000 contacts; Lite 2,500; Growth 10,000; Business 50,000; Enterprise is unlimited. See [Usage and limits](../billing/usage-and-limits).

## Add a single customer

1. Open **Customers** at `/business/:id/customers`.
2. Click **Add customer** in the top-right corner.
3. Enter the customer's **Email** (required), **First name**, **Last name**, and **Phone** (all optional except email).
4. Click **Add customer**.

The customer appears in the list immediately. If a record with that email already exists, Caramel updates the existing record and confirms with a "details were updated" message.

> **Note** Email is the unique key. You cannot create two customers with the same email address.

## Import customers in bulk

The import wizard accepts CSV files and Excel workbooks (.xlsx, .xls) up to 50 MB and 50,000 rows.

### Step 1 — Download the template

1. Open **Customers** and click **Import**.
2. On the first screen, click **Download CSV** or **Download XLSX** to get the template.
3. Fill in your data using the template's column headers. Do not rename or remove columns.

The template includes columns for email, first name, last name, phone, and any other supported customer fields.

> **Tip** Excel files are converted to CSV before upload. The first sheet in your workbook is used.

### Step 2 — Upload your file

1. Drop your filled file onto the upload area or click to browse.
2. Caramel parses the file client-side and shows a preview — no data is sent to the server yet.

If your file is missing required columns, a validation error lists exactly which columns are missing. Download the template again and recheck your headers.

### Step 3 — Review and choose a duplicate strategy

The preview shows:

- **Valid rows** — rows that will import successfully.
- **Invalid rows** — rows skipped because of missing or malformed data (for example, a blank email).
- **Duplicates in file** — rows whose email appears more than once within the file itself.

Choose how to handle contacts that already exist in Caramel:

| Option | What happens |
|---|---|
| **Update existing** | Overwrites the existing record with the new values from the file. |
| **Skip duplicates** | Leaves existing records unchanged; imports only net-new contacts. |
| **Update all fields** | Same as "Update existing." |
| **Reject duplicates** | Fails the entire import if any email already exists. |

The default is **Update existing**, which is safe for most re-uploads of the same contact list.

### Step 4 — Import

Click **Import N rows**. A progress bar tracks the import in real time. When it completes, a summary shows how many rows were inserted, updated, skipped, or failed.

<!-- screenshot: the import wizard done screen showing the inserted/updated/skipped/failed summary -->

> **Note** Failed rows are listed individually after the import finishes. Fix the data in your spreadsheet and re-import just the failed rows.

## Next steps

- [Customer profiles](customer-profiles)
- [Segments](segments)
- [Where form submissions go](../forms/where-submissions-go)
- [Usage and limits](../billing/usage-and-limits)
