message.received webhook event is triggered whenever a lead sends a message via SMS or email. This can be used to track incoming communication.
Payload
SMS Example
{
"event": "message.received",
"data": {
"leadId": "c4f23a1b-d8e5-4f67-90c1-2a5b8d3e9x7y",
"externalLeadId": "003XX000004DHPY",
"phone": "+12025550189",
"channel": "sms",
"profile": "Default Profile",
"content": {
"text": "hello, are you available?"
}
},
"timestamp": "2024-01-15T14:30:00Z"
}
Email Example
{
"event": "message.received",
"data": {
"leadId": "c4f23a1b-d8e5-4f67-90c1-2a5b8d3e9x7y",
"externalLeadId": "003XX000004DHPY",
"phone": "+12025550189",
"channel": "email",
"profile": "Default Profile",
"content": {
"subject": "Re: Information about your services",
"text": "hello, are you available?"
},
"hasAttachments": true
},
"timestamp": "2024-01-15T14:30:00Z"
}
Properties
| Property | Type | Description |
|---|---|---|
event | string | The webhook event type (message.received). |
data.leadId | string | The unique identifier for the lead. |
data.externalLeadId | string | The CRM lead ID (Salesforce, HubSpot, or Close CRM). |
data.phone | string | The phone number of the lead. |
data.channel | string | The communication channel. Can be sms or email. |
data.profile | string | The customer profile assigned to the lead. |
data.content.subject | string | The subject line of the email. Only included for email messages, not SMS. |
data.content.text | string | The content of the message received from the lead. |
data.hasAttachments | boolean | Whether the email message includes attachments. Only included for email messages, not SMS. |
timestamp | string | The ISO 8601 timestamp when the message was received. |

