Connector · Messaging and email
Slack, in every client’s workflows.
Post a message, edit a message, or start when a message is posted in a channel, with the client’s own Slack account.
- Triggers
- 1start a workflow
- Actions
- 2steps in a workflow
Start a workflow when something happens in SlackBeta
By webhook where Slack sends one, by checking where it does not. A webhook is checked once a day to see it is still on, and if Slack turns it off the alert carries a Reconnect button.
- A message is posted in a channelPolledA new message in a channel, checked every 5 minutes; joins and the bot’s own posts are skipped. The app needs channels:history (groups:history for a private channel) and must be in the channel.
Do it in Slack
A step with its own fields: values from the run go in by name, and what Slack answers is there for the next step.
- Post a messagePost to a channel the app has been invited to.
- Edit a messageChange a message the bot posted, in place: one line per lead that moves from “new” to “booked” instead of a new post each time. A message posted by anyone else cannot be edited.
Connect the client’s Slack
On the client’s page in Thrum: Add credential, type Slack bot token.
In the client’s Slack: api.slack.com/apps → Create New App → OAuth & Permissions → add the chat:write scope (and channels:history, plus groups:history for a private channel, for the message trigger) → Install to Workspace → copy the Bot User OAuth Token. Invite the app to the channel.
The key is stored encrypted and bound to that client: another client’s workflow cannot use it, and no template or pack copies it.
Via HTTP
Or by web request: post a message to a channel
The client’s team sees every new lead in the channel they already watch. The web request step, filled in: paste it, swap in the client’s ids, add their key.
01
Add the client’s credential
On the client’s page in Thrum: Add credential, type Webhook URL. In the client’s Slack: api.slack.com/apps → Create New App → Incoming Webhooks → on → Add New Webhook to Workspace → pick the channel → copy the URL. The URL is the key: keep it as a credential, never in the step.
{ "url": "https://hooks.slack.com/services/T…/B…/…" }02
Add a web request step
Name it “Tell the team”, set it as here, and pick the credential. Values in double braces are read from the run: here, the lead the form brought in.
{ "method": "POST", "url": "{{ credential.url }}", "body": { "text": "New lead: {{ lead.name }}, {{ lead.phone }}. {{ lead.summary }}" } }03
What goes out, and what comes back
The webhook posts to the one channel it was made for; another channel needs another webhook.
POST https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX content-type: application/json { "text": "New lead: Nadia Karim, +447700900222. Quote for a new bathroom, two basins and a shower" }200 ok
Watched like everything else
When Slack stops answering or refuses the client’s key, you hear about it, and your client does not.
- A failing request
- Tried 3 times, 5 seconds apart and doubling, only for errors a retry can fix
- A service that asks for a pause
- Given it, up to an hour
- Requests at once, per account
- 2, per worker; the rest wait their turn
- Timeout
- 15 seconds, unless the step sets its own
- Private and internal addresses
- Refused, on every redirect too
- The client’s key
- Encrypted, bound to the client, and kept out of every run record
- A step that keeps failing
- Marks the workflow Degraded and alerts you, not the client
Slack and its logo are trademarks of their owner, used here only to say what Thrum works with; no endorsement is implied.
Thrum is cooking.
Get early access and you’ll be among the first in. Early members get a launch perk.