---
title: Import errors and how to fix them
description: Every message the CSV import can show, what it means and how to fix it, plus why imported people stay Pending and why an import can seem stuck.
url: "https://hiveplugins.com/docs/hive-mail-import-errors/"
updated: "2026-10-28"
category: Hive Mail
---

# Import errors and how to fix them

Messages by wizard step. Steps: [How to import contacts from a CSV file](/docs/hive-mail-import-contacts-from-csv/).

## Choose a file

| Message | Fix |
| --- | --- |
| "Upload a CSV file (.csv, .tsv or .txt)." / "This does not look like a CSV text file." | Save the sheet as CSV (not `.xlsx`) and try again |
| "The file is empty or could not be read." / "The file has no contacts in it." | Check the file has rows below the header |
| "The file is too large (the limit is ...)." | Split it, or ask your host to raise `upload_max_filesize` (limit: the smaller of 100 MB and the server limit) |
| "The file has too many columns." | Over 200 columns: delete the ones you do not need |
| "The file could not be saved." | Ask your host to make `wp-content/uploads` writable |

Accented letters look wrong? Save the file as UTF-8.

## Match columns

| Message | Fix |
| --- | --- |
| "Choose which column holds the email address." | Set one column to **Email address** in **Import it as** |
| "Each field can be used for only one column." | Set the duplicate to **Don't import this column** |
| "Map either a full name or first and last name columns, not both." | Use **Full name** or **First name** and **Last name** |
| "A column is mapped to something that does not exist..." | A custom field was deleted: change that column |

If the first row is data, untick **The first row holds column names**.

## Preview

The **Preview** card appears by itself (**Refresh preview** runs it again). Its boxes are **New contacts**, **Updated**, **Skipped** and **Rejected**.

| Note | Fix |
| --- | --- |
| "Missing email address." / "Enter a valid email address." | Fix the cell (typo, space, missing `@`) |
| "This address is on the suppression list." | It cannot be imported. See [Bounces, complaints and the suppression list](/docs/hive-mail-bounces-and-suppressions/) |
| "Use a two-letter country code, for example US." | Use the code, not the name |
| "Enter a number." / "Enter a date as YYYY-MM-DD." | The value does not fit the custom field type. See [Custom fields](/docs/hive-mail-custom-fields/) |
| Skipped: "This person asked not to be emailed..." | They unsubscribed earlier; only they can rejoin |
| Skipped: "The contact is in the trash. Restore it to update it." | Restore the contact first |

## Import

| Message | Fix |
| --- | --- |
| "The uploaded file is no longer available. Upload it again." | Unstarted uploads are removed after a day |
| "This import has already been started." | Open **History** |
| "One of the selected lists/tags no longer exists." | Choose again |
| "Import failed" | Read the red message in **History** |
| Amber "... keeps running in the background." | Click **Resume** |

When it finishes, click **Download the rows that were not imported** (columns `row`, `error` and your own), fix them and import that file.

## Pending people and stuck imports

- Without **These people have given me permission to email them**, new contacts are **Pending** and get no campaigns until they confirm. Use **Settings > Compliance > Send confirmation to pending contacts** ([Double opt-in](/docs/hive-mail-double-opt-in/)).
- An import never changes the status of an existing contact, and never resubscribes unsubscribed, bounced or complained people.
- A closed tab finishes only when the scheduler runs. Click **Run the scheduler now** in **Settings > Scheduler**, then check **Audience > Import / Export > History** (**Waiting**, **Running**, **Finished**, **Failed**, **Cancelled**). For a very large file, split it.

Next: [Contact statuses](/docs/hive-mail-contact-statuses/).
