Slack Alert Setup Guide

← Back to Help

Overview

DeadQueue sends alerts to Slack via Incoming Webhooks. When a queue's status changes (e.g., OK → WARNING, or CRITICAL → RESOLVED), a formatted message is posted to your chosen Slack channel with the queue name, depth, oldest message age, and a link to the runbook if one is configured.

This guide walks through the complete setup from scratch. It takes about 5 minutes.

Step 1: Create a Slack App

Slack requires a "Slack App" to use webhooks. If your workspace already has one you can reuse, skip to Step 2.

  1. Go to api.slack.com/apps and click Create New App.
  2. Select From scratch.
  3. Name it something like DeadQueue Alerts and select your workspace.
  4. Click Create App.
Tip: You only need one Slack App per workspace. If you already have an app used for other webhooks, you can add a new webhook to it instead of creating a new app.

Step 2: Enable Incoming Webhooks

  1. On the app settings page, click Incoming Webhooks in the left sidebar (under "Features").
  2. Toggle Activate Incoming Webhooks to On.
  3. Scroll down and click Add New Webhook to Workspace.
  4. Slack will ask you to pick a channel. Choose the channel where you want DLQ alerts (e.g., #ops-alerts, #sre-notifications, or #engineering).
  5. Click Allow.
Which channel? We recommend a dedicated alerts channel (e.g., #dlq-alerts) rather than a general channel. This keeps noise down and makes it easy to mute during maintenance windows.

Step 3: Copy the Webhook URL

  1. After authorizing, you'll be redirected back to the Incoming Webhooks page.
  2. Your new webhook URL appears at the bottom of the page. It looks like:
    https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
  3. Click Copy to copy it to your clipboard.
Keep this URL secret. Anyone with the webhook URL can post messages to your Slack channel. Don't commit it to source control or share it in public channels.

Step 4: Add the Webhook to DeadQueue

  1. In DeadQueue, go to the Alerts page.
  2. In the Add Channel form:
    • Type: Select Slack Webhook
    • Target: Paste the webhook URL you copied
    • Label: (Optional) Give it a name like #ops-alerts so you can identify it later
  3. Click Add Channel.
  4. The channel appears in the list below with an Enabled toggle. Make sure it's on.

Step 5: Test It

The easiest way to test is to trigger a real alert:

  1. Make sure you have an AWS account connected and at least one DLQ discovered.
  2. Send a test message to one of your DLQs using the AWS CLI:
    aws sqs send-message \
      --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/your-dlq \
      --message-body "test alert message"
  3. Wait up to 60 seconds for the next poll cycle.
  4. When DeadQueue detects the queue went from OK to WARNING, it sends an alert to Slack.
Tip: After confirming the alert works, drain the test message from the DLQ. On the next poll, you'll get a RESOLVED alert confirming the round trip.

What the Slack Alert Looks Like

DeadQueue sends a formatted Slack message using Block Kit with:

🔴 CRITICAL: orders-dlq
Queue: orders-dlq
Status: critical
Depth: 47
Oldest message: 3600s
Threshold: 5
Runbook: https://wiki.example.com/orders-runbook

The emoji and header change based on severity: 🔴 CRITICAL, 🟡 WARNING, 🟢 RESOLVED.

Multiple Channels

You can add multiple Slack webhooks pointed at different channels. All enabled channels receive every alert. Common setups:

Troubleshooting

Alert isn't showing up in Slack

  • Check the Alerts page — is the channel Enabled?
  • Check the Recent Alerts table. If the alert shows there, delivery succeeded from DeadQueue's side.
  • If no alert appears in the history either, the queue status may not have changed. Alerts only fire on transitions, not on every poll.
  • Verify the webhook URL starts with https://hooks.slack.com/. DeadQueue rejects other URLs.

Getting "invalid_payload" errors

This usually means the webhook URL is malformed or the Slack App was deleted. Create a new webhook and update the channel target in DeadQueue.

Too many alerts / alert fatigue

  • Raise the threshold — Click a queue on the dashboard, increase the Depth Threshold, and save. A higher threshold means fewer WARNING transitions.
  • Disable monitoring — For noisy queues you're already aware of, toggle monitoring off in the queue settings.
  • Disable the channel temporarily — Use the toggle on the Alerts page during maintenance windows.

Can I send alerts to a DM instead of a channel?

Yes. When creating the webhook in Slack, select a DM conversation instead of a channel. The webhook URL works the same way.

Webhook rate limits

Slack allows ~1 webhook message per second per URL. DeadQueue only sends on status transitions (not every poll), so you won't hit this unless you have hundreds of queues all changing status simultaneously.

Quick Reference

Webhook URL format https://hooks.slack.com/services/T.../B.../xxx
Alert triggers Status transitions only (OK→WARNING, WARNING→CRITICAL, any→RESOLVED)
Poll interval 60 seconds
Message format Slack Block Kit (header + section)
Includes runbook link? Yes, if configured on the queue