Send notifications to Slack
Post build failures, release uploads, and rollout changes to a Slack channel and mention the person who triggered them.
Slack channels post a message when a build finishes, a runner goes offline, or a release or rollout changes state. Each message links to the build or release in Oore. The message can mention the person who triggered the build or release, from a list of Slack member IDs or a bot token lookup.
Oore sends every request from the backend host. Slack never calls back into Oore, so the backend stays private.
What you need
- A Slack app with an incoming webhook for the target channel
- Optionally, a bot token from the same app with the
users:read.emailscope - A Public URL (HTTPS) set to the browser-visible Oore URL in the External access network settings under Settings > General, so messages can link to the build or release
- The Owner or Admin role in Oore
1. Create the Slack app
- In Slack, create an app for your workspace.
- Under Incoming Webhooks, turn webhooks on and add a webhook for the channel. Copy the webhook URL.
- To mention people, add the
users:read.emailbot scope under OAuth & Permissions, install the app, and copy the bot token. It starts withxoxb-.
2. Add the channel in Oore
- Open Settings > Notifications and select Add channel.
- Enter a Name and set Type to Slack.
- Choose a Project to post only that project’s events, or keep All projects. Runner alerts only go to channels for all projects.
- Paste the webhook URL into Incoming webhook URL and, if you have one, the bot token into Bot token (optional). To mention people without a bot token, or to mention people who push to Git, list them under Slack member IDs (optional) (see Mentions).
- Under Events, keep All events, or choose Selected events and tick the ones to send.
- Select Create channel.
- Open the channel and select Test.
The test message says whether mentions work for the email you signed in with, so a missing mapping or a mismatch between your Oore email and your Slack email shows up here.
Events
| Event | Sent when |
|---|---|
| Build approval needed | A build waits for a maintainer’s approval |
| Build succeeded | A build succeeds |
| Build failed | A build fails. The message links to the build logs |
| Build canceled | A build is canceled |
| Build timed out | A build exceeds its timeout |
| Build expired in queue | A queued build expires |
| Release uploaded | A release is uploaded to a store track |
| Release approval needed | A release waits for approval |
| Rollout increased | A staged rollout moves to a higher percentage |
| Rollout halted | A staged rollout is halted |
| Rollout complete | A rollout reaches 100% |
| Release failed | A release fails |
| Tester feedback | A tester sends feedback from the QA portal |
| Runner offline | A runner stops reporting (all-projects channels) |
All events also sends events added in later releases.
Messages post within a few seconds of the change. If Slack does not accept a message, Oore tries again up to four more times over the next eight minutes. The delivery shows as pending until then. Each channel’s page shows its Delivery history.
Tester feedback
Testers can select Feedback on the latest release in the QA portal. The note carries their device, OS version and app version, which the form fills in and the tester can edit, plus an optional screenshot. It shows on the build’s Timeline tab and posts to the project’s channels with a View feedback button. Feedback messages do not mention anyone; they name the tester instead, by display name, or by email when the tester has no display name. Webhook payloads always include the tester’s email.
Anyone who can install the build can send feedback. Each person can send 10 notes per 10 minutes. Screenshots must be PNG, JPEG or WebP images of 5 MiB or less and need artifact storage.
Mentions
Oore works out who to mention in this order:
- Slack member IDs on the channel. Each line maps an Oore sign-in email or a Git username to a Slack member ID, for example
[email protected] U0123ABCDoroctocat U0123ABCD. Builds started from Oore or the API match the sign-in email. Builds triggered by a Git push or merge request match the Git username. Releases match the email of the person who acted. This needs no bot token, so it works with an incoming webhook alone. - The bot token. If the email is not mapped, Oore looks it up with Slack’s
users.lookupByEmail. Git usernames cannot be looked up this way, so map them under Slack member IDs. - Plain text. Otherwise the message names the person by email or Git username without a mention.
To find a member ID in Slack, open the person’s profile, select the More menu, and choose Copy member ID.
The test message checks the mapping for your own sign-in email first, then the bot token.
Verify the result
- Open the channel in Settings > Notifications and select Test. Slack shows the message in the channel, with a mention when the mapping or bot token resolves your email.
- Run a build that matches the channel’s events. A message links to the build within a few seconds.
- Check Delivery history on the channel’s page. Each delivery shows its event and whether Slack accepted it.
Troubleshooting
The test message does not arrive
The webhook URL is wrong, or the Slack app was removed from the channel. Open Delivery history for the error, then add a new incoming webhook in Slack and enter it under Replace URL on the channel’s page.
Messages have no link to Oore
The Public URL (HTTPS) is not set. Set it in the External access network settings under Settings > General.
The message names a person instead of mentioning them
Oore could not map the person to a Slack member. The test message says why for
your own email. Add a line under Slack member IDs (optional), or add a bot
token with the users:read.email scope. A push from Git needs a member ID
line for the Git username, because the bot token can look up only emails.
Runner alerts do not arrive
Runner offline alerts go only to channels set to All projects.
A delivery stays pending
Slack did not accept the message. Oore retries up to four more times over eight minutes. After that, the delivery shows its last error.
Next step
Require approval for builds and keep All events on, or tick Build approval needed, so maintainers hear when a build waits for them.