Close
Triggered when a ticket is closed
Event Type
"ticket.close"Description
This event is triggered when a ticket is closed by any means - staff command, button, auto-close, or other methods.
Payload Structure
Prop
Type
Example Payload
{
"type": "ticket.close",
"payload": {
"ticketId": "TKT-1234",
"panelId": "support-panel",
"channel": {
"id": "1140972530400776294",
"name": "ticket-0001"
},
"creatorId": "713115896805064856",
"closerId": "280158289667555328",
"closeReason": "Issue resolved!",
"openDate": "2024-01-18T15:30:00.000Z",
"closeDate": "2024-01-18T16:45:00.000Z",
"transcript": "https://tickety.top/transcripts/GdaWKdWF6A0m1Hs7W9P"
}
}Example Usage
app.post('/webhook', (req, res) => {
const { type, payload } = req.body;
if (type === 'ticket.close') {
const duration = new Date(payload.closeDate) - new Date(payload.openDate);
const hours = Math.floor(duration / (1000 * 60 * 60));
console.log(`Ticket ${payload.ticketId} closed`);
console.log(`Duration: ${hours} hours`);
console.log(`Reason: ${payload.closeReason || 'No reason provided'}`);
if (payload.transcript) {
console.log(`Transcript: ${payload.transcript}`);
// Archive transcript to your system
await archiveTranscript(payload.transcript, payload.ticketId);
}
// Update ticket status in your database
await updateTicketStatus(payload.ticketId, 'closed');
}
res.status(200).send('OK');
});Use Cases
- Archive transcripts to your own storage
- Calculate ticket resolution times
- Update ticket status in external systems
- Send closure notifications
- Generate analytics on close reasons