# Why did my contacts import fail?

> Fix contact imports that fail or bring in fewer contacts than expected. Covers the 2,500-row limit, invalid emails, custom fields and audience caps.

This article helps when importing contacts from a CSV or Excel file shows an error, or finishes with fewer contacts than your file has.

## Symptoms

The **Import CSV** dialog in **Email Marketing → Contacts** shows a red banner on the preview step, such as:

- `A maximum of 2500 contacts can be imported per request.`
- `Contact #42 has an invalid email address.`
- `Unknown custom field key(s): …`
- `Pay as you go includes 10,000 subscribers per audience.`

Or **Continue** stays disabled with **You must map at least one column to the Email field.**

## Cause

Each import is checked as a whole. If one rule fails, nothing is imported:

- **More than 2,500 rows.** Each import accepts up to 2,500 contacts.
- **An invalid email address.** One malformed address fails the whole file. The number in the message counts contacts after empty rows are removed, so it can differ from the spreadsheet row number.
- **A custom field that doesn't exist.** Columns mapped to custom fields need those fields created first.
- **No Email column mapped.** Email is the only required field.
- **The audience would go over your plan's limit.** Pay as you go allows 10,000 subscribers per audience, Pro 50,000 and Business 250,000. The check counts every row in your file plus the audience's current subscribers.

Fewer contacts than expected usually means rows with an empty email cell. They're skipped without an error. Only the first sheet of an Excel file is read.

## Fix

1. **Split large files.** Break the file into parts of 2,500 rows or fewer and import them one after another.

2. **Clean the email column.** Remove spaces, trailing punctuation and multiple addresses in one cell. To find bad or risky addresses, run the list through [email verification](/docs/email-verification/lists/) first.

3. **Create custom fields first.** Add any missing fields in **Workspace → Settings** under **Custom fields**, then start the import again. See [Custom fields](/docs/contacts/custom-fields/).

4. **Check the column mapping.** If your file has a header row, keep **File has header** on so columns match by name. Map one column to **Email**, set unused columns to **Exclude**, and review the preview.

5. **Stay under the audience limit.** Import into a different audience, remove inactive subscribers, or upgrade your plan. See [Limits](/docs/limits/).

6. **Wait for processing.** Imports run in the background. When the dialog confirms "Contact import has been queued and will be processed shortly.", wait a minute and refresh the contacts list.

> **Imports resubscribe contacts:** Importing a contact into an audience they had unsubscribed from subscribes them again. Remove people who opted out from your file before you import it.

Contacts that already exist are updated instead of duplicated. Names are replaced only when the file has a value, and custom fields are merged. Read [Import and export contacts](/docs/contacts/import-export/) for the full guide, or use [Create a contact](/docs/api-reference/contacts/create/) to sync contacts from your app.

## Still stuck?

[Contact support](/contact/) or ask in [Discord](https://discord.emailit.com) with the error message and the first few rows of your file, with personal data removed.

---
Source: https://emailit.com/docs/kb/contacts-import-failed/
