# Slack

The Spectate Slack app connects one Slack workspace to your Spectate team. Alerts arrive in Slack with **Acknowledge** and **Resolve** buttons, and you can declare, update and resolve incidents with the `/spectate` command. Each incident can get its own Slack channel, which Spectate keeps in sync with the dashboard. On-call members get pages, shift reminders and cover requests as direct messages from the app.

## Connect Slack

Owners, managers and admins can connect Slack.

1. In the dashboard, select **Integrations**.
2. Under **Slack**, select **Add to Slack**.
3. In Slack, select the workspace and allow the app.

One Slack workspace connects to one Spectate team. After you connect, choose the channels: an alert channel for alerts, and the settings for incidents.

If **Integrations → Slack** shows **Needs reconnect**, the workspace was connected before some features existed. Select **Reconnect** to give the app the new Slack permissions. Alert channels continue to post until you do.

## Get alerts in a Slack channel

1. Select **Alerting → New channel**.
2. Under **Integration**, select **Slack**.
3. Enter a **Name**.
4. Under **Slack channel**, select the channel.
5. Select **Create channel**.
6. Add the channel to an [escalation path](/alerting/escalation-paths) with a **Notify channel** step.

The list shows public channels, and private channels that the Spectate app is a member of. To use a private channel, invite the app to it in Slack first.

### Alert messages

An alert message has the colour of the severity, the resource and the reason, and a chart when there is data. It has these buttons:

| Button | What it does |
|---|---|
| **Acknowledge** | Acknowledges the alert after you confirm. The escalation stops. |
| **Declare incident** | Opens the declare form for the alert. If the alert already has an open incident, Spectate links to it instead. |
| **Resolve** | Resolves the alert after you confirm. Spectate sends the resolved notifications. If the problem is still there, the alert fires again. |
| **View in Spectate** | Opens the alert in the dashboard. |

Spectate updates the message in place when someone acknowledges or resolves the alert, in Slack or anywhere else. The **Acknowledge** button goes away, and a line such as "Acknowledged by Ada" shows who did it. When the alert resolves, Spectate also posts a reply in the message's thread, which also shows in the channel.

## Who is acting in Slack

Everything you do in Slack, Spectate does as your Spectate account, with your role's permissions. Spectate links your Slack user to your Spectate account the first time you use the app. The email address of your Slack profile must be the verified email address of a member of the team.

If Spectate cannot find a match, it shows a message only to you, and nothing happens. Sign in to Spectate with the same email address as your Slack profile, or ask an admin to invite you. A member who leaves the team loses the link.

## Slash commands

`/spectate` has two aliases: `/inc` and `/incident`. In an incident channel, the commands act on that incident. In other channels, Spectate first asks you to pick an open incident.

