Guides · Slack
Get a Mac notification for Slack mentions, new members and reactions
A Slack app's Event Subscriptions can post a webhook the moment someone mentions the app, joins the workspace, joins a channel or adds a reaction. Point them at EventBar and each one pops up in your menu bar, with this week's count of new members a glance away, without a bot server of your own.
Needs: the free EventBar app on your Mac, an EventBar account, and a Slack app you can manage (or permission to create one) in the workspace, and a workspace admin's OK to install it if your workspace requires approval. About five minutes. Slack preset, signature verified.
Steps
- Create the webhook URL. In the EventBar dashboard, open the Webhooks tab, pick the group this belongs to (one group per site or app is the usual shape), choose the provider Slack, name it, and press Create. Copy the URL; it stays visible and can be rotated any time.
- Paste it into Slack. Open your app at api.slack.com/apps (or Create New App, From scratch, and pick the workspace). Under Event Subscriptions, turn on Enable Events and paste the URL as the Request URL; Slack checks it at once, and EventBar answers the check, so it shows Verified. Under Subscribe to bot events add events such as
app_mention,team_join,member_joined_channelandreaction_added, press Save Changes, and install (or reinstall) the app when Slack asks, since new events can need new scopes. Then, on Basic Information, under App Credentials, press Show next to Signing Secret and paste it into the hook card in EventBar. It is not the Verification Token, which Slack has deprecated. - Trigger one. Most services offer a test delivery; otherwise do the real thing once. It shows up in the dashboard's Events tab within a second and in the menu bar, as an undefined type named after the event. That first one is your proof the wiring works.
- Make it read well. Press Define on the new type and give it a title and a body template. Fields come from the payload, nested ones with dots. The table below is a starting point.
This preset is on Plus and Pro. A free Generic JSON hook can't stand in for it: Slack checks the Request URL by posting a challenge that has to be sent back, and only the Slack preset answers it, so Slack won't save a Generic JSON URL.
What you'll see
| Type | Title | Body template |
|---|---|---|
app_mention | Mentioned | {event.text} · {event.user} in {event.channel} |
team_join | New member | {event.user.real_name} ({event.user.name}) joined |
member_joined_channel | Joined a channel | {event.user} joined {event.channel} |
reaction_added | Reaction | :{event.reaction}: from {event.user} in {event.item.channel} |
Every type has its own switch in the menu bar, so a noisy one can be quiet on this Mac and still counted. Counts cover the last hour, 24 hours, 7 days, 30 days and all time.
Worth knowing
- The type is the event's
event.type, soapp_mentionandteam_joineach get their own switch and count. Messages add their subtype when they have one, so a bot's post arrives asmessage.bot_messageand an edit asmessage.message_changed, apart from plainmessage: mute the ones you don't want from the menu bar and keep the counts. - The signature is
X-Slack-Signature: v0=…, a hex HMAC-SHA256 ofv0:, theX-Slack-Request-Timestampvalue, a:and the raw body, keyed with the app's signing secret. As Slack says to, EventBar refuses a timestamp more than five minutes off, so a captured delivery can't be replayed later. Slack's Request URL check is signed the same way; EventBar answers it with the challenge and doesn't count it. - Duplicates are dropped by the
event_id. Slack retries a delivery that isn't answered within three seconds up to three times (at once, after a minute, after five minutes), so a retry never counts twice. - Slack sends user and channel ids, not names:
{event.user}is aU…id and{event.channel}aC…id, and a mention inside{event.text}reads<@U…>.team_joinis the exception and carries the new member's profile, so{event.user.real_name}works there. - Message events (
message.channelsand the like) can be busy in an active workspace. Subscribe to the few events you want rather than every message, and the menu bar stays quiet.
The full contract, including how each preset reads a payload and what the answers mean, is in the API docs. Something about Slack's payload changed? Tell us and we'll fix the guide.