Reacji Relay

A Slack app that forwards messages to different channels, based on the emojis users react to the message with. Supports private-channel destinations and a robust administrative interface.


History

Disappointed that Slack’s home-grown Reacji Channeler app did not support targeting private channels with their forwarding rules, I took it upon myself to create a more robust solution.

As a frontend engineer, I wanted to do as little backend work as possible. Fortunately, in 2024, database-as-a-service providers and edge function technologies make avoiding backend work an achievable goal. Having experimented a bit with both Supabase (DBaaS) and edge functions with DigitalOcean, I was comfortable with the challenge of putting those ideas together into a production-ready app.

“Production-ready” is a formidable aspiration outside the technical details. I have yet to implement any sort of payment model (even edge functions aren’t free), airtight privacy policy, or formalized support channel. Even after installing the app in your workspace, the activation flow is nothing more than sending me an email at the moment!

However, a “version 1.0” of the app is largely code-complete. For the sake of giving the app a public web presence, to begin soliciting alpha testing feedback and share what I’m working on, I’m establishing this project page.

Click the link below if you’re interested in trying out the app!

Add to Slack

Usage

The app can be configured using four commands:

  • /reacji help: Displays a message with usage information.
  • /reacji list: Displays all forwarding rules currently configured for your workspace.
  • /reacji add :emoji: #destination: Adds a forwarding rule for any messages who receive the :emoji: reaction. They will be forwarded to the #destination channel.
  • /reacji remove :emoji: #destination: Removes the forwarding rule for the given emoji and destination.

Note that the app must be manually invited to each channel where reactions should be observed, and where posts should be forwarded. The app will not see messages or reactions in channels it is not invited to, and it will silently refuse to post messages in destination channels it is not a member of.

Additionally, the app will never re-post messages from DMs or private channels, regardless of destination. The app can safely be invited to private channels (to serve as a destination) without concern that private information is re-posted publicly.

Support

For now, any questions or concerns should be sent directly to me via email. Creating a more robust support system is high on my priority list!

Privacy Policy

A formal Privacy Policy will be drafted in the near future. In the meantime, the following is a plain-English overview of what you can expect from using Reacji Relay:

  • Authentication is handled entirely through Slack. We do not collect, manage, or even see login information from users.

  • The Slack app itself asks for certain permission scopes, such as reading message reaction data and posting to private channels. These permissions are used to provide the essential functionalities of this app. It will never post unsolicited messages or pull post content from Slack.

  • Information stored in the database includes Channel IDs, Team/Workspace IDs, User IDs, message timestamps, and emoji identifiers. Of these, the only “plain-English” information are emoji identifiers (e.g. :sweat-smile:). All other information is set by Slack. Their IDs typically look like C12345 or T67890 (a letter followed by numbers). In other words, they do not carry personally-identifiable information.

  • When deleting/de-registering your application instance, all data related to your workspace is automatically deleted from the system. Nothing is retained.

  • Email the support address if you desire an export of your data.