Skip to content

Commit 0303cea

Browse files
authored
Update slack docs with url unfurling (#3483)
* Update slack docs with url unfurling * Fix status icons
1 parent 6d8b46c commit 0303cea

1 file changed

Lines changed: 55 additions & 4 deletions

File tree

‎src/pages/docs/administration/managing-infrastructure/slack-integration.md‎

Lines changed: 55 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,26 @@
11
---
22
layout: src/layouts/Default.astro
33
pubDate: 2026-07-03
4-
modDate: 2026-07-06
4+
modDate: 2026-09-29
55
title: Slack integration
6-
description: Connect a Slack workspace to Octopus Deploy to send subscription notifications and deployment messages to Slack channels.
6+
description: Connect a Slack workspace to Octopus Deploy to send subscription notifications and deployment messages to Slack channels, and to unfurl Octopus release URLs into deployment status cards.
77
navOrder: 1700
88
---
99

1010
Connecting a Slack workspace to Octopus lets you send subscription events and deployment notifications to Slack channels. Once connected, you can:
1111

1212
- Configure [subscriptions](/docs/administration/managing-infrastructure/subscriptions) to post event digests to channels.
1313
- Add a [Send a Slack Message](/docs/projects/built-in-step-templates/send-slack-message) step to your deployment or runbook processes.
14+
- Optionally enable [link unfurling](#slack-integration-unfurling), so Octopus release URLs expand into deployment status cards when someone pastes them in a Slack channel.
1415

1516
Slack integration is available from Octopus Server version `2026.3.1827`.
1617

1718
## Prerequisites
1819

1920
You need permission to install apps in your Slack workspace. If you don't have this permission, ask a Slack workspace owner or admin to complete the setup.
2021

22+
For link unfurling, your Octopus Server must be reachable from the internet so Slack can deliver events to it.
23+
2124
## Connect Octopus to Slack {#slack-integration-connect}
2225

2326
To connect Octopus to Slack, navigate to **Configuration ➜ Settings ➜ Slack integration** and click **Add Slack Connection**. The wizard in Octopus will walk you through the steps outlined below.
@@ -26,6 +29,8 @@ To connect Octopus to Slack, navigate to **Configuration ➜ Settings ➜ Slack
2629

2730
Octopus generates a JSON app manifest pre-configured with the correct redirect URL and OAuth scopes. The wizard displays this manifest for you to copy.
2831

32+
If you want to enable link unfurling, check **Enable link unfurling** before copying the manifest. Octopus adds the Events API subscription URL, the `link_shared` bot event, your server's hostname as an unfurl domain, and the extra scopes to the manifest automatically.
33+
2934
In a new tab, go to [Slack API Apps](https://api.slack.com/apps) and:
3035

3136
1. Click **Create New App**.
@@ -34,14 +39,18 @@ In a new tab, go to [Slack API Apps](https://api.slack.com/apps) and:
3439
4. Paste the manifest Octopus generated and click **Next**, then **Create**.
3540

3641
:::div{.hint}
37-
The manifest uses your Octopus server's public address as the OAuth redirect URL. If the URL shown in the manifest doesn't match the address users access Octopus at, update the `redirect_urls` value before pasting. You can configure the public URL under **Configuration ➜ Nodes**.
42+
The manifest uses your Octopus server's public address as the OAuth redirect URL. When unfurling is enabled, it is also used as the Events API request URL. If the URL shown doesn't match the address users access Octopus at, update `redirect_urls` (as well as `request_url` and `unfurl_domains` for unfurling) in the manifest before pasting. You can configure the public URL under **Configuration ➜ Nodes**.
3843
:::
3944

4045
Once you've created the Slack app, return to Octopus and click **I Created The App**.
4146

4247
### 2. Add credentials
4348

44-
In your new Slack app, go to **Basic Information** and copy the **Client ID** and **Client Secret**. Paste these into Octopus and click **Save And Continue**.
49+
In your new Slack app, go to **Basic Information** and copy the **Client ID** and **Client Secret**. Paste these into Octopus.
50+
51+
If you checked **Enable link unfurling**, also copy the **Signing Secret** from the same **Basic Information** page and paste it into the **Signing Secret** field. Octopus uses this to verify that event payloads come from Slack.
52+
53+
Click **Save And Continue**.
4554

4655
### 3. Authorize Octopus in Slack
4756

@@ -62,6 +71,13 @@ Octopus requests the following scopes when authorizing:
6271
| `team:read` | Read workspace name |
6372
| `users:read` | Read the bot user's display name |
6473

74+
When link unfurling is enabled, Octopus also requests:
75+
76+
| Scope | Purpose |
77+
| ----- | ------- |
78+
| `links:read` | Detect Octopus links shared in channels |
79+
| `links:write` | Post unfurl cards when links are shared |
80+
6581
### 4. Confirm the connection
6682

6783
Your workspace is now connected. You can optionally send a test message to `#general` to confirm everything is working before finishing.
@@ -74,6 +90,41 @@ Your workspace is now connected. You can optionally send a test message to `#gen
7490

7591
After connecting, you can send a test message at any time from **Configuration ➜ Settings ➜ Slack integration**. Select a channel and click **Send Test Message**. Octopus posts a short message to the selected channel so you can confirm the bot is working.
7692

93+
## Link unfurling {#slack-integration-unfurling}
94+
95+
When link unfurling is enabled, anyone in the connected workspace can paste an Octopus release URL into a channel and Slack will automatically expand it into a deployment status card. No step or subscription configuration is needed - it works wherever URLs are shared.
96+
97+
### Supported URLs
98+
99+
Unfurling activates for two URL shapes:
100+
101+
- **Release page** - `.../Spaces-N/projects/{project}/deployments/releases/{version}`: shows all phases in the release lifecycle.
102+
- **Specific deployment** — `.../Spaces-N/projects/{project}/deployments/releases/{version}/deployments/Deployments-N`: shows the status of that specific deployment.
103+
104+
Other Octopus URLs (projects, runbooks, tasks) are not expanded.
105+
106+
### What the card shows
107+
108+
The card displays the project name and release version as a heading, then one row per lifecycle phase showing the phase name and deployment status:
109+
110+
| Icon | Meaning |
111+
| ---- | ------- |
112+
| ✅ | Deployment succeeded |
113+
| ❌ | Deployment failed |
114+
| ⏳ | Deployment is executing |
115+
| 🕓 | Deployment is queued |
116+
| 🚫 | Deployment was canceled or timed out |
117+
| ➡️ | Phase is active but has no deployment yet |
118+
| ⬜ | Phase is pending |
119+
120+
The card footer shows when the status snapshot was taken. Paste the URL again to get a fresh card.
121+
122+
If Octopus cannot find the space, project, or release - for example because it was deleted by a retention policy, or because Octopus lacks permission to read it - the card shows a short explanation instead of the status rows.
123+
124+
### Permissions
125+
126+
Octopus reads release and deployment data as the system principal, not as the person who pasted the URL. Space-level visibility applies: if Octopus can see the space and project, the card is shown; if not, nothing is posted. No Octopus login is required from the Slack user.
127+
77128
## Public and private channels {#slack-integration-channels}
78129

79130
By default the Slack app can post to any public channel in your workspace without needing to be invited.

0 commit comments

Comments
 (0)