Skip to content

Webhooks

Webhooks let GateKeeper push notifications to Discord, Slack, Telegram, ntfy, a generic HTTP endpoint, or an email address whenever an auth or admin event occurs.

Go to /admin/webhooks and click Add webhook. Choose a type, fill in the required fields, and optionally restrict which events it receives.

By default a webhook receives all events. To restrict it, check only the events you care about in the Events section of the dialog.

Paste a Discord webhook URL. GateKeeper sends an embed with a colour-coded status (green for success, yellow for warning, red for failure).

Required: Webhook URL from your Discord channel settings.

Paste an incoming webhook URL from your Slack app configuration.

Required: Webhook URL (starts with https://hooks.slack.com/).

GateKeeper uses the Telegram Bot API to send messages to a chat or channel.

Required:

  • Bot token - from BotFather, format 123456:ABC...
  • Chat ID - your chat or channel ID (use @username or a numeric ID like -100123456789)

Posts to the public ntfy.sh service.

Required: Topic name (e.g. my-gatekeeper-alerts). Messages go to https://ntfy.sh/{topic}.

Posts to your own ntfy instance with optional Basic authentication.

Required:

  • URL - base URL of your ntfy server (e.g. https://ntfy.example.com)
  • Topic - topic name
  • Username / Password - optional, only if your instance requires auth

Posts a JSON object to any HTTP endpoint.

Payload:

{
"event": "login.failure",
"user_id": "abc123",
"ip": "1.2.3.4",
"detail": "",
"timestamp": 1716000000,
"source": "gatekeeper"
}

Required: Webhook URL (must accept POST with Content-Type: application/json).

Sends a plain-text email using the SMTP settings configured in Settings.

Required: Recipient email address. SMTP must be configured first.


CategoryEventDescription
Authlogin.successUser logged in with password
Authlogin.failureFailed login attempt
Authlogin.passkeyUser logged in with a passkey
Authotp.failedEmail OTP verification failed
Authtotp.failedAuthenticator code failed
Authtotp.recovery_usedRecovery code consumed
Accountpassword.changedUser changed their password
Accounttotp.enrolledAuthenticator app set up
Accounttotp.revokedAuthenticator app removed
Accountpasskey.registeredNew passkey added
Accountpasskey.revokedPasskey removed
Accountpassword.reset_requestedReset link sent
Accountpassword.reset_completedPassword reset via link
Adminuser.createdNew user account created
Adminuser.disabledAccount disabled
Adminuser.enabledAccount re-enabled
Adminadmin.password_setAdmin directly set a user password
Adminsession.revokedSessions terminated by admin

Click the arrow button on any webhook row to send a test.ping notification immediately. The page shows whether it succeeded or failed.

Click the toggle button on a webhook row to enable or disable it without deleting it. Disabled webhooks receive no notifications.