---
title: "Slack Plugin for Orangescrum Self-Hosted"
description: "Task alerts in Slack channels, buttons that write back, slash commands, and per-project channel mapping. For Orangescrum self-hosted."
canonical: https://www.orangescrum.com/self-hosted/plugins/slack
---

# Slack Plugin for Orangescrum Self-Hosted

> For the complete documentation index, see [llms.txt](https://www.orangescrum.com/llms.txt).

1.  [Home](/)
2.  ›
3.  [Self-Hosted](/self-hosted)
4.  ›
5.  [Plugins](/self-hosted/plugins)
6.  ›
7.  Slack

# Slack

by [Orangescrum](/) · Productivity

Self-HostedVerifiedChatOps

Connect your Slack workspace to your Orangescrum install. Map a project to a channel and task activity arrives there as a formatted message, with buttons that act on the task directly. A slash command and an app mention let people list their tasks, create one, change a status, or add a comment without leaving Slack. Inbound requests are verified with your app signing secret and old ones are rejected.

Installs

Available

Active deployments

Support

Vendor Supported

Priority response

Trust

Self-Hosted

Your infra, your data

$499/year

Per company • Add-on to any Self-Hosted plan

[Buy & See All Plans](/self-hosted/pricing#addons)[Talk to Sales](/contact-sales)

-   Project to channel mapping with per-mapping event filters
-   Task activity delivered as formatted Slack messages
-   Buttons on a message that act on the task
-   A slash command and app mention for the common actions
-   Per-person account linking so actions are attributed correctly
-   A downloadable app manifest to create the Slack app
-   Inbound requests verified with your signing secret
-   An event log recording every message delivered

Pairs with [Self-Hosted Core ($1,500/yr) or Business ($2,250/yr)](/self-hosted/pricing)

[Overview](#overview)[Features](#features)[About](#about)[Install](#install)[FAQ](#faq)

## Screenshots

A task message in a channel with action buttons

Project to channel mapping with event filters

Slash command listing the caller's tasks

## Key Features

### Project to Channel Mapping

Map each project to the channel that cares about it. A project can feed several channels, and each mapping picks the events it wants so a busy channel stays readable.

### Formatted Task Messages

Task activity arrives as a structured Slack message rather than a paragraph, so the title, status, assignee, and due date are laid out and scannable in the channel.

### Buttons That Act

Interactive buttons on a task message act on the task itself, using the Orangescrum account linked to the Slack user, so the change is attributed to a person rather than to a bot.

### Slash Command and Mentions

The same short command set works as a slash command or by mentioning the app: help, your tasks, create a task in a project, change a status, and add a comment.

### Events From Anywhere

Notifications are raised from the task layer, so a change made in the Orangescrum interface reaches the channel exactly like one made from Slack.

### Per-Person Account Linking

Each person links their Slack identity to their Orangescrum account, so what they do from a channel carries their name and respects their permissions.

### One-Click App Install

A standard authorisation flow connects the workspace, and per-person linking rides the same path. No tokens copied between systems by hand.

### Downloadable App Manifest

The plugin generates the app manifest for you to paste into Slack when creating the app, so scopes, commands, and endpoints are right the first time.

### Signed and Time-Bounded Requests

Every inbound event, command, and button click is verified against your app signing secret, and requests whose signed timestamp is too old are rejected, so a captured payload cannot be replayed later.

### Channel Picker

The mapping screen lists the channels the app can post to, so mapping a project is choosing from a list rather than pasting a channel identifier from somewhere else.

### Admin Settings and Connection Test

The bot token, signing secret, and defaults live in one screen with a test button that confirms the workspace connection before anyone wonders why nothing is arriving.

### Event Log

Deliveries are recorded with their event, the mapping used, and the outcome, so a silent channel is something you can look up rather than guess at.

## About this plugin

### Why Slack for Orangescrum?

Status updates that live only in a project tool get read by the people who were going to check anyway. Putting task activity in the channel where the team already talks means the update reaches everyone, and the obvious response is one click away rather than a login and three screens.

### Mapped, filtered, and readable

Each project-to-channel mapping picks the events that channel wants, so a delivery channel can take everything while a leadership channel takes only the changes that matter. Messages are laid out as structured blocks, which is what keeps a busy channel readable rather than a wall of near-identical sentences.

### Actions that carry a name

Buttons and commands act as the Orangescrum account linked to the Slack user, so a status change from a channel is recorded against that person, respects their permissions, and shows up in history the same way a change made in the application would. Nothing is attributed to a generic integration account.

### A short command set on purpose

The bot answers help, lists your tasks, creates a task in a named project, changes a status, and adds a comment. That is the set people actually use from chat. Keeping it short means the commands are memorable and the failure modes are obvious, rather than shipping a query language nobody can recall under pressure.

### Inbound requests you can trust

Every event, slash command, and button click arriving from Slack is verified against your app signing secret before anything is acted on, and a request whose signed timestamp is too old is rejected outright. A payload captured off the wire is useless a few minutes later.

### Your workspace, your server

You create the Slack app in your own workspace, using a manifest the plugin generates for you, and it talks to your install. Task data goes from your server to Slack and back, with no third-party relay in the path holding either side's content.

### What's included

-   Slack app installation through the standard authorisation flow
-   Per-person account linking between a Slack user and an Orangescrum account
-   A downloadable app manifest covering scopes, commands, and endpoints
-   Project to Slack channel mapping, with several mappings per project
-   Per-mapping event filters so each channel takes only what it wants
-   A channel picker listing the channels the app can post to
-   Task activity delivered as structured Slack messages
-   Interactive buttons on task messages that act as the linked user
-   Slash command and app mention support for the same command set
-   Bot commands: help, my tasks, create a task in a project, change a status, and add a comment
-   Notifications raised from the task layer, so interface changes notify too
-   Signature verification of every inbound event, command, and interaction
-   Rejection of inbound requests whose signed timestamp is outside the tolerance window
-   Administrator settings for the bot token, signing secret, and defaults, with a connection test
-   An event log of deliveries with event, mapping, and outcome
-   A health endpoint for monitoring
-   Multi-tenant company-scoped data isolation

### Compatibility

Requires the Orangescrum Self-Hosted edition running PHP 8.2+, CakePHP 4.6+, and PostgreSQL 16. The plugin folder is Slack and it is gated by the SLACK\_ENABLED flag in config/constants.php. You create the Slack app in your own workspace using the manifest the plugin generates, and the bot token and signing secret are stored per company. Your install must be reachable over HTTPS from Slack, because events, slash commands, and button clicks are delivered to your server as inbound requests. Outbound messages go to the Slack web API, so the server needs outbound HTTPS. Multi-tenant aware, so every connection, mapping, user link, and event log row is company-scoped.

## Installation

A self-hosted install takes a few minutes. Buy the add-on, drop the plugin into your `plugins/` directory, run the migrations, and you're live.

1.  1
    
    ### Buy the add-on
    
    Purchase the Slack add-on from /self-hosted/pricing. Pricing for this add-on is being finalised, so confirm the current figure with sales before you budget.
    
2.  2
    
    ### Drop the plugin into your install
    
    Copy the Slack/ folder into plugins/ on your self-hosted Orangescrum server and register \`Slack\` in src/Application.php with routes and bootstrap enabled.
    
3.  3
    
    ### Enable the feature flag
    
    Confirm \`define('SLACK\_ENABLED', true);\` in config/constants.php. While the flag is false nothing is delivered and no inbound request is processed.
    
4.  4
    
    ### Run the migrations and the permission seeder
    
    Run \`bin/cake migrations migrate --plugin Slack\` and \`bin/cake migrations seed --plugin Slack --seed SlackRbacSeeder\`. Both are safe to re-run.
    
5.  5
    
    ### Create the Slack app from the generated manifest
    
    Download the manifest from the plugin's settings page and paste it into Slack when creating the app, so the scopes, slash command, and endpoints match your install.
    
6.  6
    
    ### Install the app and save the credentials
    
    Run the install flow to connect the workspace, then save the bot token and app signing secret in the Slack admin settings and use the test button to confirm the connection.
    
7.  7
    
    ### Link accounts and map a project
    
    Have people link their Slack identity to their Orangescrum account, then map a project to a channel, choose the events that channel wants, and post a change to check the message arrives.
    

## Frequently Asked Questions

### How do I create the Slack app?

▾

The plugin generates an app manifest you download and paste into Slack when creating the app. That fills in the scopes, the slash command, and the endpoints for events and interactivity, so the pieces line up first time. You then install the app to your workspace through the normal authorisation flow.

### Can one project post to several channels?

▾

Yes. Mappings are records rather than a single setting, so a project can feed several channels and a channel can receive several projects. Each mapping has its own event filter, so different channels can hear about different things.

### Who is a change from a Slack button attributed to?

▾

The person who clicked, provided they have linked their Slack identity to an Orangescrum account. The action runs as that account and respects that account's permissions. It is not recorded as coming from a bot or a shared service user.

### What can the bot do?

▾

A short, fixed list: show help, list your tasks, create a task with a title in a named project, change a task's status, and add a comment. It is not a natural language assistant and it does not answer free-form questions. Anything else belongs in the application.

### Does it import Slack conversations into Orangescrum?

▾

No. The flow is task activity out to Slack, plus the specific write-backs from buttons and commands. Channel messages are not archived into Orangescrum, threads are not attached to tasks, and there is no message search over Slack content.

### How are inbound requests from Slack secured?

▾

Each one is verified against your app signing secret before it is acted on, and a request whose signed timestamp falls outside the tolerance window is rejected. That means a payload captured from the network is not usable a few minutes later.

### Where do I look when a channel stops receiving messages?

▾

The event log records every delivery with its event, the mapping used, and the outcome, and the admin settings screen has a connection test. Between them you can tell whether nothing happened, a filter excluded the event, or the delivery itself failed.
