Skip to main content
Kener can post alert notifications to Slack, Discord, and arbitrary HTTP endpoints. All three use the same delivery mechanism — an HTTP POST to a URL — but each has its own default payload format.

Slack setup

Kener posts to Slack using an Incoming Webhook. Each webhook URL is tied to a specific channel.
1

Create a Slack app and enable incoming webhooks

  1. Go to api.slack.com/apps and click Create New App → From scratch.
  2. Name the app (e.g. “Kener Alerts”) and pick a workspace.
  3. In the left sidebar, click Incoming Webhooks and toggle Activate Incoming Webhooks on.
2

Add a webhook to a channel

Click Add New Webhook to Workspace, pick the channel you want alerts in, and click Allow.Copy the webhook URL — it looks like:
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
3

Create a Slack trigger in Kener

  1. In the Kener admin dashboard, go to Triggers → New Trigger.
  2. Set Trigger Type to slack.
  3. Paste the webhook URL into the URL field.
  4. Give the trigger a Name and click Create Trigger.
4

Test the trigger

After saving, click Test Trigger. Kener sends a sample TRIGGERED notification to the channel.

Default Slack payload

Kener uses Slack’s Block Kit format by default:
{
  "blocks": [
    {
      "type": "header",
      "text": {
        "type": "plain_text",
        "text": "{{#is_triggered}}🚨 Alert Triggered{{/is_triggered}}{{#is_resolved}}✅ Alert Resolved{{/is_resolved}}",
        "emoji": true
      }
    },
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "*{{alert_name}}*"
      }
    },
    {
      "type": "divider"
    },
    {
      "type": "section",
      "fields": [
        { "type": "mrkdwn", "text": "*Status:*\n{{alert_status}}" },
        { "type": "mrkdwn", "text": "*Severity:*\n{{alert_severity}}" },
        { "type": "mrkdwn", "text": "*Alert Type:*\n{{alert_for}}" },
        { "type": "mrkdwn", "text": "*Alert Value:*\n{{alert_value}}" },
        { "type": "mrkdwn", "text": "*Failure Threshold:*\n{{alert_failure_threshold}}" },
        { "type": "mrkdwn", "text": "*Success Threshold:*\n{{alert_success_threshold}}" }
      ]
    },
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "*Message:*\n{{alert_message}}"
      }
    },
    {
      "type": "context",
      "elements": [
        { "type": "mrkdwn", "text": "🕐 *Time:* {{alert_timestamp}}" },
        { "type": "mrkdwn", "text": "🆔 *Alert ID:* {{alert_id}}" }
      ]
    },
    {
      "type": "divider"
    },
    {
      "type": "actions",
      "elements": [
        {
          "type": "button",
          "text": { "type": "plain_text", "text": "{{alert_cta_text}}", "emoji": true },
          "url": "{{alert_cta_url}}",
          "style": "{{#is_triggered}}danger{{/is_triggered}}{{#is_resolved}}primary{{/is_resolved}}"
        }
      ]
    },
    {
      "type": "context",
      "elements": [
        { "type": "mrkdwn", "text": "Sent from *{{site_name}}* monitoring system" }
      ]
    }
  ]
}
You can replace this with your own Block Kit JSON in the Custom Slack Payload field when editing the trigger.

Attach a trigger to an alert config

All three channel types attach to alert configs the same way:
  1. Go to Alerts → Create Alert (or edit an existing one).
  2. Configure the monitor, condition, and thresholds.
  3. Under Notification Triggers, check the trigger(s) you want to notify.
  4. Click Create Alert.
See alert triggers for the full steps and field reference.

Troubleshooting

Check that the alert config is Active (the toggle on the alerts list). Also confirm that the monitor has reached the failure_threshold number of consecutive failures — Kener does not send a notification on the first failure if the threshold is greater than 1.
The payload is not valid Block Kit JSON. Check that your custom template is valid JSON and that Mustache conditionals don’t break the structure. Test with the default template first to confirm the webhook URL is correct.
The webhook URL is invalid or has been deleted. Go back to Discord server settings, regenerate the webhook, and update the trigger URL.
Kener logs the response status and body to the console when delivery fails. Check your server logs. Common causes: missing authentication header, wrong content type expected by the endpoint, or payload schema mismatch.

Build docs developers (and LLMs) love