What a contact holds
Structured fields (
phone_numbers, external_id, timezone, scheduled_at, and the agent overrides) live as top-level columns. Everything else you send stays inside data. Do not duplicate a structured field inside data.Upload a CSV
In the campaign, open the contacts uploader and drag a CSV onto the drop zone (or click to browse). The uploader parses the file in the browser, auto-detects columns, and lets you adjust the mapping before sending.1
Drop the file
Drag a
.csv file onto the upload area. The file must be 10MB or smaller, and at most the first 1000 rows are read.2
Confirm the mapping
The uploader auto-detects phone columns by header name (for example
phone, phone_number, mobile, cell, tel) and maps Contact ID, External ID, Timezone, and Scheduled At when it recognizes their headers. Adjust any mapping that is wrong.3
Review and upload
Mapped timezones, datetimes, and contact IDs are validated inline. Unmapped columns are kept in
data. Submit to send the batch.agent_config and initial_context overrides are API-only — set them through the contacts endpoint.
Add contacts via the API
POST /campaign/campaigns/{campaign_id}/contacts upserts the batch. For each contact it matches an existing row by id first, then by external_id within the campaign, and updates it; otherwise it inserts a new contact.
Sending contacts inline when you create or update a campaign accepts up to 5000 in a single payload; the standalone contacts endpoint accepts up to 1000 per call.
Phone normalization
Numbers are normalized to E.164 using the campaign configuration’sdefault_country_code, so you can upload local-format numbers as long as they belong to that country. A number that cannot be parsed into a valid E.164 number fails the whole request with 422; the response lists the first invalid numbers.
Adding contacts to a campaign whose status is
closed returns 400. Reopen or recreate the campaign before uploading.Contact statuses
As a campaign runs, each contact moves through these statuses:
Track these and per-contact attempt outcomes from Results and analytics.
Related
Configurations
Set the agent, caller number, country code, retries, and call window a campaign applies by default.
Results and analytics
Review attempts, outcomes, and assessment results per contact.

