Required column

Every campaign CSV must contain:
phone_number
Numbers may include +, spaces, or hyphens, but after cleanup they must be numeric and at least 8 digits.

Variable columns

All other non-empty columns become call variables. Example:
phone_number,CUSTOMERNAME,LOAN_NO,due_amount,CURRENT_DPD
+919999999999,Rajesh,123456,50000,32
The bot can use:
{{CUSTOMERNAME}}
{{LOAN_NO}}
{{due_amount}}
{{CURRENT_DPD}}

Upload behavior

BehaviorDetail
Invalid phone rowsSkipped.
Duplicate phone numbers in same CSVSkipped.
Empty variable cellsIgnored.
Valid rowsInserted as campaign_calls with status pending.
Existing draft contactsReplaced only after new CSV validates and has valid rows.
Started/restarted campaign contactsLocked. Use Clone for a different contact list.

Limits

These limits are enforced by the API service when validating an uploaded CSV:
LimitValue
Max CSV size50 MB
Max rows500,000
Minimum phone digits8
A phone value is accepted only if, after stripping non-digits, it is all digits and at least 8 long. Rows beyond the row cap are not ingested.

CSV quality checklist

  • Header names exactly match prompt/policy field names.
  • phone_number is present and not blank.
  • Mobile numbers include country code when required by carrier.
  • Amount/date fields are already formatted the way the bot should speak them, unless policy transforms them.
  • No Excel-generated hidden characters in headers.
  • Sample 5-10 rows manually before upload.