07. Managing Connections¶
Connect an external service like Slack once and eeumsae authenticates on its own — you never write the token into your workflow. You manage them on the Connections screen in the sidebar.
When you need a connection, and when you don't¶
Most of the time you don't. The integrations below work straight away with no connection.
| Integration | Connection needed? |
|---|---|
http_request |
❌ No (tokens go through ${secrets.*}) |
llm_chat |
❌ No (API keys go through ${secrets.*}) |
transform_jmespath |
❌ No |
dataset |
❌ No |
slack_post_message |
✅ Slack connection required |
So posting a message to Slack is about the only case where a connection is genuinely required.
Otherwise it is often simpler to put the API key in 08. Variables and Secrets and call the service with http_request.
Connecting¶
- Go to Connections in the sidebar.
- Press the Connect button on the card for the service you want.
- You are taken to that service's sign-in and consent screen. Review the permissions it asks for and approve.
- When you come back, the card shows a Connected status along with the permissions granted.
Some services ask for extra information before connecting (for example a shop ID for an e-commerce platform). Just fill in the dialog that appears. For services that connect via API key, a dialog for entering the key opens instead of Connect.
The list of connectable services appears as cards on the Connections screen. It keeps growing during the beta.
Reading the connection status¶
The color of the dot on the left of the card is the status.
| Indicator | Meaning | What to do |
|---|---|---|
| 🟢 Connected | Healthy | Nothing |
| 🟡 Expired | The token expired | Reconnect |
| 🔴 Revoked | The other service revoked access | Reconnect |
| ⚪ Not connected | Not connected yet | Connect |
For services that support renewal, expired tokens are refreshed automatically. If the expired marker still sticks around, reconnect.
Press the refresh button on the card to check right now whether the connection is actually alive.
Managing permissions (scopes)¶
It only works within the permissions granted at connection time. If a permission is missing, the card shows it like this.
Pressing Add permission reconnects while requesting the additional scope.
Connecting Slack¶
This is the connection people use most, so here it is in detail.
1) Connect¶
Connections → the Slack card → Connect → pick a Slack workspace → approve the permissions.
These are the permissions requested during the beta.
| Permission | Purpose |
|---|---|
chat:write |
Sending messages |
channels:read · groups:read |
Listing channels (so you can pick one in the editor) |
users:read |
Reading user information |
im:read · mpim:read |
Listing DM channels |
app_mentions:read |
Recognizing mentions |
2) ⚠️ Invite the bot into the channel — easy to forget¶
You have to invite the bot into every channel you want to post to. Connecting the workspace is not enough.
In the Slack channel in question:
Without this, the workflow fails with a not_in_channel error.
3) Using it in a workflow¶
- id: notify
name: Send to Slack
type: CALL
integration: slack_post_message
input:
channel: "C0123ABCDEF"
text: "Hello! The automation is running fine."
Putting a channel ID in channel is the safe option. In the visual editor you can pick from the real channel list of the connected Slack.
Finding a channel ID: in Slack, right-click the channel → View channel details → the channel ID is at the bottom.
Disconnecting¶
Pressing Disconnect on the card deletes the stored token.
⚠️ Workflows that use that connection will fail from their next execution. Check which workflows depend on it before disconnecting.
Using the token directly in a workflow¶
It is rare, but sometimes you need to use a connected service's token directly in http_request.
input:
uri: "https://slack.com/api/conversations.list"
method: GET
authenticate:
authMethod: HEADERS
data:
Authorization: "Bearer ${connections.slack.accessToken}"
The form is ${connections.<provider>.<field>}, and the provider name is lowercase.
Expired tokens are refreshed automatically at the moment they are referenced.
Connection or secret — which should I use?¶
| Connections | Secrets (Variables) | |
|---|---|---|
| Auth method | OAuth (sign in and approve) | An API key string |
| Expiry handling | Refreshed automatically | You replace it yourself |
| Setup effort | A few clicks | Copy and paste a key |
| Where it works | Only that service's dedicated integration | Anywhere (http_request and friends) |
Use a connection when a dedicated integration exists; otherwise use a secret plus http_request.
Next → 08. Variables and Secrets