> ## Documentation Index
> Fetch the complete documentation index at: https://docs.spott.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Import from CSV or Excel

> Bulk add candidates, contacts, and companies to Spott from a CSV or Excel file, and see exactly which columns you can map.

The import wizard lets you bulk add people to Spott, for example when migrating
from another system or uploading a sourcing list. Each row in your file becomes one
person. You can import **up to 1,000 records** per import, from **CSV or Excel
(.xlsx)** files.

## What you can import

When you upload a file, you choose what the rows represent:

| Option         | What it does                                                                          |
| -------------- | ------------------------------------------------------------------------------------- |
| **Candidates** | Imports names, emails, work history, education, and more as candidate records.        |
| **Contacts**   | Imports client contacts, their roles, and their companies.                            |
| **Any**        | Spott detects automatically whether each row is a candidate, a contact, or a company. |

<Note>
  **Yes, you can import contacts too.** The wizard is not candidate-only. Pick
  **Contacts** to bulk-load client contacts, or **Any** if your file mixes candidates,
  contacts, and companies.
</Note>

Companies do not need their own file. Whenever a row has a company on it, Spott
matches it to an existing company or creates a new company record, and links the
person to it.

Under **Actions** you can also **Add to list** or **Add to job**, which applies to
every record in the import.

<Frame>
  <img src="https://mintcdn.com/spott-docs/2FVG6qNbkCes1ggi/images/candidates/import-wizard-upload.webp?fit=max&auto=format&n=2FVG6qNbkCes1ggi&q=85&s=b993ac4b0ff6eac5b5d9d2b448dab1a6" alt="The import wizard upload step, with the Candidates, Contacts, and Any options" width="1022" height="663" data-path="images/candidates/import-wizard-upload.webp" />
</Frame>

## Start an import

<Steps>
  <Step title="Open the Candidates page">
    Navigate to **Candidates** from the main sidebar.
  </Step>

  <Step title="Open Import / Export">
    In the top right corner, click **Import / Export**, then select **Import from CSV**.
    This opens the import wizard. Admins can also reach it from **Settings > Import**.
  </Step>

  <Step title="Upload your file and pick a type">
    Select the CSV or Excel file from your computer, choose **Candidates**,
    **Contacts**, or **Any**, optionally add a List or Job, then click **Start Import**.
    Spott analyzes the file and prepares the mapping.
  </Step>
</Steps>

<Frame>
  <img src="https://mintcdn.com/spott-docs/p014P0_PfappR2TU/images/candidates/import-export-menu.webp?fit=max&auto=format&n=p014P0_PfappR2TU&q=85&s=bbe43506beee46fdee98fa10093348a7" alt="The Import / Export menu on the Candidates page" width="1600" height="956" data-path="images/candidates/import-export-menu.webp" />
</Frame>

## Map columns to Spott fields

Spott reads your column names and sample data and **suggests a mapping for each
column automatically**. Your headers do not have to match Spott's field names:
"Job Title" is recognized as Work Experience Title, "City" as Location. Review the
suggestions and adjust where needed. For each column you can:

* Accept the suggested Spott field
* Pick a different **Spott field** from the dropdown (use the search box at the top)
* **Skip the column** so it is not imported

Skipped and unmapped columns are ignored. Nothing else in the file is imported, so a
column only lands in Spott if it is mapped to one of the fields below.

<Frame>
  <img src="https://mintcdn.com/spott-docs/p014P0_PfappR2TU/images/candidates/import-wizard-mapping.webp?fit=max&auto=format&n=p014P0_PfappR2TU&q=85&s=fd69f9b38a962a8f1a7662038cb3ce9c" alt="The column mapping step with AI-suggested mappings" width="1600" height="871" data-path="images/candidates/import-wizard-mapping.webp" />
</Frame>

### Fields you can map to

These are the Spott fields available in the mapping dropdown. The list is complete:
if a column has no matching field below, it cannot be imported.

<Frame>
  <img src="https://mintcdn.com/spott-docs/2FVG6qNbkCes1ggi/images/candidates/import-wizard-field-picker.webp?fit=max&auto=format&n=2FVG6qNbkCes1ggi&q=85&s=5b56ac28f26bdf5a8e7d7cba03fdd051" alt="The Spott Field dropdown with the list of available fields" width="502" height="474" data-path="images/candidates/import-wizard-field-picker.webp" />
</Frame>