| Command | What it does |
|---|---|
| `/spectate` or `/spectate help` | Shows the commands. In an incident channel, also the incident's buttons. |
| `/spectate declare [title]` | Opens the form to declare an incident, with the title filled in. |
| `/spectate update` | Posts an update and can change the incident's status. |
| `/spectate status-page` | Publishes an update to a status page. Outside an incident channel, it can also start or update a status page incident without a Spectate incident. See [status pages from Slack](#status-pages-from-slack). |
| `/spectate ack` | Acknowledges the incident. |
| `/spectate resolve` | Resolves the incident, with an optional closing message. |
| `/spectate roles` | Assigns the commander and the communications lead. |
| `/spectate lead` or `/spectate lead me` | Makes you the commander. |
| `/spectate rename [title]` | Changes the title. |
| `/spectate summary [text]` | Changes the summary. |
| `/spectate sev [level]` | Changes the severity to `critical`, `high`, `medium` or `low`. |
| `/spectate list` | Lists the open incidents. Only you see the list. |
| `/spectate oncall [schedule]` | Shows who is on call now and next for each schedule, and your next shift. Add part of a schedule name to show only matching schedules. Only you see the answer. |
| `/spectate cover` | Asks the others on an on-call schedule to cover one of your shifts. See [cover requests](#cover-requests). |

In an incident channel, `rename`, `summary`, `sev` and `lead` with a value change the incident at once. Without a value, or in another channel, they open a form.

You can also use the **Declare incident** shortcut. On a message, the shortcut makes the message the incident summary, with a link back to the message.

## Incident channels

When **Create a channel for each incident** is on, every new incident gets its own Slack channel. This includes incidents declared in Slack, in the dashboard, with the API, and by an escalation path. In the Slack declare form, you can clear **Create a channel for this incident** for one incident.

The channel name is the prefix, the incident number and the title, for example `inc-42-checkout-errors`. Spectate pins a header message in the channel. The header shows the reference, title, severity, status and commander, with these buttons:

- **Post update**
- **Status page**
- **Roles**
- **Acknowledge**, until someone acknowledges the incident
- **Resolve**
- **View in Spectate**

Spectate posts updates, status and severity changes, role changes and status page updates into the channel, from Slack and from the dashboard. If an incident has no channel, select **Create Slack channel** on the incident page.

### Pin messages to the timeline

To add a message from the incident channel to the timeline, react to it with an emoji. Use the pushpin (`:pushpin:`), round pushpin (`:round_pushpin:`) or bookmark (`:bookmark:`). Spectate adds the text, the author and a link to the message. The timeline shows that you pinned it. Spectate adds each message once, and only for members who can update the incident.

### Nudges

If an open incident gets no update for 30 minutes, Spectate posts a reminder in its channel. The reminder has **Post update** and **Status page** buttons. When someone posts an update or resolves the incident, Spectate removes the reminder. Change the time, or turn nudges off, with **Nudge quiet incidents** in the [settings](#settings).

## Status pages from Slack

In an incident channel, `/spectate status-page` publishes the incident to a status page. In other channels, it asks what to publish:

- **New status page incident** starts a public incident without a Spectate incident. Enter a title, a status, the impact on each component and the public message.
- An open status page incident: post its next update, or resolve it.
- An open Spectate incident: publish it, the same as in its channel.

`/spectate status-page new [title]` opens the form for a new status page incident at once. Both forms can backdate the update with **Happened at**. **Notify subscribers by email** is on by default. Only owners, managers and admins can publish, and Spectate only offers status pages that you can publish to. See [status page incidents](/status-pages/incidents).

## On-call in Slack

For on-call, Spectate sends direct messages from the app. You find them under the Spectate app in Slack. Spectate finds your Slack account by the verified email address of your Spectate account.

### Pages

An escalation path can page you as the person [on call](/alerting/on-call). Spectate then also sends the alert as a direct message, with **Acknowledge**, **Declare incident** and **Resolve**. The message updates when someone acknowledges or resolves the alert. Slack pages do not use credits. To turn them off, clear **Also page me in Slack** under **Your on-call**.

### Cover requests

When you cannot do a shift, ask the others on the schedule to cover it.

1. Enter `/spectate cover`.
2. Under **Shift**, select one of your shifts of the next 4 weeks.
3. Optional: enter **From** and **Until** to ask for part of the shift.
4. Optional: enter a **Note**.
5. Select **Ask**.

Spectate asks every other member of the schedule's rotations. Each one gets a direct message with **Accept** and **Can't cover**. The first person to accept gets an override for the whole window, and Spectate updates all the messages. You get the answers in a thread under your own message, which has **Send reminder** and **Cancel request**. Members that Spectate cannot find in Slack get an email instead. See [cover requests](/alerting/on-call#ask-for-cover) for the full rules.

### Shift messages and handovers

Before each of your shifts, Spectate sends a reminder with **Request cover** and **View schedule**. It also sends a message when your shift starts and when it ends. Choose the time of the reminder, or turn the messages off, with **Shift messages in Slack** under **Your on-call**. The default is **Also 1 hour before**.

A schedule can also announce each handover in a channel. The message mentions who is on call now, until when, and who they take over from. If there is no handoff in the next 90 days, the messages say so. Select the channel under **Slack → Handover channel** on the schedule page.

### On-call user groups

Spectate can create a Slack user group for a schedule and keep it up to date. Mention the group to reach the right people.

1. Open the schedule on the **On-call** page.
2. Under **Slack**, select **Keep an on-call user group**.
3. Enter the **Handle**. Spectate proposes the schedule name with `-oncall`, for example `platform-oncall`.
4. Under **Keep it set to**, select **Whoever is on call** or **Everyone on the schedule**.
5. Select **Save**.

Spectate creates the group in Slack. If a group with this handle exists, Spectate uses that group. If you change the handle later, Spectate renames the group. If you clear **Keep an on-call user group**, Spectate disables the group in Slack.

Spectate updates the group at each handover and when the rotations change. Slack does not allow an empty group. When nobody is on call, Spectate disables the group, and enables it again at the next handover. Members that Spectate cannot find in Slack are not added.

:::caution
By default, Slack only lets workspace admins create and change user groups. A Slack admin must let everyone manage user groups, in the workspace settings under **Permissions → User Groups**. Until then, the schedule page shows that Slack refused the group.
:::

## The Spectate tab

Open the Spectate app in Slack and select **Home**. The tab shows:

- **Declare incident**, **Request cover** and **Open Spectate**.
- **Your on-call**: your shifts of the next 2 weeks, each with **Request cover**.
- **Cover requests**: requests that you can answer, and your own open requests.
- **Open incidents**: up to 10, with **Post update**.

The tab updates after you use one of its buttons.

## Settings

Find the settings under **Integrations → Slack**. Owners, managers and admins can change them.

| Setting | Default | What it does |
|---|---|---|
| **Announcements channel** | **No announcements** | Spectate announces each new incident in this channel, and keeps the announcement up to date. |
| **Create a channel for each incident** | On | Each new incident gets its own Slack channel. |
| **Channel prefix** | `inc` | The start of incident channel names. Lowercase letters, numbers, `-` and `_` only. |
| **Nudge quiet incidents** | **After 30 minutes** | Posts a reminder in an incident channel when nobody posted an update for this long. **Never** turns nudges off. |

## Disconnect Slack

1. Select **Integrations**.
2. Under **Slack**, select **Disconnect**.
3. Select **Disconnect** to confirm.

Spectate disables the alert channels that post through the workspace. If you connect Slack again, they turn on again. Existing incident channels stay in Slack, but Spectate stops posting to them. If someone removes the app in Slack, Spectate disables the alert channels and sends an email, the same as for a [disabled channel](/alerting/channels#when-spectate-disables-a-channel).

## Related

- [Incidents](/incidents/introduction): declare and resolve incidents.
- [Updates and roles](/incidents/updates-and-roles): what Spectate mirrors into the incident channel.
- [Alerts](/alerting/alerts): acknowledge and resolve alerts.
- [On-call](/alerting/on-call): schedules, overrides and cover requests.
