SparrowDesk

conversation.updated

Fires when a conversation's fields change in SparrowDesk

Fires when a conversation's fields change — for example its priority, assignment, subject, or tags. The event fires on any persisted change, so a trivial edit produces an event too.

The payload carries the full current conversation object plus a previousAttributes object listing only the fields that changed, each holding its prior value. This makes the event self-contained: you can apply it idempotently (keyed on the event id) and tolerate out-of-order delivery (reconcile via last_updated_at) without re-fetching from the API.

For the envelope fields, see The webhook request.

Example payload

{
  "id": "evt_019f40d93c217e27b19dce3b9c00e65f",
  "eventType": "conversation.updated",
  "timestamp": "2026-07-08T08:30:06.439Z",
  "accountId": "1001",
  "payload": {
    "conversation": {
      "id": "11",
      "brand": "Acme Support",
      "brand_id": 5069,
      "source": "Mail",
      "status": "Pending",
      "priority": "Urgent",
      "created_at": 1780467362,
      "first_response_time": 1780467379,
      "resolution_time": null,
      "due": null,
      "first_response_due": null,
      "requested_by_email": "[email protected]",
      "requested_by_phone": null,
      "requested_by_id": 4254678,
      "assigned_to_member_id": 8544,
      "assigned_to_team_id": 2312,
      "last_updated_at": 1783499406,
      "subject": "Billing question",
      "description_html": "<p>Hi, I think I was charged twice this month.</p>",
      "description_text": "Hi, I think I was charged twice this month.",
      "tags": [
        {
          "id": 1850,
          "label": "billing"
        }
      ],
      "custom_fields": [],
      "csat": {
        "score": null,
        "sentiment": null,
        "feedback": null,
        "scale": null
      },
      "properties": null
    },
    "previousAttributes": {
      "priority": "Medium"
    },
    "actor": {
      "type": "agent",
      "id": 8544
    }
  },
  "webhookMetadata": {
    "webhookTargetId": "1",
    "deliveryAttemptId": "019f40d93c67707b809cf266c6a51710",
    "deliveryAttemptNumber": 1
  }
}

Payload fields

FieldTypeDescription
conversationobjectThe full current conversation object. See the field reference on conversation.created.
previousAttributesobjectOnly the fields that changed, each holding its prior value. Unchanged fields are absent. In the example above, priority changed from Medium to the current Urgent; nothing else changed.
actorobjectWho made the change: { "type": string, "id": number }.

The actor object

FieldTypeDescription
typestringuser (a customer), agent (a human agent), or zoona (SparrowDesk's AI agent — appears only if your workspace has the Zoona AI add-on).
idnumberID of the user, agent, or AI agent that made the change.

For nested objects such as custom fields, previousAttributes carries the changed sub-object as a whole (the entire prior value), not a per-field diff.