# Import leads from a CSV

Upload a CSV or XLSX of leads into a campaign, map its columns, and turn extra columns into variables for your sequence.

Upload a list of your own leads into a campaign from a CSV or XLSX file. You map the columns once, and any extra columns can become variables in your messages.

## Columns a lead CSV needs

Every lead needs a **First Name**, a **Last Name**, and an **Email** or a **LinkedIn URL**. A lead with only an email can receive only email steps, and one with only a LinkedIn URL only LinkedIn steps.

Optional standard columns: **Phone Number**, **Company**, **Job Title**, **Company Website** and **Industry**. A company website helps AI Personalization fields find facts about the company.

## Upload a CSV into a campaign

1. Open **Campaigns → your campaign → Leads** and select **Upload CSV**.
2. **Upload**: drop the file on the window or click to choose it. CSV and XLSX files work. A preview of the first rows appears.
3. **Map Fields**: under **Column Mapping**, check that each standard field points at the right column. Victoria AI guesses from the headers; pick **Skip** for any you don't want.
4. Add any **Custom Fields** (see below).
5. **Verify**: review how many leads are ready and which rows will be skipped, then select **Upload Leads**.

The leads appear in the campaign shortly. A banner on the **Leads** tab shows the upload's progress and, when it finishes, how many were added and how many were on your Do Not Contact list.

## Turn extra CSV columns into custom fields and variables

Any column that isn't a standard field can be kept as a custom field:

1. In **Map Fields**, under **Custom Fields**, select **Add Field**.
2. Type a name, for example `recent_funding`. Names are lowercase with underscores.
3. Pick the column it comes from.

Use it in any message as `{recent_funding}`, with single braces. Before activation, the preflight checks warn if some leads have no value for a variable the sequence uses. See [Personalization fields](https://docs.versionseven.ai/help/personalization-fields) and [Preflight checks](https://docs.versionseven.ai/help/preflight-checks).

## CSV rows skipped at the Verify step

The **Verify** step lists skipped rows grouped by reason, such as **Missing First Name**, with their row numbers. Select **Download … skipped rows** to get them as a CSV, fix them, and upload that file.

If every row is skipped, the window says all rows are missing required fields. Check that **First Name**, **Last Name** and **Email** or **LinkedIn URL** are mapped to the right columns.

## CSV upload fails or times out

- **"Upload timed out"**: split the file into smaller files and upload them one at a time.
- **"No data rows found"**: the file has only a header row, or is empty.
- **The trial lead cap message**: during the trial, an upload that would take the workspace over 250 leads is refused whole. Upload a smaller file. See [Trial lead cap](https://docs.versionseven.ai/help/trial-lead-cap).

## Add a single lead by hand

To add one person, select **Add Lead** on the **Leads** tab. Fill in **First Name**, **Last Name**, and an **Email** or **LinkedIn URL**, plus any of **Company**, **Job Title** and **Company Website**.
