Skip to main content
Connect Shoal to Slack for real-time radar and signal alerts in your team channels. The bot polls the Shoal API every 60 seconds and posts formatted intelligence cards, plus supports slash commands for on-demand queries.

What You Get

  • Real-time alerts — New radar and signal events posted as they arrive
  • Rich formatting — Organization name, category tags, summary, source links
  • Slash commands/shoal brief <org>, /shoal radar, /shoal signal, /shoal usage
  • Socket Mode — No public URL required, runs behind your firewall
Shoal Intelligence Slack integration showing radar and signal event cards

Setup

1. Create a Slack App

Go to api.slack.com/apps and create a new app for your workspace. Required Bot Token Scopes (OAuth & Permissions):
  • chat:write — Post messages to channels
  • commands — Register slash commands
Enable Socket Mode (Settings > Socket Mode):
  • Toggle on, generate an app-level token with connections:write scope
  • This gives you an xapp- token
Create Slash Command (Slash Commands > Create New):
  • Command: /shoal
  • Description: Shoal Intelligence — briefs, radar, signal
  • Leave Request URL blank (Socket Mode handles routing)
Install the app to your workspace and copy the Bot User OAuth Token (xoxb-...).

2. Configure Environment

3. Install and Run

The bot connects via Socket Mode and starts polling immediately.

Event Card Format

Each event is posted as a standalone message with this layout:
Top line: Organization name (bold) + category and subcategory as tag pills Body: Bold title + summary paragraph Footer: Entity tags + relative timestamp + source link Signal events use the :zap: prefix to stand out from radar events.

Slash Commands

Example: On-Demand Brief

Returns a formatted card with the last 7 days of radar and signal events for Ethereum Foundation, including signal scores.

Architecture

The bot runs as a long-lived Node.js process. It maintains a local state file (.last_poll.json) to track which events have been posted, preventing duplicates across restarts.

Source Code

Full source: slack_bot/bot.js The bot is ~200 lines of JavaScript using @slack/bolt for Socket Mode and the Shoal REST API for intelligence data.