# Dispatch Webhooks
Dispatch webhooks are a way to get notified when you update your system information on PluralKit. It can be used for integrations where you want to perform some action when you run a bot command on Discord, but also don't want to (or can't) set up a Discord bot to listen to messages.
You will need a publicly-accessible webserver that can receive and process JSON-formatted POST requests.
On the internet, security is important! Don't skip this section.
To get dispatch events from PluralKit, you must set up a public HTTP endpoint. As such, anyone who knows the URL to the endpoint - not only PluralKit - can send POST requests and "pretend" to be PluralKit.
For this reason, when you register a webhook URL, PluralKit generates a secret token, and then includes it with every event sent to you in the
signing_token key. If you receive an event with an invalid
signing_token, you must stop processing the request and respond with a 401 status code.
PluralKit will send invalid requests to your endpoint, with
PING event type, once in a while to confirm that you are correctly validating requests.
# Dispatch Event Model
|signing_token||string||the signing token for your webhook URL|
|system_id||string||the system ID associated with this event|
|id||string?||the ID of the entity referenced by the event (can be a system/member/group/switch/Discord user ID)|
# Dispatch Events
|name||description||content of ||notes|
|PING||PluralKit is checking if your webhook URL is working.||null||Reply with a 200 status code if the |
|UPDATE_SYSTEM||your system was updated||system object only containing modififed keys|
|UPDATE_SETTINGS||your bot settings were updated||system settings object only containing modified keys|
|CREATE_MEMBER||a new member was created||member object only containing ||new member ID can be found in the top-level |
|UPDATE_MEMBER||a member was updated||member object only containing modified keys||member ID can be found in the top-level |
|DELETE_MEMBER||a member was deleted||null||old member ID can be found in the top-level |
|CREATE_GROUP||a new group was created||group object only containing ||new group ID can be found in the top-level |
|UPDATE_GROUP||a group was updated||group object only containing modified keys||group ID can be found in the top-level |
|UPDATE_GROUP_MEMBERS||the member list of a group was updated||unknown||This event is currently non-functional|
|DELETE_GROUP||a group was deleted||null||old group ID can be found in the top-level |
|LINK_ACCOUNT||a new Discord account was linked to your system||null||new account ID can be found in the top-level |
|UNLINK_ACCOUNT||a Discord account was unlinked from your system||null||old account ID can be found in the top-level |
|UPDATE_SYSTEM_GUILD||your system settings in a specific server were updated||system guild settings with only modified keys|
|UPDATE_MEMBER_GUILD||the settings for a member in a specific server were updated||member guild settings with only modified keys|
|CREATE_MESSAGE||a message was sent||message object|
|CREATE_SWITCH||a new switch was logged||switch object|
|UPDATE_SWITCH||a switch was updated||switch object with only modified keys|
|DELETE_SWITCH||a switch was deleted||null||old switch ID can be found in top-level |
|DELETE_ALL_SWITCHES||your system's switches were bulk deleted||null|
|SUCCESSFUL_IMPORT||some information was successfully imported through the ||null|