Skip to content

Webhooks and alerts

Send what happens in your panel to another service, and get told when something breaks.

License required

Webhooks, integrations, and alert subscriptions need the Webhooks license feature. Without it, only the Modifications tab opens.

A webhook sends an HTTP request to an external service when a panel event happens. Use a webhook with Discord, Slack, or your own application.

Navigate to Admin > Settings > General, then click the Webhooks tab. The page title reads Webhooks & Integrations.

The page has four tabs: Webhooks, Integrations, Alerts, and Modifications.

TIP

The old address /admin/alerts still works. It redirects to this page and opens the Alerts tab.

Webhooks tab

Webhook types

TypeDescription
DiscordSends a formatted message to a Discord channel through a Discord webhook URL.
SlackSends a structured message to a Slack channel through a Slack incoming webhook URL.
CustomSends a JSON payload to any HTTP endpoint.

Creating a webhook

  1. Click Add Webhook.
  2. Enter a Name.
  3. Choose the Type: Discord, Slack, or Custom.
  4. Enter the URL:
    • For Discord, use the webhook URL from the integration settings of the channel.
    • For Slack, use the incoming webhook URL of your Slack app.
    • For Custom, use any endpoint that accepts a POST request.
  5. For a custom webhook, enter a Secret. This field is optional. With a secret, the panel signs each request.
  6. Set the Enabled switch.
  7. Select the Events. Click a category header to select the whole category, or click each event chip.
  8. Click Create Webhook.

Event types

CategoryEvents
Serverserver.started, server.stopped, server.crashed, server.created, server.deleted, server.installed
Billingbilling.payment_success, billing.payment_failed, billing.invoice_due
Securitysecurity.login, security.2fa_enabled, security.2fa_disabled
Useruser.created, user.deleted
Nodenode.connected, node.disconnected
Wildcardserver.*, billing.*, security.*, user.*, node.*, *

A wildcard subscribes to every event in that category. A single * subscribes to everything.

Select only the events that the endpoint needs. Extra events add traffic.

Managing a webhook

Each row shows the name, the type, the state, the URL, and the first five events. A toggle turns the webhook on and off. Three icons hold the actions:

  • Send test - sends a test message to the URL. The webhook must be enabled.
  • Edit - opens the form again.
  • Delete - removes the webhook after you confirm.

Delivery

The panel sends one HTTP POST request for each event. The request times out after 10 seconds. Your endpoint must answer with a 2xx status code.

The panel records every delivery attempt. A record holds the event name, the time, the status code, and the error text of a failure.

A delivery fails in three cases: a timeout, a refused connection, or an error status. The panel then retries the delivery. Each retry waits longer than the one before it. After the last retry, the panel marks the delivery as failed and keeps the record.

Use Send test to check that the endpoint is reachable before you rely on an event.

Integrations tab

This tab holds two service connections.

WHMCS

Read WHMCS Integration for the full detail.

FieldDescription
WHMCS URLThe base address of your WHMCS installation.
API IdentifierYour WHMCS API credential identifier.
API SecretThe secret for that identifier. Leave it blank to keep the stored value.
Sync Interval (minutes)How often the panel syncs. The range is 5 to 1440.

The Ticket Sync section holds a switch. When it is on, two more controls appear:

  • Sync Direction - Bidirectional, Panel to WHMCS only, or WHMCS to panel only.
  • Import Existing - pulls the open WHMCS tickets that the panel has not seen. The switch clears itself after the first successful import.

Buttons: Test Connection, and Sync Tickets Now when ticket sync is on.

Stripe

FieldDescription
Publishable KeyThe Stripe publishable key.
Secret KeyThe Stripe secret key. Leave it blank to keep the stored value.
Webhook SecretThe signing secret of your Stripe webhook endpoint. Point Stripe at /api/webhooks/stripe on your panel.

Click Test Connection to check the credentials. Click Save Changes to store the tab.

Alerts tab

An alert subscription connects one panel event to one destination. Create one row per destination.

Click Browse events to read the catalogue. Click a row in the catalogue to start a subscription for that event.

Alert events

EventMeaning
server.downA server stopped answering health checks.
server.upA server came back after it was down.
server.install.failedA server install or reinstall failed.
server.backup.completedA backup finished. This event covers success and failure.
server.crashThe daemon detected an unclean exit.
incident.openedA new incident was logged.
incident.resolvedAn incident moved to resolved.
node.offlineA node stopped its heartbeat.
node.onlineA node reconnected.
node.alertA monitoring rule fired on a node.
trigger.firedA server console trigger matched.
ipmi.alertA hardware alert arrived from a node.
*Every event. Use this option with care.

WARNING

These events are not the same as the webhook events in the first tab. The two lists do not overlap.

Creating a subscription

  1. Click New subscription.
  2. Choose the Event type. Choose Custom event... to type your own event name.
  3. Choose the Channel:
    • in_panel - a notification inside the panel.
    • smtp - an email.
    • discord - a Discord webhook URL.
    • webhook - any HTTP endpoint.
  4. Set the Target:
    • For in_panel, choose Broadcast to all admins, or choose Specific user and search for the account.
    • For smtp, enter an email address.
    • For discord or webhook, enter the URL.
  5. Set the Throttle (seconds). The panel then waits this long before it sends the same alert again. A value of 0 turns throttling off.
  6. Tick Enabled.
  7. Click Save.

The subscription table

ColumnDescription
EventThe event name. A disabled row shows "(disabled)".
ChannelThe destination type.
TargetThe user, the address, or the URL.
ThrottleThe throttle in seconds, or a dash.
Last firedThe time of the last alert, or "never".

Each row holds Test, Edit, and Delete. Test sends a real alert to the destination.

TIP

An alert subscription has no threshold and no severity filter. The throttle is the only tuning control.

Modifications tab

This tab holds the API keys for the mod sources that the Mod Manager reads. It works without the Webhooks license feature.

The tab holds one entry:

ServiceDescription
CurseForgeAn API key turns on mod and modpack search from CurseForge. Get the key from the CurseForge Console.

Without a CurseForge key, the Minecraft Mod Manager searches Modrinth, Spigot, and Hangar only.

The same card also appears on its own page at Admin > Settings > Integrations. That page has no navigation entry. Reach it from the admin search box.

Next steps

BadgerPanel Documentation