We will attempt to make a POST request to your configured URL in the webhooks page when editing your server.

Authentication

Webhooks use a separate token for verifying that requests are genuinely from us. To confirm the authenticity of a webhook request, check the Authorization header and ensure it matches the webhook token provided on the webhooks page when editing your server.

Acknowledging Webhook Requests

Your server must respond to webhook requests with a 200 OK status code to confirm successful receipt of the request. This acknowledgment must be sent within 5 seconds, or the request will time out.

Webhook requests which fail, except when there is no configured webhook, will be retried up to 10 times. The retry delay increases exponentially with each attempt starting at 1 second and doubling on each retry, up to a maximum delay of 20 minutes by the tenth retry. If a timeout occurs or the server returns a 5XX error, the request will be retried. However, if no webhook URL is found, retries are skipped.

Schema

Vote Webhook

{
    event: "vote", // Event that occurred
    guildId: string, // Guild ID this event was from
    double: boolean, // Whether the vote was worth double
    user: {
        id: string, // Discord ID of the voter
        discord: boolean, // Whether the vote was with the command
        avatar?: string | null, // Discord avatar hash of the user
        global_name?: string | null, // The user's global Discord name
        username?: string // The user's Discord username
    }
}

avatar, global_name and username will only be provided if discord is true

Review Webhook

{
    event: "review", // Event that occurred
    guildId: string, // Guild ID this event was from
    id: string, // The ID of this review
    authorId: string, // Discord ID of the author
    content: string, // Content of the review
    rating: number // Rating of the review
}

Reply Webhook

{
    event: "reply", // Event that occurred
    guildId: string, // Guild ID this event was from
    id: string, // The ID of this reply
    isGuildReply: boolean, // Whether this reply was from the guild
    authorId: string | null, // Discord ID of the author
    content: string // Content of the reply
}

authorId will only be null if the reply was created through the API