Summary
This page explains the Slack integration at a glance and the two integration directions:- Outbound (Nota → Slack): Nota posts workflow status, alerts, and results using a bot token (or a quick incoming webhook).
- Inbound (Slack → Nota): Slack sends
@Notamentions, DMs, and interactive button clicks (plan approvals, “file ticket”) into Nota to trigger workflows and in-thread replies.
💬 Slack (team feature)
Connecting Slack has two directions:- Outbound (Nota → Slack) — Nota posts messages, threads, files, and reactions. Needs a bot token (or an incoming webhook for a single channel).
- Inbound (Slack → Nota) —
@Notamentions and DMs get an in-thread reply, and Block Kit buttons (plan approve/reject, file-ticket) route back into Nota. Needs Event Subscriptions + Interactivity + a signing secret.
Unlike Jira / Linear / GitLab, Slack is one Slack app that powers both directions — you do not create a separate “Nota” account. The app’s bot user IS
@Nota, and Nota tells its own messages apart automatically (it reads the bot user id off each event), so there’s no bot-identity field to configure and no self-reply loop.Outbound — let Nota post to your workspace
Step 1 — Create the Slack app
- Go to api.slack.com/apps → Create New App → From scratch.
- Name it (e.g. Nota) and pick your workspace.
Step 2 — Add Bot Token Scopes
In OAuth & Permissions → Scopes → Bot Token Scopes, add:Step 3 — Install & copy the bot token
- Scroll up in OAuth & Permissions and click Install to Workspace, then Allow.
- Copy the Bot User OAuth Token — it starts with
xoxb-.
Step 4 — Configure Nota
Go to app.trynota.ai/integrations → Slack Settings. Fill in:
Click Update Settings — Nota uses it immediately. On save Nota also resolves and stores your Slack Team ID (via
auth.test); that’s what routes inbound events to your workspace.
Outbound works. In Nota chat, say “post a hello to #qa-alerts on slack” — the message appears in the channel. (Invite the bot to the channel first if you see
not_in_channel.)Alternative — incoming webhook (single channel, no bot features)
If you only need result posts to one channel and don’t want the bot/chat features, skip the token: in the app’s Incoming Webhooks, activate it, Add New Webhook to Workspace, pick a channel, and paste thehttps://hooks.slack.com/services/… URL into the Incoming Webhook URL field in Nota. (Incoming webhooks can’t do threads, uploads, reactions, or inbound mentions.)
Inbound — @mentions, DMs & interactive buttons
For@Nota to reply, Slack must send events to Nota and Nota must verify they’re genuinely from Slack.
Step 1 — Enable Event Subscriptions
- Open api.slack.com/apps and select your app.
- In the left sidebar under Features, click Event Subscriptions.
- Toggle Enable Events to On.
-
In Request URL, paste:
Slack sends a verification challenge the moment you finish typing. Nota answers it and the field shows a green Verified ✓ — usually within a second. Nothing else needs to be configured first.
-
Expand Subscribe to bot events and click Add Bot User Event once per row:
- Click Save Changes (bottom-right). If Slack shows a banner saying the app needs reinstalling, that’s Step 4.
Step 2 — Enable Interactivity
Block Kit buttons — plan Approve / Reject, File ticket — post back to a second, different URL.- In the left sidebar under Features, click Interactivity & Shortcuts.
- Toggle Interactivity to On.
-
In Request URL, paste:
- Click Save Changes.
Note the path: interactivity is
/api/slack/interactivity, events is /api/slack/events. Slack won’t warn you if you paste the same URL into both — button clicks would just silently fail.Step 3 — Set the signing secret in Nota
Nota HMAC-verifies every real inbound event against your app’s Signing Secret.- In your Slack app, click Basic Information in the left sidebar.
- Scroll to App Credentials and click Show next to Signing Secret, then copy it.
- In app.trynota.ai/integrations → Slack Settings, paste it into Slack Signing Secret.
- Click Update Settings.
Nota looks this secret up per tenant — it matches the inbound event’s workspace against the Slack Team ID it stored when you saved the bot token (Outbound Step 4), then verifies the signature with your app’s secret. That’s what lets each workspace run its own Slack app.Leave the field blank only for a single-app deployment that uses a platform-wide secret.
The Verified ✓ you got in Step 1 covers the handshake only — Nota answers that before any signature check, which is why the URL verifies on a brand-new app. Mentions, DMs, and button clicks are verified separately, here.
Step 4 — Reinstall & invite the bot
- If you added scopes or bot events after the first install, go to OAuth & Permissions → Reinstall to Workspace → Allow so the token carries the new grants.
- If the reinstall issued a new
xoxb-…token, re-copy it into Slack Settings → Slack Bot Token and Update Settings. - Invite the bot to each channel you want it active in — in Slack, type
/invite @Notain the channel (or use channel ⚙ Settings → Integrations → Add apps).
Step 5 — Test it
Mention the bot in a channel it’s been invited to. Send
@Nota what does this workflow cover? — Nota replies in-thread within a few seconds.Then DM the bot directly. DMs route through the same handler via message.im, so a reply there confirms the whole inbound path end-to-end.Mention the bot from your own account, not from the bot’s. Nota reads the bot user id off every event and skips messages it authored itself, so it never answers its own posts — that’s automatic, with nothing to configure.

