Contacts
PUT
Update Contact
PUT /v1/contacts/{contactId}Update an existing contact's information and properties.
Use Cases:
- Update contact details when information changes
- Modify custom property values
- Change subscription preferences
- Update contact names or profile information
- Sync changes from external systems
Behavior:
- Only provided fields are updated (partial updates supported)
- Email address can be updated (must still be unique)
- Custom property values are validated against their types
- Cannot update readonly fields (id, createdAt)
- UpdatedAt timestamp is automatically refreshed
- Returns the complete updated contact object
- Email normalization applies (lowercase, trimmed)
Required Scope: write:contacts
Updatable Fields:
- email (must remain unique in workspace)
- firstName, lastName
- All custom property values
- Individual topic subscription statuses
Protected Fields:
- id (cannot be changed)
- createdAt (immutable)
- workspaceId (immutable)
Property Updates:
- Only include properties you want to change
- Omitted properties retain their current values
- Set property to null to clear its value
- Type validation still applies to new values
Path parameters
contactIdstringrequiredContact ID
Bodyrequired
emailstring<email>Min length: 1Max length: 255
firstNameanylastNameanyphoneanycountryanytimezoneanycityanystatus"SUBSCRIBED" | "UNSUBSCRIBED" | "BOUNCED" | "COMPLAINED" | "ARCHIVED" | "UNCONFIRMED"subscribedAtanyunsubscribedAtanypropertiesobjecttopicsstring[]Response
200Contact updated successfully. Returns the complete updated contact object with refreshed updatedAt timestamp.
objectstringrequiredidstringrequiredemailstringrequiredfirstNameanyrequiredlastNameanyrequiredphoneanyrequiredcountryanyrequiredtimezoneanyrequiredcityanyrequiredstatus"SUBSCRIBED" | "UNSUBSCRIBED" | "BOUNCED" | "COMPLAINED" | "ARCHIVED" | "UNCONFIRMED"requiredsubscribedAtanyrequiredunsubscribedAtanyrequiredpropertiesobjectrequiredtopicsstring[]required