Connect a Slack workspace
Install the Particle Slack app into your workspace from the dashboard. This is a one-time OAuth step per workspace and produces a reusable connection.
Attach a channel to an alert
Add a
SLACK notification channel that references the connection and the channel to post in.Before you start
- Plan — Slack delivery is part of the alerts feature, so it requires a Team, Business, or Enterprise plan, the same as creating alerts.
- A connected workspace — Connecting a workspace is an OAuth install done by a signed-in user in the dashboard; it can’t be done with an API key. See Connect a workspace.
- An API key — Once a workspace is connected, you reference it from an alert with a standard
X-API-Key, bound to the same project. Create one on the .
1. Connect a workspace
Open the Slack integration
In the , open your project’s settings and find the Slack integration, then click Connect Slack.
Authorize in Slack
You’re redirected to Slack to choose the workspace and approve the Particle app. The app requests permission to list channels and post messages.
/invite @Particle), then it will appear in the channel list.
2. Find the connection and channel IDs
To attach Slack to an alert over the API, you need the connection’sid and the target channel’s slack_channel_id. Both come from the API.
List the project's Slack connections
Response (200)
List the channels a connection can post to
Response (200)
C; private channel IDs start with G.
3. Attach the channel to an alert
Slack is a notification channel like any other. Add an entry to an alert’snotifications array with type: "SLACK", the connection’s id as slack_connection_id, and the channel’s slack_channel_id. You can mix it with EMAIL and WEBHOOK channels on the same alert.
PATCH /v1/alerts/{id}. Remember that notifications, when present in a PATCH, replaces the whole set — include every channel you want to keep. See Create and manage alerts.
slack_channel_name is optional — the server fills it in from the connection’s channel list, so you don’t need to send it. The channel must be one the connection can see (from the channels endpoint), and the connection’s surface must match the alert’s. A connection created from the platform dashboard is PLATFORM, and an alert created with an API key is PLATFORM, so they match by default. An unknown connection, an unlisted channel, or a surface mismatch returns validation_error.What the Slack message looks like
Realtime matches post one message per match, built with Slack Block Kit:- A headline —
Nvidia mentioned on Acquiredfor a mention, orSam Altman appeared on Lex Fridman Podcast as Guestfor a speaker appearance. - An episode card with the episode title linked, the podcast name, and the podcast’s cover art.
- A row of metadata chips: mention/line count, the relevance verdict (
On-Target/Incidental), the podcast’s popularity badge, and its political leaning — whichever apply. - An AI summary of the match, when it’s ready.
- Up to two transcript excerpts, each with the speaker, timestamps, the matched line highlighted, and a Listen to the clip link into the audio.
- Three buttons: Open in Particle (the full result page), Manage alert, and Disable this alert.
DAILY or WEEKLY alert posts a single digest message instead: matches grouped by podcast (up to five podcasts, a couple of episodes each), with the per-match excerpt and clip link. The weekly digest adds an overall sentiment and a short “this week at a glance” recap.
The difference between the two alert kinds shows up in the wording: ENTITY_MENTION messages count mentions, while PODCAST_SPEAKER messages note the speaker’s role (GUEST, PANELIST, CORRESPONDENT, AUDIENCE, or SOUNDBITE_SPEAKER) and count lines spoken.
Delivery and reliability
- Realtime matches post as they’re detected, by the Particle app’s bot, using its OAuth token — there’s no secret for you to manage.
- Failed posts are retried. A transient Slack error is retried automatically.
- Token-level revocation stops delivery for every alert — if the app is removed from the workspace or its OAuth token is otherwise revoked (
token_revoked,account_inactive,missing_scope), the connection is marked revoked and disappears from the list. Reconnect from the dashboard to resume. - Channel-level failures drop only that message — if the channel is archived or the bot is kicked from a private channel (
is_archived,not_in_channel), that single post is dropped (not retried), but the connection stays active and keeps delivering elsewhere. Re-invite the app to the private channel (/invite @Particle) or unarchive the channel to resume delivery to it. - Deleting a connection stops delivery for every alert that referenced it; those alerts simply skip the Slack channel and keep firing their other channels.
Manage connections
List a project's connections
Refresh and list a connection's channels
Delete a connection (soft delete; referencing alerts skip it)
| Method & path | Reference |
|---|---|
GET /v1/projects/{projectId}/slack/connections | List Slack connections for a project |
GET /v1/projects/{projectId}/slack/connections/{id}/channels | List channels for a Slack connection |
DELETE /v1/projects/{projectId}/slack/connections/{id} | Delete a Slack connection |
Related
- Create and manage alerts — create an alert and attach notification channels
- Webhooks — deliver matches to your own endpoint as a signed JSON POST
- Alerts overview — alert kinds, delivery cadence, and the match model