Skip to content

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:

  • HeaderNew issue in <project>: <title> (or Frequency alert on … for frequency rules)
  • Section — fields for level, times seen, culprit, environment, release
  • Action buttonOpen in ErrLens deep-links into the issue page
  • ContextProject <name> · ErrLens <event-kind>

Level → strip colour:

LevelColour
fatal, errorred
warningamber
infoblue
debuggrey

Set up a Slack incoming webhook

  1. Open Slack → click your workspace name → Tools & settingsManage appsBuild (top-right) → Create New AppFrom scratch.
  2. App name: ErrLens (or whatever). Pick the workspace.
  3. In the new app's sidebar: Incoming Webhooks → toggle Activate Incoming Webhooks to On.
  4. Scroll down → Add New Webhook to Workspace → choose the channel the alerts should land in → Allow.
  5. Slack shows a URL like https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXX — copy it.

Add it to ErrLens

  1. Open Org alerts (or a project's Alerts tab if it should only fire for that project).
  2. Click Add destination → pick Slack.
  3. Paste the webhook URL. Give the destination a name (e.g. #prod-alerts) so it's obvious in the list.
  4. 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.