Skip to main content

Create a contact

Create a contact before importing historical conversations, or prepare a contact from a trusted backend:
Use a tenant API key with cxm:contacts.write or a broader scope. See the API overview for authentication and common limits. This endpoint creates a new contact; it does not update or merge an existing one.

Send a request

At least one primary email or phone is required. Secondary addresses alone do not satisfy this requirement.
A successful request returns 201 Created:

Choose fields

Contacts receive current creation timestamps. Organization associations, custom fields, historical timestamps and arbitrary source data are not accepted.

Handle an existing contact

A supplied ID that already exists returns 409 ContactIdConflict with existingContactId. An ID conflict takes precedence over an address conflict. CXP checks every supplied primary and secondary email/phone against stored primary and secondary addresses. A match returns 409 ContactIdentityConflict:
The response identifies one blocking contact. Other supplied addresses may match other contacts, so review the source records before mapping or merging them. The endpoint does not make that decision for you. IDs and primary emails have database uniqueness protection. Phone and secondary address conflict checks do not guarantee uniqueness against simultaneous writers. Deduplicate your source data and serialize work targeting the same identities. Preserve source IDs or save returned IDs in your import mapping. A duplicate-ID error does not establish that an earlier request contained the same data. If a timeout leaves the outcome unclear, verify the result before retrying. See common errors and response conventions.