// docs · notifications

Slack & Discord Notifications

Get a formatted card in Slack or Discord every time PullLight queues a new review — with severity breakdown, top finding, and a direct link to approve. One card per PR review run; no per-finding spam.

ON THIS PAGE
Setting up Slack Setting up Discord What the card looks like Rate limits & retry behavior Troubleshooting

💬 Setting up Slack

Slack uses the Incoming Webhooks app. You create a webhook for a specific channel, and PullLight POSTs a Block Kit card to it.

  1. Go to api.slack.com/apps and click Create New App → From scratch. Name it PullLight, pick your workspace, and click Create App.
  2. In the left sidebar, click Incoming Webhooks. Toggle the switch to On.
  3. Scroll down and click Add New Webhook to Workspace. Pick the channel where you want PR notifications to appear (e.g. #engineering-alerts or #code-review), and click Allow.
  4. Copy the webhook URL that looks like:
    https://hooks.slack.com/services/T00000000/B00000000/xxxxxxxxxxxxxxxxxxxx
  5. Paste the URL into the Slack webhook URL field at /settings/notifications and click Send test to verify. Then click Save settings.
💡 Tip: Invite the PullLight Slack app to the target channel if you're using a private channel (/invite @PullLight). The webhook will 404 on a private channel where the app isn't a member.

🎮 Setting up Discord

Discord has built-in webhook support — no app install needed. You create a webhook directly inside the channel settings.

  1. Open Discord. Navigate to the server and channel where you want PR notifications (e.g. #pr-reviews).
  2. Click the gear icon ⚙ next to the channel name to open Edit Channel. Go to the Integrations tab.
  3. Click Webhooks → Create Webhook. Give it a name like PullLight (Discord will use this as the display name in the channel). Optionally set an avatar.
  4. Click Copy Webhook URL. It will look like:
    https://discord.com/api/webhooks/000000000000000000/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  5. Paste the URL into the Discord webhook URL field at /settings/notifications, click Send test, then Save settings.
💡 Tip: Discord webhooks don't require any permissions — they bypass role restrictions and post directly to the channel. Keep the URL private; anyone with it can post to your channel.

📋 What the card looks like

Every notification contains:

⚠ One card per PR review run. If the same PR gets pushed to twice in quick succession, you'll get two cards — one per webhook trigger. PullLight does not deduplicate across re-pushes; that's handled by your branch protection rules.

⏱ Rate limits & retry behavior

Scenario Behavior
Normal send POST immediately, log result
> 10 messages/hour per channel Skip + log rate_limited — resumes next hour
HTTP 5xx from Slack/Discord Retry 3× with exponential backoff (2s → 4s → 8s)
HTTP 4xx (bad URL, revoked) Mark URL as invalid, email you to fix it, stop retrying

All attempts (sent, failed, rate_limited) are visible in the Recent notifications table at /settings/notifications.

🔧 Troubleshooting

Ready to connect?
Open notification settings →
← all docs config file → notification settings →