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-typeThe type of event that triggered the webhook x-unizo-signatureHMAC SHA-256 signature for request validation x-unizo-timestampUnix timestamp when the event was sent x-unizo-delivery-idUnique 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-typestring Yes Event type: ticket:created x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description typestring Yes Event type identifier versionstring Yes Webhook payload version contentTypestring Yes Branch name/identifier collectionstring Yes Collection name collection.idstring Yes Collection ID collection.namestring Yes Collection Display Name organizationstring Yes Organization name organization.idstring Yes Organization ID organization.namestring Yes Organization Display Name ticketstring Yes Ticket Name ticket.idstring Yes Ticket Id ticket.statestring No Ticket key or number ticket.summarystring Yes Ticket title or summary ticket.createdDateTimestring No Ticket Creation Timestamp integrationstring Yes Integration Name integration.typestring No Integration type integration.idstring Yes Integration id integration.namestring 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 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
Triggered when ticket information is modified
Headers Name Type Required Description x-unizo-event-typestring Yes Event type: ticket:updated x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description typestring Yes Event type identifier versionstring Yes Webhook payload version contentTypestring Yes Branch name/identifier collectionstring Yes Collection name collection.idstring Yes Collection ID collection.namestring Yes Collection Display Name organizationstring Yes Organization name organization.idstring Yes Organization ID organization.namestring Yes Organization Display Name ticketstring Yes Ticket Name ticket.idstring Yes Ticket Id ticket.statestring No Ticket key or number ticket.summarystring Yes Ticket title or summary ticket.createdDateTimestring No Ticket Creation Timestamp ticket.changeLogstring Yes Ticket Change Log ticket.changeLog.updatedDateTimestring Yes Ticket Change Log Updated Timestamp ticket.changeLog.itemsstring Yes Ticket Change Log Items integrationstring Yes Integration Name integration.typestring No Integration type integration.idstring Yes Integration id integration.namestring 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 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
Triggered when a ticket is deleted from the system
Headers Name Type Required Description x-unizo-event-typestring Yes Event type: ticket:deleted x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description typestring Yes Event type identifier versionstring Yes Webhook payload version contentTypestring Yes Branch name/identifier collectionstring Yes Collection name collection.idstring Yes Collection ID collection.namestring Yes Collection Display Name organizationstring Yes Organization name organization.idstring Yes Organization ID organization.namestring Yes Organization Display Name ticketstring Yes Ticket Name ticket.idstring Yes Ticket Id ticket.statestring No Ticket key or number ticket.summarystring Yes Ticket title or summary ticket.createdDateTimestring No Ticket Creation Timestamp integrationstring Yes Integration Name integration.typestring No Integration type integration.idstring Yes Integration id integration.namestring 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 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
Attachment Events
Triggered when a new attachment is added to a ticket
Headers Name Type Required Description x-unizo-event-typestring Yes Event type: attachment:created x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description typestring Yes Event type identifier versionstring Yes Webhook payload version contentTypestring Yes Content type collectionstring Yes Collection name collection.idstring Yes Collection ID collection.namestring Yes Collection Display Name organizationstring Yes Organization name organization.idstring Yes Organization ID organization.namestring Yes Organization Display Name ticketstring Yes Ticket information ticket.idstring Yes Ticket Id ticket.statestring No Ticket state or status ticket.summarystring Yes Ticket title or summary attachmentobject Yes Attachment information attachment.idstring Yes Attachment unique identifier attachment.filenamestring Yes Original filename of the attachment attachment.mimeTypestring No MIME type of the attachment attachment.sizenumber No File size in bytes attachment.urlstring No Download URL for the attachment attachment.createdDateTimestring No Attachment creation timestamp attachment.createdBystring No User who uploaded the attachment integrationstring Yes Integration Name integration.typestring No Integration type integration.idstring Yes Integration id integration.namestring 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 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
Triggered when an attachment is removed from a ticket
Headers Name Type Required Description x-unizo-event-typestring Yes Event type: attachment:deleted x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description typestring Yes Event type identifier versionstring Yes Webhook payload version contentTypestring Yes Content type collectionstring Yes Collection name collection.idstring Yes Collection ID collection.namestring Yes Collection Display Name organizationstring Yes Organization name organization.idstring Yes Organization ID organization.namestring Yes Organization Display Name ticketstring Yes Ticket information ticket.idstring Yes Ticket Id ticket.statestring No Ticket state or status ticket.summarystring Yes Ticket title or summary attachmentobject Yes Attachment information attachment.idstring Yes Attachment unique identifier attachment.filenamestring Yes Original filename of the attachment attachment.mimeTypestring No MIME type of the attachment attachment.sizenumber No File size in bytes attachment.createdDateTimestring No Attachment original creation timestamp attachment.createdBystring No User who originally uploaded the attachment attachment.deletedDateTimestring No Attachment deletion timestamp attachment.deletedBystring No User who deleted the attachment integrationstring Yes Integration Name integration.typestring No Integration type integration.idstring Yes Integration id integration.namestring 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 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
Triggered when a new comment is added to a ticket
Headers Name Type Required Description x-unizo-event-typestring Yes Event type: comment:created x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description typestring Yes Event type identifier versionstring Yes Webhook payload version contentTypestring Yes Content type collectionstring Yes Collection name collection.idstring Yes Collection ID collection.namestring Yes Collection Display Name organizationstring Yes Organization name organization.idstring Yes Organization ID organization.namestring Yes Organization Display Name ticketstring Yes Ticket information ticket.idstring Yes Ticket Id ticket.statestring No Ticket state or status ticket.summarystring Yes Ticket title or summary commentobject Yes Comment information comment.idstring Yes Comment unique identifier comment.bodystring Yes Comment text comment.createdDateTimestring Yes Comment creation timestamp comment.createdBystring Yes User who created the comment integrationstring Yes Integration Name integration.typestring No Integration type integration.idstring Yes Integration id integration.namestring 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 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
Triggered when an existing comment is edited
Headers Name Type Required Description x-unizo-event-typestring Yes Event type: comment:updated x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description typestring Yes Event type identifier versionstring Yes Webhook payload version contentTypestring Yes Content type collectionstring Yes Collection name collection.idstring Yes Collection ID collection.namestring Yes Collection Display Name organizationstring Yes Organization name organization.idstring Yes Organization ID organization.namestring Yes Organization Display Name ticketstring Yes Ticket information ticket.idstring Yes Ticket Id ticket.statestring No Ticket state or status ticket.summarystring Yes Ticket title or summary commentobject Yes Comment information comment.idstring Yes Comment unique identifier comment.bodystring Yes Updated comment text comment.updatedDateTimestring Yes Comment update timestamp comment.updatedBystring Yes User who updated the comment integrationstring Yes Integration Name integration.typestring No Integration type integration.idstring Yes Integration id integration.namestring 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 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
Triggered when an existing comment is deleted from a ticket
Headers Name Type Required Description x-unizo-event-typestring Yes Event type: comment:deleted x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description typestring Yes Event type identifier versionstring Yes Webhook payload version contentTypestring Yes Content type collectionstring Yes Collection name collection.idstring Yes Collection ID collection.namestring Yes Collection Display Name organizationstring Yes Organization name organization.idstring Yes Organization ID organization.namestring Yes Organization Display Name ticketstring Yes Ticket information ticket.idstring Yes Ticket Id ticket.statestring No Ticket state or status ticket.summarystring Yes Ticket title or summary commentobject Yes Comment information comment.idstring Yes Comment unique identifier comment.bodystring No Comment text (if available) comment.deletedDateTimestring Yes Comment deletion timestamp comment.deletedBystring Yes User who deleted the comment integrationstring Yes Integration Name integration.typestring No Integration type integration.idstring Yes Integration id integration.namestring 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 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
User Events
Triggered when a new user is created in the system
Headers Name Type Required Description x-unizo-event-typestring Yes Event type: user:created x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description typestring Yes Event type identifier versionstring Yes Webhook payload version contentTypestring Yes Content type collectionstring Yes Collection name collection.idstring Yes Collection ID collection.namestring Yes Collection Display Name organizationstring Yes Organization name organization.idstring Yes Organization ID organization.namestring Yes Organization Display Name userobject Yes User information user.idstring Yes Unique identifier of the user user.usernamestring Yes Username of the user user.emailstring No Email address of the user user.createdDateTimestring Yes User creation timestamp user.createdBystring No User or system who created the account integrationstring Yes Integration Name integration.typestring No Integration type integration.idstring Yes Integration id integration.namestring 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 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
Triggered when existing user is updated in the system
Headers Name Type Required Description x-unizo-event-typestring Yes Event type: user:updated x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description typestring Yes Event type identifier versionstring Yes Webhook payload version contentTypestring Yes Content type collectionstring Yes Collection name collection.idstring Yes Collection ID collection.namestring Yes Collection Display Name organizationstring Yes Organization name organization.idstring Yes Organization ID organization.namestring Yes Organization Display Name userobject Yes User information user.idstring Yes Unique identifier of the user user.usernamestring Yes Username of the user user.emailstring No Email address of the user user.updatedDateTimestring Yes User creation timestamp user.updatedBystring No User or system who created the account integrationstring Yes Integration Name integration.typestring No Integration type integration.idstring Yes Integration id integration.namestring 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 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
Triggered when a user account is deleted
Headers Name Type Required Description x-unizo-event-typestring Yes Event type: user:deleted x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description typestring Yes Event type identifier versionstring Yes Webhook payload version contentTypestring Yes Content type collectionstring Yes Collection name collection.idstring Yes Collection ID collection.namestring Yes Collection Display Name organizationstring Yes Organization name organization.idstring Yes Organization ID organization.namestring Yes Organization Display Name userobject Yes User information user.idstring Yes Unique identifier of the user user.usernamestring Yes Username of the user user.emailstring No Email address of the user user.deletedDateTimestring Yes User deletion timestamp user.deletedBystring Yes User or system who deleted the account integrationstring Yes Integration Name integration.typestring No Integration type integration.idstring Yes Integration id integration.namestring 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 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
TicketLink Events
Triggered when a new link is created between two tickets/issues
Headers Name Type Required Description x-unizo-event-typestring Yes Event type: link:created x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description typestring Yes Event type identifier versionstring Yes Webhook payload version contentTypestring Yes Content type collectionstring Yes Collection name collection.idstring Yes Collection ID collection.namestring Yes Collection Display Name organizationstring Yes Organization name organization.idstring Yes Organization ID organization.namestring Yes Organization Display Name linkobject Yes Link information link.idstring Yes Link unique identifier link.sourceTicketIdstring Yes Source ticket ID link.targetTicketIdstring Yes Target ticket ID link.linkTypestring Yes Type of link (e.g. relates_to, blocks, duplicates) link.createdDateTimestring Yes Link creation timestamp link.createdBystring Yes User who created the link integrationstring Yes Integration Name integration.typestring No Integration type integration.idstring Yes Integration id integration.namestring 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 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
Triggered when a link between two tickets/issues is removed
Headers Name Type Required Description x-unizo-event-typestring Yes Event type: link:deleted x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description typestring Yes Event type identifier versionstring Yes Webhook payload version contentTypestring Yes Content type collectionstring Yes Collection name collection.idstring Yes Collection ID collection.namestring Yes Collection Display Name organizationstring Yes Organization name organization.idstring Yes Organization ID organization.namestring Yes Organization Display Name linkobject Yes Link information link.idstring Yes Link unique identifier link.sourceTicketIdstring Yes Source ticket ID link.targetTicketIdstring Yes Target ticket ID link.linkTypestring Yes Type of link (e.g. relates_to, blocks, duplicates) link.deletedDateTimestring Yes Link deletion timestamp link.deletedBystring Yes User who deleted the link integrationstring Yes Integration Name integration.typestring No Integration type integration.idstring Yes Integration id integration.namestring 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 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid 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-typestring Yes Event type: ticket:created x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description
Response 200 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
Triggered when Attachment information is modified
Headers Name Type Required Description x-unizo-event-typestring Yes Event type: ticket:created x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description
Response 200 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
Triggered when a Attachment is deleted from the system
Headers Name Type Required Description x-unizo-event-typestring Yes Event type: ticket:created x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description
Response 200 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid 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: