Skip to content

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.

Slack’s API documentation

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.

  1. 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…/…"
    }
  2. 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 }}"
      }
    }
  3. 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.