> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.netnet.app/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Importing Contacts from CSV or Excel: Step by Step

**In brief:** Importing contacts is a three step wizard: upload a CSV or XLSX, map every column or skip it, then run and review the results.

**Applies to:** Anyone whose role includes importing contacts.

**See also:** Companies, People, and Individuals: Contact Records explains why email is the field everything matches on, and Adding and Editing Contacts (Including Quick Add) is how you fix whatever the file got wrong.

**Importing contacts is a three step wizard. Upload a CSV or XLSX, map your columns to Net Net fields, then run it. Mapping is manual by design, so it takes a few minutes rather than a few seconds, and what you get at the end is a clean directory instead of a mess you spend a month untangling. Email is the field everything hangs on, because email is how Net Net matches a row to a Person.**

Start from the **import** button in the Contacts header. The rest of that header is covered in [Navigating Contacts: Grouped View, Search, and Select Mode](https://help.netnet.app/en-us/article/navigating-contacts-grouped-view-search-and-select-mode-mlsksa/).

# Step 1: Upload

Drag a file onto the drop zone, or click **Choose file**.

Accepted formats are **CSV** and **XLSX**. If you pick something else, the error appears right there and nothing advances.

Underneath the drop zone are three links worth knowing about:

- **Download XLS template**
- **Download CSV template**
- **View past uploads**

| If you are exporting from another tool and have any choice about the column layout, download one of the templates first and match it. Mapping a file that already uses Net Net's field names takes a fraction of the time.

There is no cancel button on this step. Nothing has happened yet, so you can simply navigate away.

# Step 2: Map fields

This is the step that matters, and the one that takes the time.

The screen is two panels. On the left, every column from your spreadsheet. On the right, the mapping workspace for whichever column you have selected.

## Reading the left panel

Each source column shows its name and a badge:

- **Mapped**, pointed at a Net Net field
- **Skipped**, deliberately ignored
- **Needs attention**, not yet decided

Above the list, three summary chips count how many columns are in each state.

Most columns start as **Needs attention**, and that is intentional rather than unhelpful. Automatic mapping guesses, and a guess that silently puts mobile numbers into an office phone field is worse than no guess at all. Net Net asks you instead.

## Mapping a column

Click a column on the left and the right panel opens for it.

- **Skip this column** ignores it entirely. Use it for the internal reference numbers and legacy junk that every export carries.
- **Person** and **Company** tabs choose which entity the column belongs to. Which fields each of them carries is set out in [Companies, People, and Individuals: Contact Records](https://help.netnet.app/en-us/article/companies-people-and-individuals-contact-records-1piobx5/).
- **Search Net Net fields** narrows the list when you know what you are looking for.
- **Field cards** are what you click to make the mapping. Required fields are marked.

Work down the list until nothing is left in **Needs attention**.

||| Email is required for People, and it is not optional in the way other fields are. Email is what the import matches a row against. Without it, Net Net has no way to tell whether row 200 is a new person or the same person from row 12 with a different phone number.

## The overwrite rule

There is exactly one overwrite control, and it is the checkbox labeled **Overwrite existing values**.

Here is the rule it governs. **When a row's email matches a Person already in your workspace, that Person is updated rather than duplicated.** What happens to their existing details depends on the checkbox:

- **Overwrite on.** Imported values replace what is already there.
- **Overwrite off.** Imported values only fill fields that are currently empty. Existing values are left alone.

|| Off is the safer default when you are importing a partial export, because a spreadsheet with blank title columns will not wipe the titles you already have. On is the right choice when the spreadsheet is the newer, more accurate source and you want it to win.

## Running it

The **Import** button stays unavailable until **Needs attention** reaches zero. Every column has to be mapped or explicitly skipped.

This gate exists so that no column ever ends up quietly ignored because nobody noticed it. A skipped column is a decision. An unmapped one is an accident.

Step 2 has a cancel button, and it asks you to confirm, because leaving discards the mapping work you just did.

# Step 3: Results

The results screen tells you what happened:

- **Total rows processed**
- **People created** and **People updated**
- **Companies created** and **Companies updated**
- **Failed rows**

Alongside those, a **Download Exceptions** link gives you a file of the rows that could not be imported. That file is the useful one. Fix the problems in it, and re-import just that file rather than running the whole spreadsheet again.

Common reasons a row lands in exceptions: a missing email on a Person, an email that is not a valid address, or a value that does not fit the field it was mapped to. Fixing those one at a time afterwards is the same workflow as [Adding and Editing Contacts (Including Quick Add)](https://help.netnet.app/en-us/article/adding-and-editing-contacts-including-quick-add-1hbccmd/).

A single **Finished** button returns you to Contacts.

# Past Uploads

Every import run is kept. Reach the history from **View past uploads** on the upload step, and you get a table of your recent runs with the filename and the date, plus a download link for that run's exceptions.

That means you can come back to an import from last Tuesday, pull its exceptions file, and work through it without re-uploading anything.

## Import sessions do not stick

Starting an import always starts fresh. No remembered file, no remembered mappings, no leftover overwrite setting from last time. A session resets when you enter Import from Contacts, when you cancel out of step 2, when you finish at step 3, and when you navigate away to another part of Net Net.

This is deliberate. Half-finished import state that silently persists is how people accidentally run someone else's mapping against their own file.

# Frequently Asked Questions

###### What file formats can I import?

**CSV and XLSX.** Anything else is rejected at the upload step with an inline error. Templates for both formats are available on that same screen, and matching one of them makes the mapping step considerably faster.

###### Why do I have to map columns manually?

**Because a wrong automatic guess is worse than no guess.** Silently mapping mobile numbers into an office phone field produces a directory that looks fine and is quietly wrong. Net Net shows most columns as Needs attention and asks you to decide.

###### What happens if a person in my file already exists in Net Net?

**They are updated, not duplicated, matched on email.** Whether their existing details are replaced depends on the Overwrite existing values checkbox: on means imported values win, off means imported values only fill fields that are currently empty.

###### Is email required in the import?

**Yes, for People.** Email is what the import matches on, so a row without one cannot be reconciled against your existing contacts. Rows missing an email land in the exceptions file.

###### Why is the Import button unavailable?

**Because at least one column is still marked Needs attention.** Every column has to be either mapped to a field or explicitly skipped before the import can run. That gate is what stops a column being ignored by accident.

###### Some rows did not import. How do I find out why?

**Use the Download Exceptions link on the results screen.** It gives you a file of exactly the rows that failed. Fix them there and re-import that file on its own rather than running the whole spreadsheet again.

###### Can I get the exceptions file from an older import?

**Yes. Past Uploads keeps your import history.** Open it from View past uploads on the upload step, find the run by filename and date, and download its exceptions from there. Nothing needs to be re-uploaded.

###### I started an import and left. Will it remember where I was?

**No, and that is on purpose.** Import sessions reset when you cancel, finish, or navigate away, so you always start from a clean upload. Persisting a half-finished mapping is how the wrong mapping gets run against the wrong file.

# Related articles

Mapping goes faster when you already know what Net Net expects, so [Companies, People, and Individuals: Contact Records](https://help.netnet.app/en-us/article/companies-people-and-individuals-contact-records-1piobx5/) is worth reading first, particularly the part about email being the identity anchor. After a run, [Navigating Contacts: Grouped View, Search, and Select Mode](https://help.netnet.app/en-us/article/navigating-contacts-grouped-view-search-and-select-mode-mlsksa/) is how you check the result, and [Adding and Editing Contacts (Including Quick Add)](https://help.netnet.app/en-us/article/adding-and-editing-contacts-including-quick-add-1hbccmd/) is how you patch up anything the file got wrong. If an import brought in rows you did not want, [Deactivating vs Deleting Contacts (and Why Delete Is Final)](https://help.netnet.app/en-us/article/deactivating-vs-deleting-contacts-and-why-delete-is-final-dsmt5o/) covers cleaning them out safely.

<!-- canonical: https://help.netnet.app/en-us/article/importing-contacts-from-csv-or-excel-step-by-step-1g6pzq4/ -->