# How to import contacts from CSV or Excel

> Upload a CSV or Excel file in the WordPress plugin, map its columns to contact and custom fields, and review which contacts were created, updated or skipped.

Product: Kelune CRM Self-hosted (hosted by you). Page: https://kelunecrm.com/docs/wordpress/contacts/importing-contacts

Use the contact importer to move an existing audience into Kelune CRM from a `.csv`, `.xlsx`, or `.xls` file.

The import has three stages: **Upload File**, **Map Fields**, and **Result**.

## Prepare the file

Put column headings in the first row and one contact in each remaining row. Include an **Email** column because Kelune CRM uses the email address to match records.

Your file can include standard contact fields, custom fields, and comma-separated list or tag names.

| Example heading | Example value |
| --- | --- |
| `Email` | `ava.rahman@kelunecrm.test` |
| `First Name` | `Ava` |
| `Company` | `Kelune Studio` |
| `Lists` | `Newsletter Subscribers, Customers` |
| `Tags` | `Newsletter, Customer` |

> **Tip:**
>
> Remove blank rows, correct invalid email addresses, and use consistent headings before uploading. A smaller, clean test file is useful before a large import.

## Upload the file

1. Open **Kelune CRM → Contacts**.
2. Open the **More** menu and select **Import**.
3. Select or drop your CSV or Excel file into the upload area.
4. Continue to **Map Fields**.

![Import Contacts upload step for CSV and Excel files](https://kelunecrm.com/images/docs/wordpress/contacts/importing-contacts/upload-file.webp)

> **Note:**
>
> If **Import** is unavailable, your WordPress user may not have permission to import contacts. An administrator can review the role under **Kelune CRM → Settings → Roles & Permissions**.

## Map the columns

Each spreadsheet column appears beside a sample value and a **Maps To** selector. Review every suggested mapping and choose the Kelune CRM field that should receive the data.

![Import Contacts mapping step with five spreadsheet columns mapped](https://kelunecrm.com/images/docs/wordpress/contacts/importing-contacts/map-fields.webp)

Available destinations include:

- Email, name, company, and phone fields.
- Address, country, status, source, and lead score.
- Lists and tags using comma-separated names.
- Any custom fields already created in Kelune CRM.

Choose **Ignore Column** for data that should not be imported. The mapping screen shows the number of rows detected and how many columns are mapped.

> **Caution:**
>
> When an imported email already belongs to a contact, Kelune CRM updates that record. Check mapped columns carefully so the import does not replace useful information with unintended values.

## Run and review the import

Start the import after confirming the mappings. The **Result** step reports how many contacts were:

- **Created** because no matching email existed.
- **Updated** because the email matched an existing contact.
- **Skipped** because the row could not be imported.

When rows are skipped, review the row number, email address, and reported issue. Correct those rows in the source file, then import the corrected data again.

Lists and tags in the file are attached to the matching contacts. Names that do not yet exist can be created during the import.

> **Caution:**
>
> Import only contacts you are permitted to email. Imported contacts do not complete the public double opt-in flow automatically.
