Skip to main content
Everything a campaign does depends on this file being right. A list with missing country codes produces a campaign that reports “could not be connected” for half its contacts and looks like a product fault. Ten minutes on the spreadsheet saves that.

Before you start

  • A spreadsheet exported as CSV, from your CRM, your booking system, or wherever your customers live.
  • Ten minutes on the file itself.
  • Any custom fields you want to import already created. See Add your own contact fields.

Steps

1

Fix the phone numbers first

This is the whole job. Put every number in full international format, with the country code and no spaces, brackets, or dashes: +14155550123, +447700900123.Spreadsheets like to drop the leading + and turn long numbers into scientific notation. Format the column as text before you touch anything, and check the first and last row after every edit.
2

Give each column a clear heading

First name, last name, email, phone. Simple headings map cleanly and awkward ones cost you time in the importer.
3

Remove what you do not need

Duplicates, people who have already asked not to be contacted, and anybody you do not have permission to call. Doing this in the spreadsheet is far easier than unpicking it afterwards. See Calling rules you should know.
4

Open Contacts and import

Go to Contacts and use Import Contacts. Upload the file.
5

Map the columns

Match your columns to First Name, Last Name, Email Address, and Phone Number. Any custom fields you have created appear here too, so your own columns can come in alongside the standard ones.The importer validates as you go and tells you which rows it cannot accept, with the reason.
6

Import 10 rows first

Cut your file down to ten rows and import those. Check the numbers arrived intact, with the + and the country code. Then import the rest.

You will know it worked when

Your contacts appear with phone numbers that still have their country code, and a test call to one of them actually connects.

Getting phone numbers right

This causes more failed campaigns than everything else combined. The rule: if a number does not start with + followed by a country code, fix it before you import. In Excel or Sheets, format the column as Text first, otherwise the + is stripped and long numbers are converted to scientific notation on save.

What to import beyond name and number

The standard fields get you a campaign that calls people. Custom fields get you a campaign that sounds like you know them:
  • Appointment date so a reminder can say when.
  • Amount owed and invoice number for a payment chase.
  • Service or product so the call opens with the right subject.
  • Account owner email so an email step can Cc the right colleague.
These come in as part of the same import and are then available to your agent and your email steps. See Add your own contact fields.

Before you import a list you did not collect

A purchased or scraped list is the single fastest way to get a phone number flagged and a domain blacklisted, and in many places calling it is not legal. The platform cannot tell the difference between your own customers and a list somebody sold you, which is why the consent confirmation exists when you launch a campaign. See Calling rules you should know.

What else you can do here

  • Add a single contact by hand with Create Contact, which is quicker than importing one row.
  • Push a filtered set of contacts straight into a campaign from the contacts list. See Add contacts to a campaign.
  • Let your agent recognise these people when they call in. See Remember callers between calls.
  • Have your agent write back to your CRM so this stays a one time import. See Update your CRM.

If it did not work

Rows were rejected. The importer says why per row. Most rejections are a phone number it cannot parse or a value that does not match the type of a custom field, such as text in a number field. Numbers imported without the country code. Your spreadsheet stripped the +. Format the column as text, re add the + and country code, and re import. Numbers show as 4.15E+09. Scientific notation. Same fix: format as text before saving. A campaign says “could not be connected” for most contacts. The numbers are not dialable. Export what you imported and check the format. Custom field values were dropped. The value failed validation for that field’s type, or the field key does not exist or was archived. Check the field definition. See Add your own contact fields. Duplicates appeared. The source file had them. Deduplicate in the spreadsheet before importing.

FAQ

Go to Contacts, use Import Contacts, upload your CSV, and map your columns to First Name, Last Name, Email Address, and Phone Number. Import ten rows first and check the phone numbers survived.
Full international format starting with + and the country code, like +14155550123. A number without a country code is ambiguous and often will not dial, which is the most common cause of a campaign that cannot connect.
Your spreadsheet removed it. Format the phone column as Text before editing or saving, then re add the + and country code. Excel and Sheets both do this by default.
Yes, if you create the custom fields first. They then appear in the importer alongside the standard fields and can be used in calls and campaign emails. See Add your own contact fields.
Large lists are fine. The practical limit is how fast a campaign can call them, which is governed by your pacing settings and your plan. See Control how fast a campaign dials.
Yes. Importing works on every plan, so you can prepare a list and a campaign on Free and run it after upgrading, since outbound calling needs Starter or above.
They are reported with a reason and not imported. Fix them in the spreadsheet and import just those rows again.