Add Communication History
Log external communication events to a contact's timeline
Logs a communication event (email, SMS, call, or message) to a contact's history. This is an insert-only endpoint — use it to sync external communications into Zyntro so SI has a complete view of all interactions with a contact.
Requires a valid `api_key` and `developer_secret` in the JSON request body. Requests must originate from a whitelisted IP address.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
api_key |
body | string |
Yes | Your Zyntro API key |
developer_secret |
body | string |
Yes | Your developer secret (zdk_XXX). Issued during developer onboarding. |
org_id |
body | string |
Yes | Your organization UUID |
member_id |
body | string |
Yes | The member UUID. Must be a valid member in the organization. |
contact_id |
body | string |
Yes | The UUID of the contact this communication is about |
comms_type |
body | string |
Yes | The type of communication. Must be one of: `email`, `sms`, `call`, `message` |
comms_data |
body | string or object |
Yes | The communication content. Can be a plain text string or a JSON object with structured data (e.g., subject, body, recipients). |
comms_source |
body | string |
No | Where this communication originated (e.g., "Gmail", "Twilio", "External CRM"). Max 55 characters. |
comms_sentiment |
body | string |
No | Sentiment label for the communication (e.g., "positive", "neutral", "frustrated"). |
comms_next |
body | string |
No | Suggested next steps or follow-up action. |
comms_status |
body | string |
No | Processing status: `pending` or `processed`. Default: `processed` |
Request Body
Content-Type: application/json
Example
json
{
"org_id": "YOUR_ORG_ID",
"api_key": "YOUR_API_KEY",
"member_id": "YOUR_MEMBER_ID",
"comms_data": "Sent a follow-up email about the enterprise pricing proposal. Contact requested a revised quote by Friday.",
"comms_next": "Send revised quote by 2026-04-04",
"comms_type": "email",
"contact_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"comms_source": "Gmail",
"comms_sentiment": "positive",
"developer_secret": "YOUR_DEVELOPER_SECRET"
}
Code Samples
bash
curl -X POST https://app.zyntrohq.com/apis/v2/public/crm/addCommsHistory \
-H "Content-Type: application/json" \
-d '{
"api_key": "YOUR_API_KEY",
"developer_secret": "YOUR_DEVELOPER_SECRET",
"org_id": "YOUR_ORG_ID",
"member_id": "YOUR_MEMBER_ID",
"contact_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"comms_type": "call",
"comms_data": "15-minute discovery call. Discussed pain points with current CRM.",
"comms_source": "Phone",
"comms_sentiment": "positive"
}'
Tip:
Logging external communications helps SI build a complete engagement timeline. When SI decides whether to send a follow-up or adjust a contact's pipeline stage, it considers all logged interactions — not just those that originated from Zyntro.
Response
200
Communication logged
json
{
"data": {
"ch_id": 891,
"message": "Communication history logged successfully"
},
"status": "success"
}
200
Error response
json
{
"data": [
"comms_type must be one of: email, sms, call, message"
],
"status": "error"
}
Errors
| Code | Message | Resolution |
|---|---|---|
MISSING_API_KEY |
API key is required The `api_key` field is missing. |
Include your API key. |
INVALID_API_KEY |
Invalid API key No active user matches the key. |
Verify your key. |
IP_NOT_WHITELISTED |
IP address not whitelisted The request originated from an IP not in the key's allowed list. |
Contact your client to add your IP to the developer key whitelist. |
INVALID_DEVELOPER_SECRET |
Invalid developer_secret The developer secret does not match any active key. |
Verify your developer secret. If lost, have your client revoke and reissue the key. |
MISSING_DEVELOPER_SECRET |
Missing developer_secret The `developer_secret` field is missing or empty. |
Include your developer secret in the request body. This is issued during developer onboarding. |
MISSING_FIELDS |
org_id / member_id / contact_id / comms_type / comms_data is required A required field is missing. |
Include all required fields. |
INVALID_TYPE |
comms_type must be one of: email, sms, call, message The communication type is not a recognized value. |
Use one of the four allowed types. |
NOT_FOUND |
Contact not found in this organization No contact with that ID exists in the organization. |
Verify the contact_id and org_id. |
MEMBER_NOT_FOUND |
Member not found in this organization The member_id does not belong to any member in the organization. |
Use a valid member ID. |