A typed TypeScript SDK for integrations is coming with the next archie-app release. This page documents the GraphQL operation surface available today.
Enable the integration
Open Integrations in the left sidebar and pick Slack. You’ll need a Slack App with the right scopes installed in your workspace. From the app’s settings:- Bot Token —
xoxb-.... Found under OAuth & Permissions. Needschat:writefor posting; addchat:write.publicif you want to post to channels the bot isn’t a member of. - App Token —
xapp-.... Found under Basic Information → App-Level Tokens. Needed if you use Socket Mode or subscribe to events. - Signing Secret — under Basic Information → App Credentials. Used to verify requests Slack sends to your app.
- Environment — pick which environment this configuration applies to (e.g.
Production,Staging).
What you can do
- Send messages — to channels, threads, or DMs
- Send rich messages — Block Kit blocks, attachments, buttons
- Schedule messages — deliver later at a chosen time
- Update and delete — edit or remove a previously-sent message
- Receive events — slash commands, button clicks, and interactivity callbacks via webhooks
Sending a message
A simple notification
ts is the message timestamp — keep it if you want to update or thread on it later.
Block Kit
For richer messages with buttons or sections, pass a Block Kitblocks array:
Reply in a thread
PassthreadTs to thread under an existing message:
Direct messages
Pass a user ID (U...) as the channel to DM that user. The bot must have the chat:write scope and the user must be in a workspace where the app is installed.
Scheduled messages
Webhooks
If you want to receive events from Slack — slash commands, button clicks, mention events — point your Slack App’s Event Subscriptions request URL and Interactivity request URL at the Archie-generated Slack webhook URL for your project. Archie verifies the signing secret on every event. See Webhooks for handling them in custom functions.FAQ
Channel name vs. channel ID — which should I pass?
Channel name vs. channel ID — which should I pass?
Both work for public channels. Channel IDs (
C0123456789) are more reliable because they don’t change if the channel is renamed. For private channels and DMs, the ID is required and the bot must be a member.My bot can't post to a channel. What's wrong?
My bot can't post to a channel. What's wrong?
The bot has to be invited to the channel —
/invite @yourbot from inside Slack. Public channels can be posted to without joining if you’ve granted the chat:write.public scope, but private channels always require membership.How do I respond to a button click?
How do I respond to a button click?
Can I send DMs to users who aren't in the workspace?
Can I send DMs to users who aren't in the workspace?
No. Slack only allows messaging users who are members of a workspace your app is installed in. For broader notifications, use email (SendGrid) or SMS (Twilio).
What's the rate limit?
What's the rate limit?
Slack’s Web API allows roughly 1 message per second per channel, with short bursts allowed. For high-volume notifications, batch into a single message with multiple Block Kit sections or use a thread to group related updates.