IntegrationsCommunity chat

Brand mentions in a Discord channel

Discord is among the easiest providers to connect: one URL, copied from your own server settings, and no bot to build or authorise. It is also the one where a channel dies fastest if you set the floor too low.

Every alert channel is on every plan, including Free.

[01] WHAT LANDS THERE/ A CHANNEL

A mention, as it arrives in Discord

Rendered by the code that sends it, from a sample Hacker News post. Never the post body.
#signal · Engineering

FishOutAPPnow

Reply, carefully: a relevant post on Hacker News

Show HN: An open-source shared inbox for teams of under ten

Relevance 78 · Topic · Neutral · by tamsin_k

Hint: Don't include a link

Labels: Announcement, Comparison

Open in FishOutView on Hacker News

[02] CONNECT IT/ SETUP

Point FishOut at a channel

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

    Create a webhook in your server

    Open Server Settings, go to the Integrations tab and choose Create Webhook. Pick the target channel from the dropdown, then use Copy Webhook URL. You need the Manage Webhooks permission on the server to see this.

  2. 2

    Paste it into FishOut

    Under Settings → Notifications, add a Discord channel and paste the URL. It looks like this, and it is a credential — anyone holding it can post to that channel without any further authentication, which is exactly why Discord webhooks are so quick to set up.

    webhook url

    https://discord.com/api/webhooks/1043.../xxxxxxxxxxxx
  3. 3

    Set a relevance floor and pick your events

    Most channels want mention.scored — it fires when the AI read is done, so it is the first event that carries a relevance a floor can filter on. Start at 70 and lower it if you find you are missing things. Bursts arrive as one digest by default.

Then set the floor

The relevance floor is the whole game on Discord. A community server already has more channels than anyone reads, so an alert channel that fires on everything matching a keyword becomes background noise inside a fortnight and nobody admits it. Set it at 70, watch what arrives for a week, and lower it only if you can name something you missed.
Settings · Notifications

Discord

https://discord.com/…

Healthy

Relevance floor70

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

What Discord 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
HeadlineShownThe message content, above the embed. Sent as “FishOut”.
Post titleClippedThe embed’s linked title, clipped at 250 characters.
Relevance, subject, sentiment, authorShownFirst line of the embed description.
Reply hint and labelsShownMarkdown escaped, so a title cannot restyle the embed.
PingsNeverallowed_mentions is empty: “@everyone” in a title notifies nobody.
Post bodyNeverNever sent: the envelope does not carry it.
[04] TEN PINGS OR ONE/ DIGEST

A burst arrives as one message

Discord batches by default. Here 6 posts were held after the first; they arrive together when the window closes, best first.
#signal · Engineering · 5-min digest

FishOutAPP+5m

6 new mentions for AcmeMail

  • Migrating from Notchmail: webhook payloads missing thread id · GitHub · 82
  • Lighter alternative to Notchmail we can self-host? · GitHub · 88
  • AcmeMail API returns 429 on bulk label updates · GitHub · 86
  • Add AcmeMail as an inbound provider · GitHub · 74
  • and 2 more

Open these in FishOut

[05] WHAT WILL BITE YOU/ LIMITS

Discord’s limits, not ours

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

A webhook URL is a bearer credential. Discord’s own documentation is explicit that webhooks "do not require a bot user or authentication to use", so anyone with the URL can post as your bot. Rotate it if it leaks. [source]

Discord rate-limits each webhook in its own bucket and applies a 50-requests-per-second ceiling across the API. Over it you get a 429 with a Retry-After header, which FishOut honours rather than hammering. [source]

A message is capped at 2,000 characters of content, up to 10 embeds, and 6,000 characters summed across every embed. FishOut sends the post’s title and a link, never the body, and trims a long title rather than being rejected. [source]

Delete the webhook or the channel and Discord returns 404 with error 10015, Unknown webhook. Its documentation says not to retry a 404 — repeated attempts earn a temporary restriction — so FishOut marks the channel failing and stops instead. [source]

Discord counts 401, 403 and 429 responses as invalid requests and temporarily blocks an IP that makes 10,000 of them in ten minutes. It is the reason a dead channel is worth fixing rather than leaving. [source]

Webhooks can post into a thread, using a thread_id on the request, and a forum channel requires one. [source]

In the channel’s delivery history
You seeIt meansDo this
discord_unknown_webhookError 10015: the webhook or its channel was deleted.Create a new webhook in Server Settings → Integrations.
discord_unknown_channelError 10003: the channel no longer exists.Pick a live channel for the webhook and update the URL.
discord_missing_accessError 50001: the webhook lost access to the channel.Check the channel’s permissions, or recreate the webhook.
[06] WHERE MENTIONS COME FROM/ ROUTES
[07] OPEN IN FISHOUT/ THE INBOX

From Discord to a drafted reply

“Show HN: An open-source shared inbox for teams of under ten”, open in the inbox. You send the reply; FishOut never posts.
Hacker Newstamsin_k
78

Show HN: An open-source shared inbox for teams of under ten

Reply, carefullyAnnouncementComparisonTopic

Draft reply · Don't include a link

Copy and open threadYou send it

Questions