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

# Upload contacts

> How to prepare and upload your contact list for a campaign.

You give hyzl your contact list near the end of the campaign creation flow. It is the step after call details, voice, options, and the test call. hyzl accepts contacts as a CSV file.

<Tip>
  No contact list yet? Click **Buy Leads** at the top of the contacts step. It
  opens our partner lead providers.
</Tip>

## Buy leads

You can buy a list from a lead provider. Click **Buy Leads** at the top of the contacts step. The lead purchasing panel opens.

hyzl partners with four providers:

* **Apollo**. Click **Shop Apollo** to search and export verified B2B contacts.
* **A-Leads**. Click **Shop A-Leads** to browse their catalog and buy leads directly.
* **Seamless.ai**. Click **Shop Seamless.ai** to open their database of verified B2B contacts.
* **ZoomInfo**. Click **Shop ZoomInfo** to search their enterprise contact database.

Every link opens in a new tab. After you buy a list, download it as a CSV. Then upload it with the steps below.

<Note>
  Do you want lead buying built into hyzl? Leave your email in the **Help us
  decide** section of the Buy Leads panel. We will tell you if we build it.
</Note>

## CSV format

Your CSV must have a **phone number** column. Every other column is optional. The extra columns improve personalization.

### Required column

| Column  | Description                                                                                          |
| ------- | ---------------------------------------------------------------------------------------------------- |
| `phone` | The contact's primary phone number. Accepted formats: `+15551234567`, `5551234567`, `(555) 123-4567` |

### Multiple phone numbers

You can give fallback numbers for each contact. Use `phone2`, `phone3`, and so on. A contact can have up to **10 numbers** in total.

If the primary number does not connect, hyzl tries each fallback in order. It stops when it reaches the contact, or when it runs out of numbers.

| Column               | Description            |
| -------------------- | ---------------------- |
| `phone2`             | First fallback number  |
| `phone3`             | Second fallback number |
| `phone4` … `phone10` | Additional fallbacks   |

hyzl tracks each dial attempt separately in the campaign results. You can see which number it used, the outcome, and the recording for every attempt.

### Recommended columns

| Column       | Description                                                  |
| ------------ | ------------------------------------------------------------ |
| `first_name` | Used to address the contact by name during the call          |
| `last_name`  | Combined with first name for full personalization            |
| `email`      | Used for email follow-ups if configured                      |
| `note`       | Any additional context the AI should know about this contact |
| `address1`   | Street address                                               |
| `city`       | City                                                         |
| `state`      | State or province                                            |
| `zip`        | Zip or postal code                                           |

## Upload your file

1. Click **Upload CSV** in the contacts step
2. Drag your CSV into the box, or click to browse
3. Map your columns to the fields in the preview step
4. Check the contact count
5. Click **Yes, import contacts**

<Note>
  The portal previews the first few rows before import. Check that the phone
  numbers and names mapped correctly, then continue.
</Note>

## Remove contacts

You can remove single contacts from the list before launch. You cannot add or remove contacts after a campaign starts.

## Do Not Call filter

Turn on the Do Not Call (DNC) filter add-on for a campaign. hyzl then checks every contact number against the US National Do Not Call Registry before it dials.

The check costs **\$0.03 per contact**. Each campaign also has a **\$0.50 minimum charge**, which is a payment processor minimum.

hyzl skips numbers that are on the registry and marks them as DNC in the results. It refunds them automatically, because they never connected.

The filter runs against each campaign's contact list at launch. Turn it on for every campaign where you want it to run.

This paid registry scrub is separate from your account's own [Do Not Call list](/docs/ai-calling/do-not-call). That list is always enforced, across all campaigns and integrations, at no charge. hyzl adds a number to it automatically when someone asks not to be called again.
