conversation.status_changed
Fires when a conversation's status transitions in SparrowDesk
Fires when a conversation's status transitions — for example from Open to Pending, or when a conversation is resolved. Status changes made by Zoona (SparrowDesk's AI agent) surface through this event too, so you can track AI resolutions and escalations without a separate event family.
The payload carries the full current conversation object with its new status.
For the envelope fields, see The webhook request.
Example payload
{
"id": "evt_019f419f2fdf7841b1ab739f0e6a9e1a",
"eventType": "conversation.status_changed",
"timestamp": "2026-07-08T12:06:19.906Z",
"accountId": "1001",
"payload": {
"conversation": {
"id": "18",
"brand": "Acme Support",
"brand_id": 5182,
"source": "Call",
"status": "Pending",
"priority": "Urgent",
"created_at": 1783511746,
"first_response_time": 1783512094,
"resolution_time": null,
"due": null,
"first_response_due": null,
"requested_by_email": "[email protected]",
"requested_by_phone": null,
"requested_by_id": 4254695,
"assigned_to_member_id": 8544,
"assigned_to_team_id": null,
"last_updated_at": 1783512379,
"subject": "API rate limit hit unexpectedly",
"description_html": "<p>I'm seeing \"API rate limit exceeded\" errors occasionally. Please look into it.</p>",
"description_text": "I'm seeing \"API rate limit exceeded\" errors occasionally. Please look into it.",
"tags": [],
"custom_fields": [],
"csat": {
"score": null,
"sentiment": null,
"feedback": null,
"scale": null
},
"properties": null
}
},
"webhookMetadata": {
"webhookTargetId": "41",
"deliveryAttemptId": "019f419f320270e4addc347de5088e66",
"deliveryAttemptNumber": 1
}
}Payload fields
| Field | Type | Description |
|---|---|---|
conversation | object | The full current conversation object, with status reflecting the new status. See the field reference on conversation.created. |
Related events
conversation.updated— fires on other field changesconversation.created— a new conversation is created