Skip to main content
Webhook payloads use this envelope:
{
  "id": "event_id",
  "type": "message.incoming",
  "createdAt": "2026-05-08T12:00:00.000Z",
  "data": {}
}
Current event types:
  • ticket.created
  • ticket.status_changed
  • message.incoming
  • ticket.assignee_changed

Objects used inside data

These reusable object shapes are nested under the event data field. Optional fields are omitted when the underlying value is not available.

Ticket object

FieldTypeRequiredDescription
idstringYesYoLead ticket id.
chatIdstringYesYoLead chat id associated with the ticket.
statusnew | active | inactiveYesCurrent ticket status.
channel.idstringYesYoLead company channel id.
channel.typestringYesSource channel type, such as telegram, whatsapp, facebook, instagram, or vk.
assigneeIdstringNoCurrent employee assigned to the ticket.
startedAtstringYesTicket start time as an ISO 8601 date-time string.
endedAtstringNoTicket close time as an ISO 8601 date-time string.
{
  "id": "64f000000000000000000003",
  "chatId": "64f000000000000000000002",
  "status": "active",
  "channel": {
    "id": "64f000000000000000000010",
    "type": "telegram"
  },
  "assigneeId": "64f000000000000000000001",
  "startedAt": "2026-05-08T11:00:00.000Z",
  "endedAt": "2026-05-08T12:00:00.000Z"
}

Client object

FieldTypeRequiredDescription
firstNamestringYesClient display first name or fallback display name from the source channel.
lastNamestringNoClient last name when provided by the source channel.
photostringNoURL of the client profile photo.
usernamestringNoUsername or profile name from the source channel.
phonestringNoClient phone number when available, usually from WhatsApp.
parentUserIdstringNoParent/source user id when provided by the channel payload.
linkstringNoLink to the client’s profile or contact page in the source channel.
genderman | womanNoClient gender when provided by the source channel.
{
  "firstName": "Client",
  "lastName": "Name",
  "photo": "https://example.com/photo.jpg",
  "username": "client_username",
  "phone": "+15551234567",
  "parentUserId": "parent-user-id",
  "link": "https://example.com/client",
  "gender": "man"
}

Message object

FieldTypeRequiredDescription
idstringYesSource-channel message id.
sentAtstringNoMessage send time as an ISO 8601 date-time string.
fromIdstringYesSender id from the source channel.
textstringYesMessage text. Empty string when there is no text.
attachmentsarrayYesMessage attachments from the source channel. Empty array when there are none.
{
  "id": "wamid.HBg...",
  "sentAt": "2026-05-08T11:01:00.000Z",
  "fromId": "15551234567",
  "text": "Hello",
  "attachments": []
}

Employee object

FieldTypeRequiredDescription
idstringYesYoLead employee id.
firstNamestringNoEmployee first name.
lastNamestringNoEmployee last name.
positionstringYesEmployee position/title in YoLead.
{
  "id": "64f000000000000000000001",
  "firstName": "Alex",
  "lastName": "Smith",
  "position": "Operator"
}

ticket.created

Sent when a new ticket is created from an incoming message.
{
  "id": "evt_64f000000000000000000100",
  "type": "ticket.created",
  "createdAt": "2026-05-08T11:01:00.000Z",
  "data": {
    "ticket": {
      "id": "64f000000000000000000003",
      "chatId": "64f000000000000000000002",
      "status": "new",
      "channel": {
        "id": "64f000000000000000000010",
        "type": "telegram"
      },
      "startedAt": "2026-05-08T11:00:00.000Z"
    },
    "client": {
      "firstName": "Client",
      "lastName": "Name",
      "photo": "https://example.com/photo.jpg",
      "username": "client_username",
      "phone": "+15551234567",
      "parentUserId": "parent-user-id",
      "link": "https://example.com/client",
      "gender": "man"
    },
    "message": {
      "id": "wamid.HBg...",
      "sentAt": "2026-05-08T11:01:00.000Z",
      "fromId": "15551234567",
      "text": "Hello",
      "attachments": []
    }
  }
}

message.incoming

Sent when a new incoming message is received for a ticket.
{
  "id": "evt_64f000000000000000000101",
  "type": "message.incoming",
  "createdAt": "2026-05-08T11:05:00.000Z",
  "data": {
    "ticket": {
      "id": "64f000000000000000000003",
      "chatId": "64f000000000000000000002",
      "status": "active",
      "channel": {
        "id": "64f000000000000000000010",
        "type": "telegram"
      },
      "assigneeId": "64f000000000000000000001",
      "startedAt": "2026-05-08T11:00:00.000Z"
    },
    "client": {
      "firstName": "Client",
      "lastName": "Name",
      "photo": "https://example.com/photo.jpg",
      "username": "client_username",
      "phone": "+15551234567",
      "parentUserId": "parent-user-id",
      "link": "https://example.com/client",
      "gender": "man"
    },
    "message": {
      "id": "wamid.HBg...",
      "sentAt": "2026-05-08T11:05:00.000Z",
      "fromId": "15551234567",
      "text": "I need help",
      "attachments": []
    }
  }
}

ticket.status_changed

Sent when a ticket status changes. Payload fields:
FieldTypeRequiredDescription
ticketIdstringYesYoLead ticket id whose status changed.
chatIdstringYesYoLead chat id associated with the ticket.
oldStatusnew | active | inactiveYesPrevious ticket status.
newStatusnew | active | inactiveYesNew ticket status.
actorstringYesActor that triggered the status change. Public API changes use api; employee and embed UI changes use the employee display name; automatic reactivation by an incoming client message uses client.
changedAtstringYesStatus change time as an ISO 8601 date-time string.
{
  "id": "evt_64f000000000000000000102",
  "type": "ticket.status_changed",
  "createdAt": "2026-05-08T11:10:00.000Z",
  "data": {
    "ticketId": "64f000000000000000000003",
    "chatId": "64f000000000000000000002",
    "oldStatus": "new",
    "newStatus": "active",
    "actor": "api",
    "changedAt": "2026-05-08T11:10:00.000Z"
  }
}
oldStatus and newStatus can be new, active, or inactive.

ticket.assignee_changed

Sent when a ticket assignee changes. Payload fields:
FieldTypeRequiredDescription
ticketTicket objectYesTicket after the assignee change.
previousAssigneeIdstringNoPrevious employee assignee id, omitted when there was no previous assignee.
assigneeEmployee objectYesNew employee assigned to the ticket.
actorstringYesActor that triggered the assignee change. Public API changes use api; employee and embed UI changes use the employee display name.
changedAtstringYesAssignee change time as an ISO 8601 date-time string.
{
  "id": "evt_64f000000000000000000103",
  "type": "ticket.assignee_changed",
  "createdAt": "2026-05-08T11:12:00.000Z",
  "data": {
    "ticket": {
      "id": "64f000000000000000000003",
      "chatId": "64f000000000000000000002",
      "status": "active",
      "channel": {
        "id": "64f000000000000000000010",
        "type": "telegram"
      },
      "assigneeId": "64f000000000000000000001",
      "startedAt": "2026-05-08T11:00:00.000Z"
    },
    "previousAssigneeId": "64f000000000000000000004",
    "assignee": {
      "id": "64f000000000000000000001",
      "firstName": "Alex",
      "lastName": "Smith",
      "position": "Operator"
    },
    "actor": "Alex Smith",
    "changedAt": "2026-05-08T11:12:00.000Z"
  }
}