Before you start: required columns
Every agent needs a few columns for each contact. The upload screen lists them under “The file must include the following columns”.- Variables filled by a pre-conversation action.
- Call data variables, such as the current date or the dialed number.
Import contacts from a CSV file

The agent header with the Add Contact button that opens the import window.
Open the import window
Prepare your file
Upload the file
Check the preview
Wait for processing

The Import File tab with the upload area, the required columns, and the Download Sample CSV link.
CSV formatting rules
- Only
.csvfiles are accepted. Export Excel or Google Sheets files as CSV first. - Header names are matched to variables. Callers converts each header to camelCase, so
Phone Number,phone-number, andPhoneNumberall becomephoneNumber, andProperty AddressbecomespropertyAddress. Underscores are kept as they are, sophone_numberdoes not matchphoneNumber. Use spaces, hyphens, or camelCase. - Include the country code on every phone number, for example
+1 555 555 1234. Spaces, dashes, and parentheses are fine. A 10-digit number without a country code is retried as a US number. - Every other column is stored as contact data and is available to the script as a variable with the same (camelCased) name.
- Empty headers are ignored.
Multiple phone numbers per contact
Add aphoneNumbers column to give one contact several numbers, such as mobile, office, and home. Separate numbers with commas, semicolons, or line breaks, and wrap the cell in double quotes when it contains commas.
- Duplicate numbers in the list are removed. The first valid number becomes the contact’s primary
phoneNumber. - Each attempt dials the number that has been tried the fewest times, so attempts rotate through the list in order.
- A number that fails (for example, it’s invalid or disconnected) is skipped from then on.
- The attempt limit scales with the number of valid numbers. With Total Dial Attempts set to 5 and two valid numbers, the contact can be dialed up to 10 times. See Scheduling and retries.
Import history and failed rows
Import History lists your last 50 imports for the agent, newest first. Each row shows the file name (or Manual Import), the number of contacts, the date, and the result:Missing required fields: …: a required column is empty for that row.Invalid phone number(s): …: the number couldn’t be parsed. Add the country code.Phone number is in the local DNC list: the number is on your account’s Do Not Call list and the agent checks it.- A registry match: the agent checks the US Do Not Call registry and the number is listed.
Add contacts manually
Use Add Manually for a handful of contacts, or to add a test contact.Open the Add Manually tab
Fill in the grid
Import

The Add Manually tab: one row per contact, with the Add more and Finalize Import buttons.
Time zones
Callers works out each contact’s time zone from their primary phone number:- US and Canada: from the area code.
- Other countries: from the country.
timezone field through the API as an IANA name such as America/Chicago. A timezone column in a CSV file is not used for scheduling; CSV contacts always get the time zone that matches their phone number.
Duplicates
By default, a phone number can appear only once per agent. When you import a number that already exists in the agent:- The existing contact is updated, not skipped. It counts as Updated in the import results.
- Its name, data fields, phone numbers, and time zone are replaced with the new values.
- Its status and attempt count are kept.
- If it was archived, it’s restored.
Add contacts with the API
Use the API to push contacts from a CRM, a web form, or your own backend. Both endpoints add contacts to one agent and follow the same duplicate rules as CSV imports: sending an existing phone number updates that contact./agents/{agentId}. The older /campaigns/{campaignId} paths still work and behave the same.Add one contact
POST https://api.callers.ai/agents/{agentId}/contacts
created is true for a new contact. modified is true when an existing contact with the same phone number was updated.
Add many contacts
POST https://api.callers.ai/agents/{agentId}/contacts/bulk
verbose, the response has a contactIds array instead of contactDetails.
Contact fields
+15555551234. 7–20 characters; digits, +, (, ), and - only. Required unless you send phoneNumbers or an email in data.email.phoneNumber.Europe/London. Abbreviations like EST are rejected. If omitted, the time zone comes from the phone number.data.email. Limits: up to 100 keys, keys up to 120 characters starting with a letter, $, or _, and 4,000 characters in total.false (or leaving it out) for an existing archived contact restores it.Query parameters
Manage contacts
Open an agent to see its contacts. Admins can archive, restore, update, and export them.Archive and restore
Archiving removes a contact from dialing without deleting its history.- One contact: hover over the row and click the archive icon, or open the contact and choose Archive Contact from the ⋯ menu. Confirm with Yes, Archive.
- Several contacts: select them with the checkboxes, then click Archive Selected.
- Restore: open the Archived tab (shown once any contact is archived), select contacts, and click Restore Selected.
DELETE /agents/{agentId}/contacts/{contactId}, DELETE /agents/{agentId}/contacts/bulk with contactIds, or DELETE /agents/{agentId}/contacts/phone-number/bulk with phoneNumbers. Each accepts an optional archiveReason. To restore a contact through the API, add it again with the same phone number.
Update status in bulk
Correct outcomes after reviewing calls, for example to mark contacts as Interested after a human follow-up.Select contacts
Choose the new status
Export
Click Export contacts (Export calls on inbound agents) to download a CSV of the list. The export uses your current search, status, date, and post-call filters and sort order. The button appears only for admins whose member access includes Export contacts or calls. See Team and permissions.List contacts with the API
GET /agents/{agentId}/contacts returns the agent’s contacts, 50 per page by default.
Troubleshooting
The upload says a required column is missing, but it's in my file
The upload says a required column is missing, but it's in my file
phone_number doesn’t match phoneNumber. Use phoneNumber, Phone Number, or phone-number. Every script variable is also required; download the sample CSV to see the full list.Rows failed with “Invalid phone number”
Rows failed with “Invalid phone number”
+44 for the UK). Only 10-digit numbers are retried as US numbers automatically.My import shows Updated instead of Added
My import shows Updated instead of Added
The API returned success but fewer contacts were added
The API returned success but fewer contacts were added
requested with added and modified, and fill the missing data keys.I can't see Add Contact or Export contacts
I can't see Add Contact or Export contacts