Contacts
Import Contacts
Bulk upsert up to 5,000 contacts in a single request.
POST
/io/contacts/contacts/importUpserts an array of contacts on (user_id, email). Existing contacts are updated; new ones are inserted. Maximum 5,000 contacts per call.
Request body
contactsContactInput[]bodyrequiredArray of contact objects. Each must have a valid email.
Each item in contacts:
emailstringbodyrequiredEmail address.
firstNamestringbodyFirst name.
lastNamestringbodyLast name.
statusstringbodysubscribed (default) | unsubscribed | bounced | complained.customFieldsobjectbodyArbitrary metadata.
sourcestringbodyAcquisition source (defaults to
"import").Consent provenance (optional) — persisted for TCPA/CASL/GDPR audit. Only messagingConsent: true grants messaging consent; anything else keeps the contact non-consented for SMS/WhatsApp/voice.
messagingConsentbooleanbodytrue only with captured opt-in evidence. Defaults to false.consentSourcestringbodyWhere consent was captured (e.g.
opt-in-form, api).consentTimestampstringbodyISO 8601 timestamp of consent capture.
consentEvidenceobjectbodyOpaque proof blob (form id, IP, checkbox text, etc.).
{
"contacts": [
{ "email": "alice@example.com", "firstName": "Alice", "source": "csv" },
{ "email": "bob@example.com", "status": "unsubscribed" }
]
}{ "affected": 2 }