# Import contacts

> Bring a CSV into Reply — file requirements, field mapping, the contact identifier, matched-records and no-email options, and the Imported, Updated, Skipped, and Import Errors results.

**Upload a CSV UTF-8 file of up to 10,000 rows in the People tab of a sequence or on the People page, map columns to Reply fields, choose the contact identifier that prevents duplicates, and set matched-records and no-email options. Reply then reports Imported, Updated, Skipped, and Import Errors counts, with a downloadable result file.**

_Status: Reviewed — human-edited, facts not yet confirmed against the product._

## Goal

CSV rows become deduplicated [contacts](/specifications/contacts) in a sequence or on a
[list](/specifications/lists), with a clear report of what was created, updated, skipped,
and rejected.

## Preconditions

A **CSV UTF-8** (comma-separated) file — xlsx or any other format will not work — with up
to 10,000 rows. The First Name field must not be empty, and numeric fields such as Phone
must contain only digits (no symbols, no spaces).

## Steps

1. Open the sequence's **People** tab and click **Import from CSV** (or **Add Contacts**). Imported prospects are added both to the sequence and to Reply's contact list. To import outside a sequence, run the import into a list from the People page.
2. Upload the file from your computer or drag it into the window.
3. Map the columns in the file to Reply fields; map extras to custom fields rather than dropping them. Columns whose name contains "linkedin" or "LI", or whose values look like LinkedIn URLs, are auto-mapped to the **LinkedIn profile** field — you can override the mapping from the dropdown.
4. Choose the contact identifier in the drop-down menu. A unique identifier (such as Email, Last Name, or Phone) becomes the distinguishing key for each contact and prevents duplicates; once it is chosen, other fields become optional.
5. Select the import options: the destination contact list; **Matched Records** — **Update Missing Fields** (write new CSV data into existing contacts) or **Skip** (leave existing contacts untouched); **Records Without Emails** — **Add Generated Emails** (a placeholder genmail.com address; these contacts are skipped for email sequences but work with SMS, WhatsApp, calls, and LinkedIn steps) or **Skip**; and optionally **Detect contact time zone automatically**, which uses city/state and country data and may extend the import by up to 30 minutes.
6. Start the import and keep working — a notification reports the results when it finishes.

> To add a single person instead, open the People page, click **New Contact**, choose
> **Create manually**, and fill in the fields — Email and First Name are mandatory.
> Accounts (companies) have their own CSV import under People → Accounts → **New account**,
> with the same 10,000-row cap and the Account name mandatory for mapping.

## Expected result

The import notification breaks down four statuses:

- **Imported** — new contacts added to your account.
- **Updated** — existing contacts whose profiles were updated.
- **Skipped** — duplicates the system removed during the import.
- **Import Errors** — rows that failed due to missing mandatory fields or incorrect formats (for example, symbols in the Phone field).

If the reason is unclear, download the full import result file and check the details.

## Verification

The list or sequence holds roughly the CSV row count minus skips and errors; spot-check a
few records for correct field mapping. Re-running the same import should report Updated or
Skipped rows, not new Imported ones — that is the
[deduplication rule](/behavior/contact-deduplication) working.

## What happens next

Not every imported contact necessarily lands in the sequence — contacts already in one of
your current sequences may stay out. To move all of them: import into a dedicated list,
open it, select **All in list**, and click **Move to sequence**; or filter the People page
by the Import File Name smart filter and move the results. Then
[launch the sequence](/how-to/launch-a-sequence) — enrollment runs its own checks per
[contact enrollment](/behavior/contact-enrollment).

## Common mistakes

- Uploading xlsx or another non-CSV format — only CSV UTF-8 imports.
- Leaving First Name empty or putting symbols in numeric fields — those rows become Import Errors.
- Expecting every CSV row in the sequence when some contacts already sit in other sequences — move them explicitly via a list or the Import File Name smart filter.

## Related

- [Contacts](/specifications/contacts) · [Lists](/specifications/lists)
- [Manage duplicate contacts](/how-to/manage-duplicates)
- [Contact deduplication](/behavior/contact-deduplication)
- [Build a prospect list](/workflows/build-a-prospect-list)

## Build with Reply

- REST API: [docs.reply.io](https://docs.reply.io/api-reference/introduction) — contact and import endpoints
- CLI: [agents.reply.io/cli](https://agents.reply.io/cli) — scripted imports
- Agent skills: [agents.reply.io/skills](https://agents.reply.io/skills) — import-prospects workflow
