Skip to main content
Dokploy supports multiple notification channels to keep you informed about deployment status, monitoring alerts, and system events. Configure notifications to receive real-time alerts via Slack, Discord, Telegram, Email, and other services.

Supported Notification Services

Dokploy integrates with the following notification providers:
  • Slack: Send messages to Slack channels
  • Discord: Post notifications to Discord channels via webhooks
  • Telegram: Send messages via Telegram bot
  • Email (SMTP): Send emails using custom SMTP server
  • Resend: Send emails using Resend API
  • Gotify: Push notifications to self-hosted Gotify server
  • Ntfy: Publish notifications to ntfy.sh or self-hosted instance
  • Lark: Send messages to Lark (Feishu) chat groups
  • Microsoft Teams: Post adaptive cards to Teams channels
  • Pushover: Send push notifications to mobile devices
  • Custom Webhook: POST notifications to custom HTTP endpoints

Notification Setup

Accessing Notifications

  1. Navigate to Settings > Notifications
  2. Click Add Notification
  3. Select your notification provider
  4. Configure provider-specific settings
  5. Test the connection
  6. Save the notification

Slack Configuration

Send notifications to Slack channels using webhook URLs.

Setup Steps

  1. Create a Slack App in your workspace
  2. Enable Incoming Webhooks
  3. Copy the webhook URL
  4. Configure in Dokploy

Configuration Options

