AddThisFeature

Slack Channel Alerts

Send the events a team actually needs into a Slack channel without flooding it.

moderate Sales & Marketing Tools

What it adds

Operator-configured routing of selected app events into Slack channels, with grouping, throttling, and reliable delivery.

What your agent is told to do

5
  1. 1

    List the events genuinely worth interrupting a team for — failed payments, high-value signups, error thresholds, approvals waiting — and make each individually selectable per channel. An all-or-nothing firehose gets muted within a week and then nobody sees the one that mattered.

  2. 2

    Run the connection through the provider's authorisation flow, then confirm the workspace and channel at setup by posting a test message the operator has to acknowledge. Store the resulting credential server-side only.

  3. 3

    Write each message so it stands alone: what happened, to whom, when, and a link back into the app. Optional fields that are absent must be omitted cleanly rather than rendering as empty labels.

  4. 4

    Deduplicate on a stable event identifier so a webhook redelivery or a retried job cannot post the same alert twice, and collapse bursts of one event type into a single grouped message carrying a count.

  5. 5

    If a Microsoft Teams brief is also applied to this app, both must share one event-selection and routing layer, with each destination brief owning only its own formatting and delivery. Two independent alert configurations drift apart and double-post.

Edge cases it handles

8
  • Setup must verify that the chosen channel exists and that the app can post to it. Discovering a bad destination during a real incident is too late to be useful.
  • A message built from a record with missing optional fields must still read as a sentence, not as a template with blank slots where values should be.
  • Retried jobs and redelivered webhooks must be deduplicated on the event identifier, or one incident produces a dozen identical posts and the channel is abandoned.
  • A channel that was renamed, archived, or made private, an app removed from the workspace, or a revoked scope must disable that destination, surface the reason to an operator in the app, and stop retrying forever.
  • Noisy event types need a ceiling per channel and per window, with the overflow summarised as a count rather than dropped without trace.
  • Alerts must not carry secrets or personal data beyond what the channel's membership is entitled to see. A channel is almost always a wider audience than the record itself.
  • Provider rate limits must be honoured with bounded backoff, and delivery must never block or fail the user action that produced the event.
  • Deep links back into the app must resolve for whoever clicks them, and must land on a permission message rather than a blank page for someone without access.

Definition of done

9
  • Operators can choose which event types go to which channel.
  • Setup verifies the workspace and channel with a test message the operator confirms.
  • Messages stay readable when optional fields are absent and link back into the app.
  • Retries and webhook redeliveries never produce a duplicate alert.
  • Bursts are grouped and noisy event types are rate-limited with the overflow counted.
  • A revoked, removed, or archived destination disables itself and notifies an operator.
  • Alert delivery never blocks or fails the user action that generated the event.
  • The feature matches the existing design system.
  • No existing functionality is broken.

Related features

How it works

  1. 1

    Copy the link

    Grab the Markdown instruction URL for this feature.

  2. 2

    Give it to your AI

    Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.

  3. 3

    It inspects, then implements

    Your agent reads your existing app first, then adds the feature to fit it.

Works with your stack

These instructions are written to adapt. They tell the agent to detect your framework, match your existing design system, and reuse what you already have — rather than assuming a particular stack.

Need it tighter than that? Customize the feature and tell it exactly what you're running.