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

# Upload Contacts by CSV

> Add a fixed contact list to a batch campaign and map its columns.

Batch campaigns receive contacts from CSV files. Each row represents one queued call, and the column names become fields that the campaign can map to phone numbers, timezones, and flow variables.

## Prepare the CSV

* Include a header row with non-empty, distinct column names.
* Include a phone-number column with country codes where required.
* Remove contacts that should not be called before uploading the file.

Use consistent values within each column. For example, keep phone numbers in one format and use valid timezone values if the campaign maps a timezone field.

To control when individual contacts may be called, add a column of daily time ranges such as `09:00-17:00`, using a semicolon between multiple ranges. See [calling windows](/outbound-calling/campaigns#give-a-contact-its-own-calling-window) for how they interact with the campaign's hours.

## Upload and map the fields

1. Create a batch campaign and upload one or more CSV files in **Source setup**. For an existing campaign, open **Settings > Call initiation**.
2. Review the detected columns and any warning about a missing phone-number column.
3. In **Calling hours**, configure any per-person timezone or calling-window field. If using **Internal routing**, choose the dial-out-number field in **Number routing**.
4. In **Variables**, map the source fields used by the selected flow. For an existing campaign, these controls are under **Settings > Outbound call flow**, with scheduling under **Calling hours** and routing under **Numbers**.

If the file or its headers change, review every mapping before starting the campaign. Apply edits to an existing campaign with **Save changes**.

## Verify the import

Use a small CSV containing phone numbers you control. Confirm that each row enters the campaign with the expected values and that the outbound flow receives its mapped variables.

<Warning>
  Uploading a CSV can queue real outbound calls once the campaign is running. Verify the list, cadence, phone-number routing, and compliance settings before starting it.
</Warning>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.