{
  "name": "Production Alerts",
  "webhookUrl": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXX",
  "channel": "#deployments"
}
FieldRequiredDescription
nameYesIdentifier for this notification
webhookUrlYesSlack webhook URL
channelYesTarget Slack channel (e.g., #deployments)

Example Notification

When a threshold is exceeded:
⚠️ Server Alert
CPU usage (85.50%) exceeded threshold (80.00%)
Server: Dokploy
Timestamp: 2024-01-19 10:30:45 UTC

Testing Connection

await api.notification.testSlackConnection.mutate({
  webhookUrl: "https://hooks.slack.com/services/...",
  channel: "#test"
});
// Sends: "Hi, From Dokploy 👋"

Discord Configuration

Post notifications to Discord channels using webhook URLs.

Setup Steps

  1. Open Discord channel settings
  2. Navigate to Integrations > Webhooks
  3. Create new webhook
  4. Copy webhook URL
  5. Configure in Dokploy

Configuration Options

{
  "name": "Discord Alerts",
  "webhookUrl": "https://discord.com/api/webhooks/1234567890/ABCDEFGHIJK",
  "decoration": true
}
FieldRequiredDescription
nameYesIdentifier for this notification
webhookUrlYesDiscord webhook URL
decorationNoAdd decoration to messages (default: false)

Example Notification

Discord notifications appear as embedded messages:
🤚 Test Notification
Hi, From Dokploy 👋

⚠️ CPU Alert
CPU usage (85.50%) exceeded threshold (80.00%)
Server: Dokploy
Timestamp: 2024-01-19T10:30:45.000Z

Testing Connection

await api.notification.testDiscordConnection.mutate({
  webhookUrl: "https://discord.com/api/webhooks/...",
  decoration: true
});

Telegram Configuration

Send notifications via Telegram bot.

Setup Steps

  1. Create a bot using @BotFather
  2. Get bot token from BotFather
  3. Get your chat ID (use @userinfobot)
  4. Configure in Dokploy

Configuration Options

{
  "name": "Telegram Notifications",
  "botToken": "1234567890:ABCdefGHIjklMNOpqrsTUVwxyz",
  "chatId": "-1001234567890"
}
FieldRequiredDescription
nameYesIdentifier for this notification
botTokenYesTelegram bot token from BotFather
chatIdYesChat ID (user, group, or channel)

Example Notification

Hi, From Dokploy 👋

⚠️ Memory Alert
Memory usage (87.50%) exceeded threshold (85.00%)
Server: Dokploy
Time: 2024-01-19 10:30:45 UTC

Testing Connection

await api.notification.testTelegramConnection.mutate({
  botToken: "1234567890:ABC...",
  chatId: "-1001234567890"
});

Email (SMTP) Configuration

Send notifications via custom SMTP server.

Configuration Options

{
  "name": "Email Alerts",
  "smtpServer": "smtp.gmail.com",
  "smtpPort": 587,
  "username": "[email protected]",
  "password": "your-app-password",
  "fromAddress": "[email protected]",
  "toAddresses": ["[email protected]", "[email protected]"]
}
FieldRequiredDescription
nameYesIdentifier for this notification
smtpServerYesSMTP server hostname
smtpPortYesSMTP port (usually 587 for TLS, 465 for SSL)
usernameYesSMTP authentication username
passwordYesSMTP authentication password
fromAddressYesSender email address
toAddressesYesArray of recipient email addresses

Common SMTP Servers

ProviderSMTP ServerPortTLS
Gmailsmtp.gmail.com587Yes
Outlooksmtp-mail.outlook.com587Yes
SendGridsmtp.sendgrid.net587Yes
Mailgunsmtp.mailgun.org587Yes
Customyour-server.com587/465Varies

Testing Connection

await api.notification.testEmailConnection.mutate({
  smtpServer: "smtp.gmail.com",
  smtpPort: 587,
  username: "[email protected]",
  password: "app-password",
  fromAddress: "[email protected]",
  toAddresses: ["[email protected]"]
});
// Sends test email: "Hi, From Dokploy 👋"

Resend Configuration

Send emails using the Resend API (recommended for transactional emails).

Setup Steps

  1. Sign up at resend.com
  2. Create an API key
  3. Verify your domain
  4. Configure in Dokploy

Configuration Options

{
  "name": "Resend Notifications",
  "apiKey": "re_123456789",
  "fromAddress": "[email protected]",
  "toAddresses": ["[email protected]"]
}
FieldRequiredDescription
nameYesIdentifier for this notification
apiKeyYesResend API key
fromAddressYesVerified sender email address
toAddressesYesArray of recipient email addresses

Testing Connection

await api.notification.testResendConnection.mutate({
  apiKey: "re_123456789",
  fromAddress: "[email protected]",
  toAddresses: ["[email protected]"]
});

Gotify Configuration

Send push notifications to self-hosted Gotify server.

Configuration Options

{
  "name": "Gotify Alerts",
  "serverUrl": "https://gotify.yourdomain.com",
  "token": "AzHgQwerTyuiop"
}
FieldRequiredDescription
nameYesIdentifier for this notification
serverUrlYesGotify server URL
tokenYesGotify application token

Ntfy Configuration

Publish notifications to ntfy.sh or self-hosted instance.

Configuration Options

{
  "name": "Ntfy Alerts",
  "topic": "dokploy-alerts",
  "serverUrl": "https://ntfy.sh",
  "username": "optional-username",
  "password": "optional-password"
}
FieldRequiredDescription
nameYesIdentifier for this notification
topicYesNtfy topic name
serverUrlNoCustom ntfy server URL (default: ntfy.sh)
usernameNoBasic auth username
passwordNoBasic auth password

Testing Connection

await api.notification.testNtfyConnection.mutate({
  topic: "dokploy-alerts",
  serverUrl: "https://ntfy.sh"
});

Lark (Feishu) Configuration

Send messages to Lark chat groups.

Configuration Options

{
  "name": "Lark Notifications",
  "webhookUrl": "https://open.feishu.cn/open-apis/bot/v2/hook/..."
}
FieldRequiredDescription
nameYesIdentifier for this notification
webhookUrlYesLark bot webhook URL

Microsoft Teams Configuration

Post notifications to Teams channels.

Configuration Options

{
  "name": "Teams Alerts",
  "webhookUrl": "https://outlook.office.com/webhook/..."
}
FieldRequiredDescription
nameYesIdentifier for this notification
webhookUrlYesTeams incoming webhook URL

Pushover Configuration

Send push notifications to mobile devices.

Configuration Options

{
  "name": "Pushover Alerts",
  "apiToken": "your-app-token",
  "userKey": "your-user-key"
}
FieldRequiredDescription
nameYesIdentifier for this notification
apiTokenYesPushover application token
userKeyYesPushover user key

Custom Webhook Configuration

Send notifications to custom HTTP endpoints.

Configuration Options

{
  "name": "Custom Webhook",
  "webhookUrl": "https://api.yourdomain.com/webhooks/dokploy",
  "method": "POST",
  "headers": {
    "Authorization": "Bearer your-token",
    "Content-Type": "application/json"
  }
}
FieldRequiredDescription
nameYesIdentifier for this notification
webhookUrlYesTarget webhook URL
methodNoHTTP method (default: POST)
headersNoCustom HTTP headers

Webhook Payload

Dokploy sends notifications in this format:
{
  "title": "CPU Alert",
  "message": "CPU usage (85.50%) exceeded threshold (80.00%)",
  "timestamp": "2024-01-19T10:30:45.000Z"
}

Notification Events

Dokploy sends notifications for the following events:

Monitoring Alerts

Triggered when metrics exceed configured thresholds:
  • CPU Threshold Exceeded: When CPU usage goes above the configured limit
  • Memory Threshold Exceeded: When memory usage goes above the configured limit
Example payload sent to notification endpoint:
{
  ServerType: "Dokploy",
  Type: "CPU",
  Value: 85.5,
  Threshold: 80,
  Message: "CPU usage (85.50%) exceeded threshold (80.00%)",
  Timestamp: "2024-01-19T10:30:45.000Z",
  Token: "your-secure-token"
}

Setting Up Threshold Notifications

  1. Configure monitoring thresholds in Settings > Monitoring:
{
  "thresholds": {
    "cpu": 80,      // Alert when CPU > 80%
    "memory": 85    // Alert when Memory > 85%
  }
}
  1. Set callback URL to Dokploy’s notification endpoint:
http://localhost:3000/api/trpc/notification.receiveNotification
  1. Configure notification providers to receive the alerts
Setting a threshold to 0 disables notifications for that metric.

Managing Notifications

List All Notifications

View all configured notifications:
const notifications = await api.notification.all.query();
Returns array of notifications with provider details.

Update Notification

Modify existing notification configuration:
await api.notification.updateSlack.mutate({
  notificationId: "notif-id",
  webhookUrl: "https://hooks.slack.com/services/...",
  channel: "#new-channel"
});

Delete Notification

Remove a notification:
await api.notification.remove.mutate({
  notificationId: "notif-id"
});

Best Practices

  1. Test Connections: Always test notifications after configuration to ensure they work
  2. Use Descriptive Names: Give notifications clear names to identify their purpose
  3. Separate Channels: Use different channels for different alert types (e.g., #deployments, #critical-alerts)
  4. Set Appropriate Thresholds: Configure thresholds that match your normal operating ranges
  5. Avoid Alert Fatigue: Don’t set thresholds too low or you’ll receive too many notifications
  6. Secure Credentials: Store notification credentials securely and rotate them regularly
  7. Monitor Notification Delivery: Verify that critical alerts are being received
  8. Use Multiple Channels: Configure redundant notification channels for critical alerts

Troubleshooting

Notifications Not Sending

  1. Verify configuration: Check webhook URLs, tokens, and credentials
  2. Test connection: Use the test button to verify the provider is reachable
  3. Check permissions: Ensure bot/app has permission to post in target channel
  4. Verify thresholds: Make sure monitoring thresholds are properly configured
  5. Check callback URL: Ensure the urlCallback points to the correct endpoint

Slack Issues

  • Invalid webhook: Generate a new webhook URL in Slack settings
  • Channel not found: Verify the channel name includes the # symbol
  • Permission denied: Add the Slack app to the target channel

Discord Issues

  • Webhook expired: Create a new webhook in Discord channel settings
  • Rate limited: Discord limits webhook calls; reduce notification frequency

Telegram Issues

  • Invalid bot token: Verify token from @BotFather
  • Wrong chat ID: Use @userinfobot to get correct chat ID
  • Bot not in group: Add the bot to the group/channel first

Email Issues

  • Authentication failed: Check username/password or use app-specific password
  • Connection timeout: Verify SMTP server and port are correct
  • TLS errors: Try different ports (587 for STARTTLS, 465 for SSL)

Example Notification Flow

  1. Monitoring service detects CPU usage at 85%
  2. Threshold check compares against configured limit (80%)
  3. Notification triggered with alert details
  4. Callback URL receives POST request with alert payload
  5. Dokploy routes notification to configured providers
  6. Messages sent to Slack, Discord, Telegram, etc.
  7. Team receives alerts and can respond to the issue

Next Steps

Build docs developers (and LLMs) love