TicketWave Logo
Webhooks

Händelsereferens

Varje webhook-händelsetyp och den exakta payload som TicketWave skickar.

Händelsereferens

Sex händelsetyper kan prenumereras på per endpoint. Varje begäran använder samma kuvert — event, timestamp, guild_id och data — och endast data-objektet skiljer sig åt.

EventUtlöses när
ticket.createdEtt ärende öppnas
ticket.closedEtt ärende stängs
ticket.updatedNågot annat ändras i ett öppet ärende
message.sentEn medlem eller personal skriver i ett ärende
blacklist.addedEn medlem svartlistas
blacklist.removedEn svartlistpost tas bort

Fält som inte kan lösas skickas som null i stället för att utelämnas — så du kan lita på att nycklarna finns. Ett username är null när Discord inte returnerade användaren.

Delade fält

Varje ärendehändelse innehåller dessa:

FieldTypeDescription
ticket_idstringDet läsbara ärende-ID:t från ditt mönster, t.ex. ticket-1042
ticket_num_idnumberDet löpande ärendenumret, t.ex. 1042
channel_idstringDiscord-kanalen för ärendet
categorystring | nullKategorinamn, null om ärendet saknar kategori
userobject | nullÄrendets ägare som { id, username }

ticket.created

Skickas direkt efter att ärendekanalen finns.

{
  "event": "ticket.created",
  "timestamp": "2026-08-26T08:23:11.000Z",
  "guild_id": "123456789012345678",
  "data": {
    "ticket_id": "ticket-1042",
    "ticket_num_id": 1042,
    "channel_id": "998877665544332211",
    "category": "🤖 Support",
    "user": { "id": "987654321098765432", "username": "Luna" },
    "created_at": "2026-08-26T08:23:11.000Z"
  }
}

Detta utlöses när ärendet öppnas, alltså innan medlemmen har skrivit något. Om du behöver det första meddelandet, lyssna även på message.sent.


ticket.closed

{
  "event": "ticket.closed",
  "timestamp": "2026-08-26T07:45:02.000Z",
  "guild_id": "123456789012345678",
  "data": {
    "ticket_id": "ticket-1041",
    "ticket_num_id": 1041,
    "channel_id": "998877665544332211",
    "category": "💸 Payment",
    "user": { "id": "987654321098765432", "username": "Luna" },
    "closed_by": { "id": "112233445566778899", "username": "Staff_01" },
    "reason": "Issue resolved",
    "closed_at": "2026-08-26T07:45:02.000Z"
  }
}
FieldTypeDescription
closed_byobjectVem som stängde det. Automatiska stängningar rapporterar boten
reasonstring | nullOrsaken till stängningen, null om ingen angavs

ticket.updated

Samlingshändelsen för ändringar i ett öppet ärende. action talar om vad som ändrades, changes innehåller detaljerna för just den åtgärden.

{
  "event": "ticket.updated",
  "timestamp": "2026-08-26T14:02:19.000Z",
  "guild_id": "123456789012345678",
  "data": {
    "ticket_id": "ticket-1038",
    "ticket_num_id": 1038,
    "channel_id": "998877665544332211",
    "category": "🤖 Support",
    "user": { "id": "987654321098765432", "username": "Luna" },
    "action": "ticket_priority:add",
    "changes": { "priority": "high" },
    "reason": null,
    "updated_by": { "id": "112233445566778899", "username": "Staff_01" }
  }
}

Möjliga action-värden

actionBetydelsechanges innehåller
ticket_claim:addEn personalmedlem tog över ärendet(tomt)
ticket_unclaim:addÖvertagandet släpptes(tomt)
ticket_priority:addPrioriteten ändradespriority
ticket_rename:addKanalen döptes omnew_name
ticket_remind:addEn påminnelse skickades(tomt)
ticket_feedback:addMedlemmen betygsatte ärendetstar_count, feedback
ticket_schedule_close:addEn stängning schemaladesduration, schedule_time
ticket_request_close:addPersonalen bad medlemmen att stängaduration, request_duration_time
ticket_request_close_accept:addMedlemmen accepterade(tomt)
ticket_request_close_deny:addMedlemmen avböjde(tomt)
ticket_close_cancel:addEn pågående stängning avbröts(tomt)
ticket_additional_access:addEn användare eller roll lades till i ärendetentity_type, entity_id, reason
ticket_additional_access:removeEn användare eller roll togs bortentity_type, entity_id, reason

Se den här listan som öppen. Nya åtgärder läggs till i takt med att TicketWave växer, och de kommer som ticket.updated. Växla på de actions du bryr dig om och ignorera resten i stället för att kasta fel på okända värden.

Att svara på ett ärendesteg genererar inte någon händelse. Ett ärende med många steg skulle annars översvämma din endpoint medan medlemmen fortfarande fyller i formuläret.


message.sent

Skickas för varje mänskligt meddelande i ett öppet ärende. Meddelanden från bottar — inklusive TicketWave själv — hoppas över.

{
  "event": "message.sent",
  "timestamp": "2026-08-26T22:10:55.000Z",
  "guild_id": "123456789012345678",
  "data": {
    "ticket_id": "ticket-1040",
    "ticket_num_id": 1040,
    "channel_id": "998877665544332211",
    "message_id": "1234567890123456789",
    "content": "Hello, how can I help you?",
    "author": { "id": "112233445566778899", "username": "Staff_01" },
    "is_staff": true,
    "sent_at": "2026-08-26T22:10:55.000Z"
  }
}
FieldTypeDescription
contentstringDen råa meddelandetexten. Tom för meddelanden som bara innehåller bilagor
authorobject{ id, username } för avsändaren
is_staffbooleantrue om avsändaren har en konfigurerad supportroll

Detta är med stor marginal händelsen med högst volym — en upptagen server genererar en begäran per meddelande. Prenumerera bara på den om du verkligen behöver data på meddelandenivå, och se till att din mottagare svarar snabbt.


blacklist.added

Inte kopplad till ett ärende, så den här payloaden har inget ticket_id.

{
  "event": "blacklist.added",
  "timestamp": "2026-08-26T18:33:47.000Z",
  "guild_id": "123456789012345678",
  "data": {
    "user": { "id": "111223344556677889", "username": "BadActor" },
    "reason": "Spam",
    "added_by": { "id": "112233445566778899", "username": "Staff_01" }
  }
}

blacklist.removed

{
  "event": "blacklist.removed",
  "timestamp": "2026-08-26T18:40:12.000Z",
  "guild_id": "123456789012345678",
  "data": {
    "user": { "id": "111223344556677889", "username": "BadActor" },
    "removed_by": { "id": "112233445566778899", "username": "Staff_01" }
  }
}

Testhändelser

Knappen Send test event levererar en riktig, signerad begäran vars data bara är:

{
  "event": "ticket.created",
  "timestamp": "2026-08-26T12:00:00.000Z",
  "guild_id": "123456789012345678",
  "data": { "test": true }
}

event är den första typen som endpointen prenumererar på. Kontrollera data.test om du vill hoppa över testleveranser i produktionslogik.

Nästa steg

How is this guide?