Webhooks enable your applications to receive real-time notifications when events occur in your ticketing and issue tracking systems. This eliminates the need for polling and ensures your systems stay synchronized with ticket updates, status changes, comments, and attachment activities across all integrated platforms.
Unizo normalizes webhook events from Jira, ServiceNow, Zendesk, GitHub Issues, and other ticketing providers into a consistent format. This means you write your webhook handler once and it works with all supported platforms.
Webhook Configuration To set up webhooks for your integration, visit the Unizo Console Webhooks section for step-by-step configuration guide.
Supported Event Types
These are the event types currently supported by Unizo's Ticketing webhooks. The list keeps growing as we add support for more events across different platforms.
Event Type Description Trigger Conditions ticket:created A new ticket has been created Ticket creation via UI, API, email, or automation ticket:updated Ticket information has been modified Title, description, status, priority, or assignee changes ticket:deleted A ticket has been deleted Ticket deletion or permanent removal attachment:created A new attachment has been added to a ticket File upload or attachment addition to ticket attachment:deleted An attachment has been removed from a ticket Attachment deletion or removal from ticket comment:created A new comment has been added to a ticket User or system adds a comment comment:updated An existing comment has been modified User edits an existing comment comment:deleted A comment has been deleted from a ticket Comment deletion via UI, API, or automation user:created A new user has been added User creation via UI, API, or synchronization from provider user:updated An existing user has been modified User updated via UI, API, or synchronization from provider user:deleted A user has been removed User deletion via UI, API, or provider sync link:created A new issue/ticket link has been created Linking issues or tickets via UI or API link:deleted An issue/ticket link has been removed Unlinking issues or tickets via UI or API
Webhook Security All webhooks from Unizo include security headers to verify authenticity:
Headers Header Description x-unizo-event-type
The type of event that triggered the webhook x-unizo-signature
HMAC SHA-256 signature for request validation x-unizo-timestamp
Unix timestamp when the event was sent x-unizo-delivery-id
Unique identifier for this webhook delivery
Signature Verification Verify the authenticity of incoming webhooks using HMAC SHA-256:
const crypto = require('crypto');
function verifyWebhookSignature(payload, signature, secret) {
const expectedSignature = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature, 'hex'),
Buffer.from(expectedSignature, 'hex')
);
}
Ticket Events
Triggered when a new ticket is created in the ticketing system
Headers Name Type Required Description x-unizo-event-type
string Yes Event type: ticket:created x-unizo-signature
string Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description type
string Yes Event type identifier version
string Yes Webhook payload version contentType
string Yes Branch name/identifier collection
string Yes Collection name collection.id
string Yes Collection ID collection.name
string Yes Collection Display Name organization
string Yes Organization name organization.id
string Yes Organization ID organization.name
string Yes Organization Display Name ticket
string Yes Ticket Name ticket.id
string Yes Ticket Id ticket.state
string No Ticket key or number ticket.summary
string Yes Ticket title or summary ticket.createdDateTime
string No Ticket Creation Timestamp integration
string Yes Integration Name integration.type
string No Integration type integration.id
string Yes Integration id integration.name
string Yes Integration Display Name
Example Payload Copy {
"type" : "ticket:created" ,
"version" : "1.0.0" ,
"contentType" : "application/json" ,
"collection" : {
"id" : "169133028" ,
"name" : "GH-DemoOrg411"
} ,
"organization" : {
"id" : "797087929" ,
"name" : "DemoRepo1"
} ,
"ticket" : {
"id" : "78" ,
"state" : "open" ,
"summary" : "New issue" ,
"createdDateTime" : "May 5, 2025 2:50 PM" ,
"createdBy" : "User089"
} ,
"integration" : {
"type" : "TICKETING" ,
"id" : "13348832-e545-4b33-aa32-51ad1b92afdf" ,
"name" : "Gi_Secu_1746456420866"
}
}
Response 200 OK
Webhook processed successfully 400 Bad Request
Invalid webhook payload 401 Unauthorized
Invalid or missing signature
Triggered when ticket information is modified
Headers Name Type Required Description x-unizo-event-type
string Yes Event type: ticket:updated x-unizo-signature
string Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description type
string Yes Event type identifier version
string Yes Webhook payload version contentType
string Yes Branch name/identifier collection
string Yes Collection name collection.id
string Yes Collection ID collection.name
string Yes Collection Display Name organization
string Yes Organization name organization.id
string Yes Organization ID organization.name
string Yes Organization Display Name ticket
string Yes Ticket Name ticket.id
string Yes Ticket Id ticket.state
string No Ticket key or number ticket.summary
string Yes Ticket title or summary ticket.createdDateTime
string No Ticket Creation Timestamp ticket.changeLog
string Yes Ticket Change Log ticket.changeLog.updatedDateTime
string Yes Ticket Change Log Updated Timestamp ticket.changeLog.items
string Yes Ticket Change Log Items integration
string Yes Integration Name integration.type
string No Integration type integration.id
string Yes Integration id integration.name
string Yes Integration Display Name
Example Payload Copy {
"type" : "ticket:updated" ,
"version" : "1.0.0" ,
"contentType" : "application/json" ,
"collection" : {
"id" : "169133028" ,
"name" : "GH-DemoOrg411"
} ,
"organization" : {
"id" : "797087929" ,
"name" : "DemoRepo1"
} ,
"ticket" : {
"id" : "78" ,
"state" : "open" ,
"summary" : "New issue123" ,
"createdDateTime" : "May 5, 2025 2:50 PM" ,
"changeLog" : {
"updatedDateTime" : "May 5, 2025 2:50 PM" ,
"items" : [
{
"field" : "body" ,
"fieldId" : "body" ,
"from" : ""
} ,
{
"field" : "title" ,
"fieldId" : "title" ,
"from" : "New issue"
}
]
}
}
}
Response 200 OK
Webhook processed successfully 400 Bad Request
Invalid webhook payload 401 Unauthorized
Invalid or missing signature
Triggered when a ticket is deleted from the system
Headers Name Type Required Description x-unizo-event-type
string Yes Event type: ticket:deleted x-unizo-signature
string Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description type
string Yes Event type identifier version
string Yes Webhook payload version contentType
string Yes Branch name/identifier collection
string Yes Collection name collection.id
string Yes Collection ID collection.name
string Yes Collection Display Name organization
string Yes Organization name organization.id
string Yes Organization ID organization.name
string Yes Organization Display Name ticket
string Yes Ticket Name ticket.id
string Yes Ticket Id ticket.state
string No Ticket key or number ticket.summary
string Yes Ticket title or summary ticket.createdDateTime
string No Ticket Creation Timestamp integration
string Yes Integration Name integration.type
string No Integration type integration.id
string Yes Integration id integration.name
string Yes Integration Display Name
Example Payload Copy {
"type" : "ticket:deleted" ,
"version" : "1.0.0" ,
"contentType" : "application/json" ,
"collection" : {
"id" : "169133028" ,
"name" : "GH-DemoOrg411"
} ,
"organization" : {
"id" : "797087929" ,
"name" : "DemoRepo1"
} ,
"ticket" : {
"id" : "78" ,
"state" : "open" ,
"summary" : "New issue123" ,
"createdDateTime" : "May 5, 2025 2:50 PM"
} ,
"integration" : {
"type" : "TICKETING" ,
"id" : "13348832-e545-4b33-aa32-51ad1b92afdf" ,
"name" : "Gi_Secu_1746456420866"
}
}
Response 200 OK
Webhook processed successfully 400 Bad Request
Invalid webhook payload 401 Unauthorized
Invalid or missing signature
Attachment Events
Triggered when a new attachment is added to a ticket
Headers Name Type Required Description x-unizo-event-type
string Yes Event type: attachment:created x-unizo-signature
string Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description type
string Yes Event type identifier version
string Yes Webhook payload version contentType
string Yes Content type collection
string Yes Collection name collection.id
string Yes Collection ID collection.name
string Yes Collection Display Name organization
string Yes Organization name organization.id
string Yes Organization ID organization.name
string Yes Organization Display Name ticket
string Yes Ticket information ticket.id
string Yes Ticket Id ticket.state
string No Ticket state or status ticket.summary
string Yes Ticket title or summary attachment
object Yes Attachment information attachment.id
string Yes Attachment unique identifier attachment.filename
string Yes Original filename of the attachment attachment.mimeType
string No MIME type of the attachment attachment.size
number No File size in bytes attachment.url
string No Download URL for the attachment attachment.createdDateTime
string No Attachment creation timestamp attachment.createdBy
string No User who uploaded the attachment integration
string Yes Integration Name integration.type
string No Integration type integration.id
string Yes Integration id integration.name
string Yes Integration Display Name
Example Payload Copy {
"type" : "attachment:created" ,
"version" : "1.0.0" ,
"contentType" : "application/json" ,
"attachment" : {
"id" : "10430" ,
"filename" : "testfile.png" ,
"mimeType" : "image/png" ,
"sizeBytes" : "4910" ,
"createdDateTime" : "2025-08-29T13:02:50.352+0530"
} ,
"integration" : {
"type" : "TICKETING" ,
"id" : "f2ae41b8-6aa9-434b-84ab-ddc0a7321351" ,
"name" : "Ji_Secu_1756452472351"
}
}
Response 200 OK
Webhook processed successfully 400 Bad Request
Invalid webhook payload 401 Unauthorized
Invalid or missing signature
Triggered when an attachment is removed from a ticket
Headers Name Type Required Description x-unizo-event-type
string Yes Event type: attachment:deleted x-unizo-signature
string Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description type
string Yes Event type identifier version
string Yes Webhook payload version contentType
string Yes Content type collection
string Yes Collection name collection.id
string Yes Collection ID collection.name
string Yes Collection Display Name organization
string Yes Organization name organization.id
string Yes Organization ID organization.name
string Yes Organization Display Name ticket
string Yes Ticket information ticket.id
string Yes Ticket Id ticket.state
string No Ticket state or status ticket.summary
string Yes Ticket title or summary attachment
object Yes Attachment information attachment.id
string Yes Attachment unique identifier attachment.filename
string Yes Original filename of the attachment attachment.mimeType
string No MIME type of the attachment attachment.size
number No File size in bytes attachment.createdDateTime
string No Attachment original creation timestamp attachment.createdBy
string No User who originally uploaded the attachment attachment.deletedDateTime
string No Attachment deletion timestamp attachment.deletedBy
string No User who deleted the attachment integration
string Yes Integration Name integration.type
string No Integration type integration.id
string Yes Integration id integration.name
string Yes Integration Display Name
Example Payload Copy {
"type" : "attachment:deleted" ,
"version" : "1.0.0" ,
"contentType" : "application/json" ,
"attachment" : {
"id" : "10397" ,
"filename" : "google_workspace_128.png" ,
"mimeType" : "image/png" ,
"sizeBytes" : "1482" ,
"createdDateTime" : "2025-08-28T15:36:38.302+0530"
} ,
"integration" : {
"type" : "TICKETING" ,
"id" : "f2ae41b8-6aa9-434b-84ab-ddc0a7321351" ,
"name" : "Ji_Secu_1756452472351"
}
}
Response 200 OK
Webhook processed successfully 400 Bad Request
Invalid webhook payload 401 Unauthorized
Invalid or missing signature
Triggered when a new comment is added to a ticket
Headers Name Type Required Description x-unizo-event-type
string Yes Event type: comment:created x-unizo-signature
string Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description type
string Yes Event type identifier version
string Yes Webhook payload version contentType
string Yes Content type collection
string Yes Collection name collection.id
string Yes Collection ID collection.name
string Yes Collection Display Name organization
string Yes Organization name organization.id
string Yes Organization ID organization.name
string Yes Organization Display Name ticket
string Yes Ticket information ticket.id
string Yes Ticket Id ticket.state
string No Ticket state or status ticket.summary
string Yes Ticket title or summary comment
object Yes Comment information comment.id
string Yes Comment unique identifier comment.body
string Yes Comment text comment.createdDateTime
string Yes Comment creation timestamp comment.createdBy
string Yes User who created the comment integration
string Yes Integration Name integration.type
string No Integration type integration.id
string Yes Integration id integration.name
string Yes Integration Display Name
Example Payload Copy {
"type" : "comment:created" ,
"version" : "1.0.0" ,
"contentType" : "application/json" ,
"collection" : {
"id" : "10099" ,
"name" : "NewProject"
} ,
"ticket" : {
"id" : "10132" ,
"summary" : "Task2Summary"
} ,
"comment" : {
"id" : "10297" ,
"body" : "Looks good!" ,
"createdDateTime" : "2025-08-29T13:08:28.506+0530" ,
"updatedDateTime" : "2025-08-29T13:08:28.506+0530" ,
"createdBy" : "user" ,
"updatedBy" : "user"
} ,
"integration" : {
"type" : "TICKETING" ,
"id" : "f2ae41b8-6aa9-434b-84ab-ddc0a7321351" ,
"name" : "Ji_Secu_1756452472351"
}
}
Response 200 OK
Webhook processed successfully 400 Bad Request
Invalid webhook payload 401 Unauthorized
Invalid or missing signature
Triggered when an existing comment is edited
Headers Name Type Required Description x-unizo-event-type
string Yes Event type: comment:updated x-unizo-signature
string Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description type
string Yes Event type identifier version
string Yes Webhook payload version contentType
string Yes Content type collection
string Yes Collection name collection.id
string Yes Collection ID collection.name
string Yes Collection Display Name organization
string Yes Organization name organization.id
string Yes Organization ID organization.name
string Yes Organization Display Name ticket
string Yes Ticket information ticket.id
string Yes Ticket Id ticket.state
string No Ticket state or status ticket.summary
string Yes Ticket title or summary comment
object Yes Comment information comment.id
string Yes Comment unique identifier comment.body
string Yes Updated comment text comment.updatedDateTime
string Yes Comment update timestamp comment.updatedBy
string Yes User who updated the comment integration
string Yes Integration Name integration.type
string No Integration type integration.id
string Yes Integration id integration.name
string Yes Integration Display Name
Example Payload Copy {
"type" : "comment:updated" ,
"version" : "1.0.0" ,
"contentType" : "application/json" ,
"collection" : {
"id" : "10099" ,
"name" : "NewProject"
} ,
"ticket" : {
"id" : "10132" ,
"summary" : "Task2Summary"
} ,
"comment" : {
"id" : "10297" ,
"body" : "Looks good! update" ,
"createdDateTime" : "2025-08-29T13:08:28.506+0530" ,
"updatedDateTime" : "2025-08-29T13:08:49.968+0530" ,
"createdBy" : "user" ,
"updatedBy" : "user"
} ,
"integration" : {
"type" : "TICKETING" ,
"id" : "f2ae41b8-6aa9-434b-84ab-ddc0a7321351" ,
"name" : "Ji_Secu_1756452472351"
}
}
Response 200 OK
Webhook processed successfully 400 Bad Request
Invalid webhook payload 401 Unauthorized
Invalid or missing signature
Triggered when an existing comment is deleted from a ticket
Headers Name Type Required Description x-unizo-event-type
string Yes Event type: comment:deleted x-unizo-signature
string Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description type
string Yes Event type identifier version
string Yes Webhook payload version contentType
string Yes Content type collection
string Yes Collection name collection.id
string Yes Collection ID collection.name
string Yes Collection Display Name organization
string Yes Organization name organization.id
string Yes Organization ID organization.name
string Yes Organization Display Name ticket
string Yes Ticket information ticket.id
string Yes Ticket Id ticket.state
string No Ticket state or status ticket.summary
string Yes Ticket title or summary comment
object Yes Comment information comment.id
string Yes Comment unique identifier comment.body
string No Comment text (if available) comment.deletedDateTime
string Yes Comment deletion timestamp comment.deletedBy
string Yes User who deleted the comment integration
string Yes Integration Name integration.type
string No Integration type integration.id
string Yes Integration id integration.name
string Yes Integration Display Name
Example Payload Copy {
"type" : "comment:deleted" ,
"version" : "1.0.0" ,
"contentType" : "application/json" ,
"collection" : {
"id" : "10099" ,
"name" : "NewProject"
} ,
"ticket" : {
"id" : "10132" ,
"summary" : "Task2Summary"
} ,
"comment" : {
"id" : "10297" ,
"body" : "Looks good! update" ,
"createdDateTime" : "2025-08-29T13:08:28.506+0530" ,
"updatedDateTime" : "2025-08-29T13:08:49.968+0530" ,
"createdBy" : "user" ,
"updatedBy" : "user"
} ,
"integration" : {
"type" : "TICKETING" ,
"id" : "f2ae41b8-6aa9-434b-84ab-ddc0a7321351" ,
"name" : "Ji_Secu_1756452472351"
}
}
Response 200 OK
Webhook processed successfully 400 Bad Request
Invalid webhook payload 401 Unauthorized
Invalid or missing signature
User Events
Triggered when a new user is created in the system
Headers Name Type Required Description x-unizo-event-type
string Yes Event type: user:created x-unizo-signature
string Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description type
string Yes Event type identifier version
string Yes Webhook payload version contentType
string Yes Content type collection
string Yes Collection name collection.id
string Yes Collection ID collection.name
string Yes Collection Display Name organization
string Yes Organization name organization.id
string Yes Organization ID organization.name
string Yes Organization Display Name user
object Yes User information user.id
string Yes Unique identifier of the user user.username
string Yes Username of the user user.email
string No Email address of the user user.createdDateTime
string Yes User creation timestamp user.createdBy
string No User or system who created the account integration
string Yes Integration Name integration.type
string No Integration type integration.id
string Yes Integration id integration.name
string Yes Integration Display Name
Example Payload Copy {
"type" : "user:created" ,
"version" : "1.0.0" ,
"contentType" : "application/json" ,
"collection" : {
"id" : "169133028" ,
"name" : "GH-DemoOrg411"
} ,
"organization" : {
"id" : "797087929" ,
"name" : "DemoOrg"
} ,
"user" : {
"id" : "usr-101" ,
"username" : "alice_w" ,
"email" : "alice@example.com" ,
"createdDateTime" : "May 6, 2025 10:05 AM" ,
"createdBy" : "system_admin"
} ,
"integration" : {
"type" : "" ,
"id" : "a123b456-c789-0123-def4-567890abcd" ,
"name" : "Okta_IDP_Integration"
}
}
Response 200 OK
Webhook processed successfully 400 Bad Request
Invalid webhook payload 401 Unauthorized
Invalid or missing signature
Triggered when existing user is updated in the system
Headers Name Type Required Description x-unizo-event-type
string Yes Event type: user:updated x-unizo-signature
string Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description type
string Yes Event type identifier version
string Yes Webhook payload version contentType
string Yes Content type collection
string Yes Collection name collection.id
string Yes Collection ID collection.name
string Yes Collection Display Name organization
string Yes Organization name organization.id
string Yes Organization ID organization.name
string Yes Organization Display Name user
object Yes User information user.id
string Yes Unique identifier of the user user.username
string Yes Username of the user user.email
string No Email address of the user user.updatedDateTime
string Yes User creation timestamp user.updatedBy
string No User or system who created the account integration
string Yes Integration Name integration.type
string No Integration type integration.id
string Yes Integration id integration.name
string Yes Integration Display Name
Example Payload Copy {
"type" : "user:updated" ,
"version" : "1.0.0" ,
"contentType" : "application/json" ,
"user" : {
"id" : "712020:83f15549-eb75-4b51-b4d8-889acf47a176" ,
"username" : "vehay78581" ,
"displayName" : "vehay78581" ,
"accountType" : "atlassian" ,
"status" : "inactive" ,
"avatarUrl" : "https://secure.gravatar.com/avatar/ee533f6c3869a66c3bfddb6dd4db5b3c?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FV-2.png" ,
"createdDateTime" : "2025-08-29 13:12:51.353"
} ,
"integration" : {
"type" : "TICKETING" ,
"id" : "f2ae41b8-6aa9-434b-84ab-ddc0a7321351" ,
"name" : "Ji_Secu_1756452472351"
}
}
Response 200 OK
Webhook processed successfully 400 Bad Request
Invalid webhook payload 401 Unauthorized
Invalid or missing signature
Triggered when a user account is deleted
Headers Name Type Required Description x-unizo-event-type
string Yes Event type: user:deleted x-unizo-signature
string Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description type
string Yes Event type identifier version
string Yes Webhook payload version contentType
string Yes Content type collection
string Yes Collection name collection.id
string Yes Collection ID collection.name
string Yes Collection Display Name organization
string Yes Organization name organization.id
string Yes Organization ID organization.name
string Yes Organization Display Name user
object Yes User information user.id
string Yes Unique identifier of the user user.username
string Yes Username of the user user.email
string No Email address of the user user.deletedDateTime
string Yes User deletion timestamp user.deletedBy
string Yes User or system who deleted the account integration
string Yes Integration Name integration.type
string No Integration type integration.id
string Yes Integration id integration.name
string Yes Integration Display Name
Example Payload Copy {
"type" : "user:deleted" ,
"version" : "1.0.0" ,
"contentType" : "application/json" ,
"user" : {
"id" : "712020:83f15549-eb75-4b51-b4d8-889acf47a176" ,
"createdDateTime" : "2025-08-29 07:43:09.881"
} ,
"integration" : {
"type" : "TICKETING" ,
"id" : "f2ae41b8-6aa9-434b-84ab-ddc0a7321351" ,
"name" : "Ji_Secu_1756452472351"
}
}
Response 200 OK
Webhook processed successfully 400 Bad Request
Invalid webhook payload 401 Unauthorized
Invalid or missing signature
TicketLink Events
Triggered when a new link is created between two tickets/issues
Headers Name Type Required Description x-unizo-event-type
string Yes Event type: link:created x-unizo-signature
string Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description type
string Yes Event type identifier version
string Yes Webhook payload version contentType
string Yes Content type collection
string Yes Collection name collection.id
string Yes Collection ID collection.name
string Yes Collection Display Name organization
string Yes Organization name organization.id
string Yes Organization ID organization.name
string Yes Organization Display Name link
object Yes Link information link.id
string Yes Link unique identifier link.sourceTicketId
string Yes Source ticket ID link.targetTicketId
string Yes Target ticket ID link.linkType
string Yes Type of link (e.g. relates_to, blocks, duplicates) link.createdDateTime
string Yes Link creation timestamp link.createdBy
string Yes User who created the link integration
string Yes Integration Name integration.type
string No Integration type integration.id
string Yes Integration id integration.name
string Yes Integration Display Name
Example Payload Copy {
"type" : "ticketlink:created" ,
"version" : "1.0.0" ,
"contentType" : "application/json" ,
"ticketLink" : {
"id" : "10198" ,
"type" : "Relates" ,
"sourceTicket" : {
"id" : "10178"
} ,
"targetTicket" : {
"id" : "10179"
}
} ,
"integration" : {
"type" : "TICKETING" ,
"id" : "f2ae41b8-6aa9-434b-84ab-ddc0a7321351" ,
"name" : "Ji_Secu_1756452472351"
}
}
Response 200 OK
Webhook processed successfully 400 Bad Request
Invalid webhook payload 401 Unauthorized
Invalid or missing signature
Triggered when a link between two tickets/issues is removed
Headers Name Type Required Description x-unizo-event-type
string Yes Event type: link:deleted x-unizo-signature
string Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description type
string Yes Event type identifier version
string Yes Webhook payload version contentType
string Yes Content type collection
string Yes Collection name collection.id
string Yes Collection ID collection.name
string Yes Collection Display Name organization
string Yes Organization name organization.id
string Yes Organization ID organization.name
string Yes Organization Display Name link
object Yes Link information link.id
string Yes Link unique identifier link.sourceTicketId
string Yes Source ticket ID link.targetTicketId
string Yes Target ticket ID link.linkType
string Yes Type of link (e.g. relates_to, blocks, duplicates) link.deletedDateTime
string Yes Link deletion timestamp link.deletedBy
string Yes User who deleted the link integration
string Yes Integration Name integration.type
string No Integration type integration.id
string Yes Integration id integration.name
string Yes Integration Display Name
Example Payload Copy {
"type" : "ticketlink:deleted" ,
"version" : "1.0.0" ,
"contentType" : "application/json" ,
"ticketLink" : {
"id" : "10198" ,
"type" : "Relates" ,
"sourceTicket" : {
"id" : "10178"
} ,
"targetTicket" : {
"id" : "10179"
}
} ,
"integration" : {
"type" : "TICKETING" ,
"id" : "f2ae41b8-6aa9-434b-84ab-ddc0a7321351" ,
"name" : "Ji_Secu_1756452472351"
}
}
Response 200 OK
Webhook processed successfully 400 Bad Request
Invalid webhook payload 401 Unauthorized
Invalid or missing signature
Attachment
Attachments let your applications handle files, screenshots, logs, and documents linked to tickets and issues in real time. Instead of treating each platform’s attachment model differently, Unizo delivers a normalized event stream so your systems always stay in sync when files are added, updated, or removed.
Unizo supports attachment events from Jira, ServiceNow, Zendesk, GitHub Issues, and other providers, ensuring your integration works seamlessly across platforms with a single, consistent format.
Supported Event Types
These are the event types currently supported by Unizo's Ticketing Attachments . The list keeps growing as we add support for more events across different platforms.
Event Type Description Trigger Conditions Attachment :created A new Attachment has been created Attachment :updated Attachment information has been modified Attachment :deleted A Attachment has been deleted
Attachment Events
Triggered when a new Attachment is created in the Attachment system
Headers Name Type Required Description x-unizo-event-type
string Yes Event type: ticket:created x-unizo-signature
string Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description
Response 200 OK
Webhook processed successfully 400 Bad Request
Invalid webhook payload 401 Unauthorized
Invalid or missing signature
Triggered when Attachment information is modified
Headers Name Type Required Description x-unizo-event-type
string Yes Event type: ticket:created x-unizo-signature
string Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description
Response 200 OK
Webhook processed successfully 400 Bad Request
Invalid webhook payload 401 Unauthorized
Invalid or missing signature
Triggered when a Attachment is deleted from the system
Headers Name Type Required Description x-unizo-event-type
string Yes Event type: ticket:created x-unizo-signature
string Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description
Response 200 OK
Webhook processed successfully 400 Bad Request
Invalid webhook payload 401 Unauthorized
Invalid or missing signature
Webhook Delivery & Retries
Unizo implements automatic retry logic for failed webhook deliveries:
Initial Delivery : Immediate
First Retry : After 1 minute
Second Retry : After 5 minutes
Third Retry : After 15 minutes
Final Retry : After 1 hour
Webhooks are considered failed if:
Your endpoint returns a non-2xx status code
Connection timeout (30 seconds)
SSL/TLS errors
Best Practices
1. Idempotency
Idempotent Webhook Handler async function handleWebhook(request) {
const deliveryId = request.headers['x-unizo-delivery-id'];
// Check if already processed
if (await isProcessed(deliveryId)) {
return { status: 200, message: 'Already processed' };
}
// Process webhook
await processWebhook(request.body);
// Mark as processed
await markProcessed(deliveryId);
return { status: 200 };
}
2. Async Processing
Asynchronous Processing app.post('/webhooks/ticketing', (req, res) => {
// Validate signature
if (!verifySignature(req)) {
return res.status(401).send('Invalid signature');
}
// Queue for processing
ticketQueue.add(req.body);
// Return immediately
res.status(200).send('OK');
});
3. Error Handling
Comprehensive Error Handling async function processWebhook(payload) {
try {
switch (payload.type) {
case 'ticket:created':
await handleTicketCreated(payload);
break;
case 'ticket:updated':
await handleTicketUpdated(payload);
break;
case 'ticket:deleted':
await handleTicketDeleted(payload);
break;
case 'attachment:created':
await handleAttachmentCreated(payload);
break;
case 'attachment:deleted':
await handleAttachmentDeleted(payload);
break;
default:
logger.warn(`Unknown webhook type: ${payload.type}`);
}
} catch (error) {
logger.error('Webhook processing failed', {
error: error.message,
payload,
stack: error.stack
});
throw error;
}
}
Need Help?
For webhook-related support: