🎉 Tickety V3 has now been released! Read more →
APIHTTP EventsTicket Events

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

On this page