IntegrationsTeam chat

Brand mentions in a Slack channel

Slack is where a brand-watch channel actually gets read, provided you set the relevance floor high enough that it stays worth reading. One webhook URL per channel, and a couple of Slack rules that decide how the channel behaves.

Every alert channel is on every plan, including Free.

[01] WHAT LANDS THERE/ A CHANNEL

A mention, as it arrives in Slack

Rendered by the code that sends it, from a sample Reddit post. Never the post body.
#brand-watch

FishOutAPPnow

Reply now: a relevant post on Reddit

Shared inbox for two people without a full helpdesk?

Relevance 96 · Topic · Neutral · by quietledger

Hint: Answer the question directly

Labels: Asking for recommendations, Has a problem

Open in FishOut·View on Reddit

[02] CONNECT IT/ SETUP

Point FishOut at a channel

4 steps, a few minutes end to end.
  1. 1

    Create a Slack app and turn on Incoming Webhooks

    Create an app, choose your workspace, then open Incoming Webhooks and switch Activate Incoming Webhooks on. This is the current route — legacy custom integrations still work but Slack asks you to move off them, and they cannot use interactive features.

  2. 2

    Add a webhook to the channel you want

    Choose Add New Webhook to Workspace, pick the channel and Authorize. If the channel is private, you have to be in it first. The URL that comes back is bound to that one channel — see the limits below, because this is the rule people are most often surprised by.

    webhook url

    https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
  3. 3

    Paste it into FishOut and set the floor

    Under Settings → Notifications, add a Slack channel, paste the URL, and set a relevance floor — it starts at your project’s threshold. Subscribe to mention.scored: it fires when the AI read is done, so it is the first event that carries a relevance the floor can act on. Bursts are batched by default: the first mention arrives at once, and the rest of a five-minute window as one digest.

  4. 4

    Add a second channel with a different floor

    This is the setup that works. A team queue at 70 catches what is worth reading; a separate escalations channel at 90 catches only the most relevant posts. One channel trying to do both jobs ends up doing neither.

Then set the floor

A Slack channel with no relevance floor becomes a channel nobody reads within a fortnight, and nobody will tell you that has happened. #brand-watch at 70 is a sensible start: high enough that every message is worth a glance, low enough that you are not missing the quiet buying signals. Put escalations in their own channel at 90 rather than lowering the first one. A burst — a thread that suddenly matches ten times — arrives as one digest, not ten pings.
Settings · Notifications

Slack

https://hooks.slack.com/…

Healthy

Relevance floor70

Eventsmention.scored
Batch bursts5 min
[03] WHAT IS IN IT/ FIELDS

What Slack receives, field by field

Built from the event’s envelope and nothing else, so a retry renders exactly the message the first attempt would have.
Field How
HeadlineShownBold, and it carries the Reply call: “Reply now: a relevant post on Reddit”.
Post titleClippedA link to the post, clipped at 200 characters. Link unfurling is off.
Relevance, subject, sentiment, authorShownOne grey context line under the title.
Reply hint and labelsShownHint in bold, labels by name.
Open in FishOut · View on RedditShownTwo links in the last context line.
Post bodyNeverNever sent: the envelope does not carry it.
[04] TEN PINGS OR ONE/ DIGEST

A burst arrives as one message

Slack batches by default. Here 7 posts were held after the first; they arrive together when the window closes, best first.
#brand-watch · 5-min digest

FishOutAPP+5m

7 new mentions for AcmeMail

  • Shared inbox for two people without a full helpdesk? · Reddit · 96
  • Ask HN: How do small teams handle support email? · Hacker News · 92
  • Notchmail sync drops threads with more than 50 replies · GitHub · 84
  • Notchmail cuts its free tier · Google News · 81
  • AcmeMail vs Notchmail for a 5-person team · Reddit · 77
  • and 2 more

Open in FishOut

[05] WHAT WILL BITE YOU/ LIMITS

Slack’s limits, not ours

These are Slack’s constraints and failure modes, checked against its own documentation. Failures are tracked per channel, so one broken destination never stops the others.

Slack rate-limits messages to roughly one per second per channel — not per webhook and not per app. Two FishOut channels pointed at the same Slack channel share that budget. Over it, Slack returns 429 with a Retry-After header. [source]

A webhook URL is bound to the channel chosen when it was created, and the posting app can no longer override the channel, username or icon at runtime. Slack changed this when it moved webhooks into apps; a second channel means a second webhook. [source]

Archive the channel and the webhook returns 410 with channel_is_archived. Delete it and you get 404 channel_not_found. FishOut marks the channel failing rather than retrying into the void. [source]

A workspace can be set to allow only pre-approved apps. If it is, a webhook can come back with 403 action_prohibited, and an owner or app manager has to approve the app before it will post. [source]

To add a webhook to a private channel you must already be in that channel. There is no way around it from our side. [source]

Slack’s messaging APIs truncate above 40,000 characters and recommend staying under 4,000, with a limit of 50 blocks per message. FishOut sends the post’s title and a link, never the body, so a message stays far under both. [source]

The URL is a secret, and Slack says it actively searches out and revokes leaked ones. Keep it out of screenshots and public repositories. [source]

In the channel’s delivery history
You seeIt meansDo this
slack_channel_not_foundThe channel the webhook was bound to was deleted.Create a webhook for another channel and replace the URL.
slack_channel_is_archivedThe channel is archived and accepts nothing.Unarchive it, or point the channel at a new webhook.
slack_action_prohibitedThe workspace only allows pre-approved apps.Ask a Slack owner or app manager to approve the app.
slack_invalid_tokenThe webhook was revoked, often because the URL leaked.Add a new webhook in the Slack app and paste the new URL.
[06] WHERE MENTIONS COME FROM/ ROUTES
[07] OPEN IN FISHOUT/ THE INBOX

From Slack to a drafted reply

“Shared inbox for two people without a full helpdesk?”, open in the inbox. You send the reply; FishOut never posts.
Redditquietledger
96

Shared inbox for two people without a full helpdesk?

Reply nowAsking for recommendationsHas a problemTopic

Draft reply · Answer the question directly

Copy and open threadYou send it

Questions