# Slack integration

> Connect Latchkey to a Slack channel with OAuth, choose what gets posted, and test the connection.

Source: https://latchkey.dev/documentation/slack-integration

## Summary

- Owners/admins connect via OAuth in **Settings, Notifications**: Add to Slack, pick the channel during authorization, done. No webhooks to paste.
- Test, Reconnect (to change channel), and Remove manage the connection.
- Pick which event types post to Slack in the notification matrix.

The Slack integration posts Latchkey notifications into a channel your team already watches. Setup is a one-time OAuth flow done by a workspace owner or admin.

## Connecting

1. **Open Settings, Notifications** The Slack Integration card sits alongside the notification preferences. It is manageable by owners and admins.
2. **Click Add to Slack** You are sent to Slack to authorize Latchkey and pick the channel during the authorization itself; there are no webhook URLs to copy and paste. Slack returns you to the settings page when done.
3. **Confirm the connection** The card now shows **Connected** with your channel name, plus **Test**, **Reconnect**, and **Remove** buttons. Send a test message to make sure it lands.
4. **Choose what posts to Slack** In the notification matrix, enable the Slack channel for the event types your team wants in-channel (many teams start with the Critical tier plus free-tier and trial warnings). Slack toggles in the matrix are admin-only; members keep their personal email, push, and digest choices.

> ****
> To change the target channel, use **Reconnect** and pick a different channel during the Slack authorization. **Remove** disconnects the integration entirely; notification history in the dashboard is unaffected.

## What lands in the channel

Conceptually, every message is built the same way: which event fired, and a link back into the dashboard where the detail lives. Slack gets the headline; the dashboard has the story: the run, the numbers, the report. Expect a prompt to click through, not a wall of data in-channel.

Because of that, channel choice matters more than formatting. Pick a channel the team actually watches: alerts posted into a busy general channel scroll away, while a dedicated alerts channel keeps CI signal visible. Slack follows the same per-type matrix and per-type cooldowns as every other channel, so a noisy pipeline will not flood the channel with duplicates.

## Troubleshooting

| Symptom | What to do |
| --- | --- |
| The test message does not arrive | Confirm the card shows **Connected** with the channel you expect, then send another test. If it still fails, use **Reconnect** to redo the authorization. |
| Messages stopped arriving | Use **Reconnect** and choose a current channel during the Slack authorization; this refreshes the connection end to end. |
| A specific event type never posts | Slack is enabled per event type: check that the Slack channel is on for that type in the notification matrix. |
| You cannot see the Slack card | Slack settings are owner- and admin-only; members do not manage the integration. |
| You want Latchkey out of Slack entirely | **Remove** disconnects the integration; notification history in the dashboard is unaffected. |

For the full list of event types and tiers you can route to Slack, see [Notifications](/documentation/notifications).

### How do I connect Slack to Latchkey?

Owners and admins go to Settings, Notifications and choose Add to Slack. You pick the channel during Slack's own authorization step, and that is the whole setup: there is no webhook URL to generate or paste.

### How do I change which Slack channel receives messages?

Use Reconnect, which re-runs the OAuth flow and lets you pick a different channel. Test sends a message so you can confirm the connection before relying on it, and Remove disconnects the workspace.

### Does every notification go to Slack?

The event types you select in the notification matrix, plus "Managed runner blocked" and "Free tier running out", which post by default once a workspace is connected. Slack is one channel among email and browser push, chosen per event, so you can route critical events to a channel without also posting informational ones there.

---

Latchkey runs CI/CD that repairs its own failures. Agent entry points: https://latchkey.dev/agent.txt, https://latchkey.dev/openapi.json, https://latchkey.dev/llms.txt
