Overview
The Contacts page imports and exports contacts as CSV files — CSV is the only supported file format. Both actions live in the table toolbar at the top of the page:- Upload CSV — opens the Upload Contacts dialog to import contacts from a file.
- Download CSV — exports the contacts currently shown in the table.
{{contact.first_name}} (string, e.g. Jane) and their number dialled from {{contact.phone}} (string, e.g. +61412345678) — see Custom Variables for how contact data flows into scripts.
Preparing your CSV file
Click Upload CSV on the Contacts page to open the Upload Contacts dialog, then drop a.csv file onto the upload area or click Browse Files. A Download CSV Template button below the upload area gives you a ready-made file (contacts_template.csv) with three example rows showing accepted phone formats.
Flexible column headings
You don’t need to match the template headings exactly — each contact field accepts several common spellings:
If a row has a Full Name but no first or last name, the name is split automatically: the first word becomes the first name and the rest becomes the last name.
Validation rules
Phone number formatting
Phone numbers are converted to international format (e.g.+61412345678) automatically. Australian numbers are recognised in their everyday forms — mobiles (0423 456 789), landlines ((08) 9123 4567), and 13/1300/1800 numbers — with spaces, brackets and dashes stripped. Numbers already carrying a + country code (such as +64 or +44) are kept as they are; a number with no country code and no leading 0 is assumed to be Australian. Rows whose number still isn’t valid after formatting are rejected with the message Please use international format (e.g., +61400123456).
Reviewing the import
After the file is parsed, the dialog shows a review screen. Every row lands in one of three groups:- Invalid contacts — rows that failed validation, listed with the reason (e.g. First name is required). These cannot be imported; fix the file and click Change File to upload it again.
- Existing contacts to update — rows whose phone number matches a contact you already have. These are not selected by default: updating an existing contact is opt-in. Tick the rows you want, and the CSV’s values will overwrite that contact’s details.
- Select contacts to create — new, valid rows. These are all selected by default; untick any you don’t want.
Importing custom variables with your contacts
The review screen ends with a Per-contact custom variables section, which maps extra CSV columns onto a custom variable type so each imported contact arrives with a linked custom variable — no second import needed.- Pick a type from the Select a custom variable type dropdown (the default is Do not import custom variables).
- Every CSV column that isn’t a recognised contact column is listed with its own mapping dropdown. Each one is matched to a field automatically where possible; set any column to Ignore column to skip it.
- Each mapping option shows the destination and its rules, e.g. Booking → Preferred date (date, required).
Stable column headings
The most reliable way to head a custom column is thecustom.{type}.{field} pattern — for example custom.booking.preferred_date for the preferred_date field of a booking type. Columns named this way (or matching a field’s name or label, ignoring case and punctuation) are mapped automatically when you select the type. Click Typed template to download a CSV pre-headed with First Name, Last Name, Phone Number and Email, plus one custom.{type}.{field} column per field, each with an example value.
Value formats
Values are validated against each field’s data type before anything is imported:
Fields marked required must be mapped to a column and have a value in every selected row. Any problems are listed per row — e.g. Row 3 (+61412345678): Preferred date: must use YYYY-MM-DD — and the import is blocked with Fix the custom variable errors before importing until they’re resolved. If the contacts save but their custom variables cannot, you’re told explicitly: Contacts imported, but their custom variables could not be saved.
This
custom.{type}.{field} mapping is the same one used everywhere contacts are imported — Lists and the Batch Scheduler included — and it always creates or updates a custom variable linked to a contact; the Custom Variables page itself only offers CSV download, not upload. See CSV Import for Custom Variables for the full mapping and validation rules.
Exporting contacts
Click Download CSV in the Contacts toolbar to export. The export is filtered: it contains exactly the contacts currently shown in the table, so the selected list in the lists panel, your search, and any active filters and sorts all apply. The file is named with your team and the date, e.g.contacts_acme_2026-07-16.csv.
Columns, in order:
- Full Name, First Name, Last Name, Phone Number, Email, Address, Company, Status, Age, Gender, Location, Title — the same headings the import accepts, so the file can be edited and re-uploaded.
- Last Contacted — date and time of the most recent call, if any.
- Calls Count — number of calls the contact has had.
- Properties — reserved; always empty.
custom.{type}.{field}— one column per field of every installed custom variable type, filled from the custom variable linked to each contact. List values are joined with|.- Created At — when the contact record was created.
custom.{type}.{field} columns map straight back through the Per-contact custom variables section.
Other places you can import
The same flexible column mapping and validation rules appear in other flows:- Lists — click New List, choose From File, then use the Add Contacts from CSV step to import a file and add the resulting contacts straight into the new list. See Lists.
- Batch Scheduler — drop a CSV onto the source lists area to open Create list from CSV, which creates a new list from the file (see Source Lists). The Add Calls to Batch dialog has its own Upload CSV tab for loading a calling queue directly (see Adding Contacts to a Batch).
Next Steps
- Contact Records — the fields on a contact, inline editing, and per-contact call history.
- DNCR Washing — wash imported numbers against the Do Not Call Register before batch calling.
- Lists — organise imported contacts into lists for batches.
- Linking Custom Variables to Contacts — how a linked custom variable travels with the contact onto calls.

