Slack
ErrLens posts to Slack via a channel-scoped incoming webhook. Each destination URL is bound to one workspace and one channel — change the channel and the URL changes.
What it looks like
Each delivery becomes one message with a level-coloured strip on the left:
- Header —
New issue in <project>: <title> (or Frequency alert on … for frequency rules) - Section — fields for level, times seen, culprit, environment, release
- Action button — Open in ErrLens deep-links into the issue page
- Context —
Project <name> · ErrLens <event-kind>
Level → strip colour:
| Level | Colour |
|---|
fatal, error | red |
warning | amber |
info | blue |
debug | grey |
Set up a Slack incoming webhook
- Open Slack → click your workspace name → Tools & settings → Manage apps → Build (top-right) → Create New App → From scratch.
- App name: ErrLens (or whatever). Pick the workspace.
- In the new app's sidebar: Incoming Webhooks → toggle Activate Incoming Webhooks to On.
- Scroll down → Add New Webhook to Workspace → choose the channel the alerts should land in → Allow.
- Slack shows a URL like
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXX — copy it.
Add it to ErrLens
- Open Org alerts (or a project's Alerts tab if it should only fire for that project).
- Click Add destination → pick Slack.
- Paste the webhook URL. Give the destination a name (e.g. #prod-alerts) so it's obvious in the list.
- Save. Click Send test event — the test message should land in the channel within a second or two.
Quirks
- The channel is fixed at the URL level. To post to a different channel, create a second webhook in Slack and a second destination in ErrLens.
- No HMAC signing. Slack incoming webhooks don't accept custom signature headers; ErrLens omits
X-ErrLens-Signature for this kind. - Rate limiting. Slack allows ~1 message/second per webhook with short bursts. ErrLens' frequency-rule cooldowns are usually long enough that this never bites, but a runaway threshold (e.g. 1 event, window 1s) can hit Slack's 429. The dispatcher retries with backoff.
Troubleshooting
- No message arrives: check Send test event — if the test works but real alerts don't, the project's alert rules aren't firing. See /docs/alerts/ for the trigger model.
- Slack returns
invalid_payload: extremely long issue titles or embedded HTML in your environment string can trip Slack's parser. Check the destination's consecutive failures counter — the error message Slack sent will be there. - Message looks plain (no colour, no button): you're using a Slack workspace where rich attachments are disabled by policy. Fall back to the generic webhook kind and parse the JSON yourself.