Webhook events and payloads
What SpeakUp sends to your endpoint when a webhook fires, and what each event reports. Use this to work out which change triggered a delivery and what to fetch in response.
To set a webhook up, see how do I configure webhooks?
On this page: Delivery · Issue Created payload · Issue Updated payload · How changes are bundled · changedFields reference · What each event covers
Delivery
All webhooks send an HTTP POST request with Content-Type: application/json. Any HTTP response below 400 is treated as a successful delivery.
The payload is identifier-based. It tells your system what changed and which Issue, not the Issue content. To read the new values, call Retrieving Issues with the id from the payload.
SpeakUp does not retry failed webhook deliveries. If a request fails or times out, it is logged and not reattempted. Your endpoint must respond within 10 seconds.
Issue Created payload
Sent when a new Issue is submitted to SpeakUp.
{
"id": 123,
"customId": "CASE-123",
"createdAt": "2026-06-23T10:00:00.000Z",
"updatedAt": "2026-06-23T10:00:00.000Z"
}
| Field | Type | Description |
|---|---|---|
id |
Number | Unique identifier for the Issue. Use this to fetch the Issue. |
customId |
String | Custom identifier for the Issue. |
createdAt |
String | ISO 8601 timestamp of creation. |
updatedAt |
String | ISO 8601 timestamp of the last update. |
Issue Updated payload
Sent when an existing Issue is modified. Identical to the created payload, with one additional field naming what changed.
{
"id": 123,
"customId": "CASE-123",
"createdAt": "2026-06-23T10:00:00.000Z",
"updatedAt": "2026-06-23T10:05:00.000Z",
"changedFields": ["status", "assignee"]
}
| Field | Type | Description |
|---|---|---|
id |
Number | Unique identifier for the Issue. |
customId |
String | Custom identifier for the Issue. |
createdAt |
String | ISO 8601 timestamp of creation. |
updatedAt |
String | ISO 8601 timestamp of the last update. |
changedFields |
Array of strings | What changed. See the reference below for every possible value. |
How changes are bundled
Whether one save produces one webhook or several depends on what was changed.
| Change | Behaviour |
|---|---|
| Core Issue fields, for example status, assignee, and labels | Multiple fields saved at once are bundled into a single webhook call. changedFields contains several entries. |
| Sub-entity changes, for example comments, documents, and tasks | Each event fires its own webhook, with a single entry in changedFields. |
Two consequences follow. Each custom field value change fires its own webhook, as does each linked Issue added or removed, and each User role assigned.
changedFields reference
Every value that can appear in changedFields, and what causes it.
Core Issue fields
| Value | Triggered by |
|---|---|
domain |
Domain changed |
status |
Status changed |
assignee |
Assignee changed |
summary |
Summary changed |
resolution |
Resolution changed |
labels |
Labels changed |
description |
Description saved |
type |
Issue type changed |
receivedAt |
Received date changed |
acknowledgedAt |
Acknowledged date changed |
dueDate |
Due date changed |
dataRetentionStatus |
Data retention status changed |
dataRetainedUntil |
Data retention date changed |
Fields and forms
| Value | Triggered by |
|---|---|
issueFieldValue |
Issue field value changed |
issueForm |
Form added or removed |
issueFormValue |
Value changed within a form field |
Content and attachments
| Value | Triggered by |
|---|---|
comment |
Comment saved or deleted |
document |
Document added or removed |
folder |
Folder added, renamed, deleted, or moved |
message |
Message sent |
messageTranslation |
Message translation completed or redone |
Relationships and access
| Value | Triggered by |
|---|---|
issueLink |
Linked Issue added or removed |
issueParty |
Linked record or party added or removed |
task |
Task added |
access |
User role assigned |
report |
Report status updated |
What each event covers
Issue Created
Fires when a new Issue is submitted to SpeakUp.
Issue Updated
Fires when an existing Issue is modified. The following changes trigger a webhook.
- Core Issue fields. Domain, Status, Assignee, Summary, Resolution, Labels, Issue type, Description on save, Received date, Acknowledged date, Due date, Data retention status, and Data retention date. Drafts do not trigger. If multiple core fields are saved at once, they are bundled into a single webhook call.
- Issue field values. Each custom field value change fires a separate webhook.
- Comments. Fires when a comment is saved or deleted. Draft and discarded comments do not trigger webhooks.
- Documents. Fires when a document is added or removed.
- Folders. Fires when a folder is added, renamed, deleted, or moved.
- Tasks. Fires when a new task is added.
- Linked Issues. Fires when linked Issues are added or removed. One webhook fires per linked Issue changed.
- Linked records and parties. Fires when a record or party is linked or unlinked from an Issue.
- Issue forms. Fires when a form is added or removed. Each form field value change fires a separate webhook.
- Messages. Fires when a message is sent, a translation is completed, or a translation is redone. Draft and discarded messages do not trigger webhooks.
- User access. Fires when a User is assigned a role. One webhook fires per role assigned.