<Tabs>
  <Tab title="Person">
    | Spott field | Example value      |
    | ----------- | ------------------ |
    | First Name  | `Anna`             |
    | Last Name   | `Peeters`          |
    | Gender      | `Female`           |
    | Nationality | `Belgian`          |
    | Birth Date  | `1989-04-17`       |
    | Location    | `Antwerp, Belgium` |

    There is no Full Name field: split names into a **First Name** and a **Last Name**
    column. If your file only has a full name column, add the split columns before
    uploading and skip the combined one.
  </Tab>

  <Tab title="Work experience">
    | Spott field                 | Example value          |
    | --------------------------- | ---------------------- |
    | Work Experience Title       | `Finance Manager`      |
    | Work Experience Company     | `Acme`                 |
    | Work Experience Description | `Led a team of six...` |
    | Work Experience Location    | `Brussels`             |
    | Work Experience Start Date  | `2021-03-01`           |
    | Work Experience End Date    | `2024-09-30`           |

    One row creates **one** work experience entry. Leave the end date empty for the
    current role.
  </Tab>

  <Tab title="Education">
    | Spott field              | Example value         |
    | ------------------------ | --------------------- |
    | Education Degree         | `Master of Economics` |
    | Education Institution    | `KU Leuven`           |
    | Education Field of Study | `Economics`           |
    | Education Description    | `Thesis on...`        |
    | Education Grade          | `Cum laude`           |
    | Education Start Date     | `2007-09-01`          |
    | Education End Date       | `2011-06-30`          |

    One row creates **one** education entry.
  </Tab>

  <Tab title="Languages">
    | Spott field      | Example value |
    | ---------------- | ------------- |
    | Language         | `Dutch`       |
    | Language Fluency | `Native`      |
  </Tab>

  <Tab title="Contact details">
    | Spott field   | Example value                             |
    | ------------- | ----------------------------------------- |
    | Email Address | `anna.peeters@example.com`                |
    | Phone Number  | `+32 470 12 34 56`                        |
    | LinkedIn URL  | `https://www.linkedin.com/in/annapeeters` |

    These are the fields Spott deduplicates on, so include at least one of them.
  </Tab>

  <Tab title="Other">
    | Spott field | Example value                        |
    | ----------- | ------------------------------------ |
    | Note        | `Met at the Brussels finance meetup` |

    The note is added to the person's profile as a regular note.
  </Tab>
</Tabs>

<Note>
  **Custom fields cannot be mapped.** The dropdown only offers the standard fields
  listed above, so [custom fields](/docs/settings/customizing-candidate-profiles) your
  workspace has configured are not filled by an import. Set those on the records
  afterwards.
</Note>

<Note>
  A row holds a single work experience and a single education entry. To import a full
  career history, use a CV upload or the
  [Chrome extension](/docs/settings/chrome-extension) instead, or enrich the
  candidates after the import.
</Note>

### Example file

A file with these headers imports cleanly, without any manual remapping:

```csv candidates.csv theme={null}
First Name,Last Name,Email Address,Phone Number,LinkedIn URL,Job Title,Company,City,Degree,Institution
Anna,Peeters,anna.peeters@example.com,+32 470 12 34 56,https://www.linkedin.com/in/annapeeters,Finance Manager,Acme,Antwerp,Master of Economics,KU Leuven
Tom,Janssens,tom.janssens@example.com,+32 495 98 76 54,https://www.linkedin.com/in/tomjanssens,Controller,Globex,Ghent,Bachelor of Accountancy,Odisee
```

Spott maps `Job Title` to Work Experience Title, `Company` to Work Experience
Company, and `City` to Location. The same file works for a contact import: the
company column is what links each contact to their client company.

## Complete the import

Confirm the mapping to start the import. Spott creates a record for every row. After
the import completes, the records appear on the Candidates or Contacts page and can
be searched, filtered, exported, and added to Lists.

<Note>
  **An import creates records, it does not update them.** When a row matches an
  existing person, that person is still added to the Job or List you selected, but
  their existing data is not changed by the import.
</Note>

<Note>
  **Company names need an exact match.** When a row has no other unique identifier,
  companies are matched on name only. Matching is case-insensitive but otherwise
  exact: "Acme" and "acme" match, "Acme" and "Acme BV" do not. Spott does keep a
  manually curated list of aliases for well-known companies (so "Accenture GmbH"
  and "Accenture PLC" resolve to the same company), but for names not on that list,
  anything that does not match exactly creates a new company record.
</Note>

## Tips for successful imports

* Include at least one unique identifier per person. **Email or LinkedIn URL is
  recommended**, so Spott can deduplicate against existing records.
* Map first name and last name for clean records.
* Remove empty rows before uploading.
* Use UTF-8 encoding for CSV files for best compatibility.
* Use a consistent date format across the file, ideally `YYYY-MM-DD`.
* Double check email and phone mappings to avoid data landing in the wrong field.
* Importing into a job adds the people as applications, but **cannot set their
  application status or add comments**. Set those in the pipeline after the import.

<Note>
  A LinkedIn URL column imports the link to the person's profile, not the profile
  content itself. To pull in full LinkedIn profile data, use the
  [Chrome extension](/docs/settings/chrome-extension)
  or enrichment after the import.
</Note>

<Note>
  Migrating a full database from another ATS or CRM is a different job, and our team
  runs it for you. See [Data migration](/docs/get-started/data-migration).
</Note>
