Skip to content

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

  1. Go to Connections in the sidebar.
  2. Press the Connect button on the card for the service you want.
  3. You are taken to that service's sign-in and consent screen. Review the permissions it asks for and approve.
  4. 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.

Templates:
  ✅ Send Slack message
  ⚠️ Another feature      Missing: [required-scope]   Add permission

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:

/invite @eeumsae

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.


Next08. Variables and Secrets