engineering

Submitting Chessbot to the Slack App Directory

What does it really take to get an app listed on Slack’s app directory and what is the experience like?

By: Chris Saylor | October 19, 2018 • 3 minute read

This is the follow-up post on building a chessbot for Slack.

The main focus on the previous segment was on technical engineering: authentication, request handling, image rendering, and chess rules. However, when submitting an app to the Slack App Directory, one has to take a step back and consider the entirety of the app from the user’s perspective.

Submission process

The first thing you are greeted with when submitting an app is a rather intimidating checklist.

In its entirety, this checklist probably has about 50 items to consider which are broken into smaller subsections to help manage. They range from testing considerations and security implication to customer service. After submission, a member from Slack’s directory review team will go through the application, do some of their own testing interacting with the app, and then either approve or reject with comments to address.

Review Process

A critical factor for apps of this nature is how good is the onboarding process of a user. Can the user without me standing over their shoulder guiding them along interact properly with the software? Are there enough visual (or otherwise) clues to guide the user. As the designer and developer of the bot I am intimately knowledgable with how it works, so I was very pleased with their review feedback catching some areas I wasn’t paying attention to that a normal user might struggle with.

The first feedback item was a general help message. I had built in a help command to the bot which responds with some general notes and a link to get more help, however the bot itself can be directly messaged without the app_mention event. Messaging the bot in that manner would not generate a response. I implemented listening to the message event which gets fired in the case of direct messages to the bot and display the same help text as the app_mention handler.

Next, the game challenge workflow: this is the main crux of starting a game in ChessBot. The app review team rejected saying that it didn’t work and the bot didn’t respond further after a challenge was issued. It wasn’t that the app had failed to issue the challenge, it failed to let the challenger know it had successfully issued the challenge. There wasn’t feedback to let the challenger know that we were waiting on the challengee to accept. In this case, I implemented an ephemeral message (visible only to the challenger) that gave some feedback on their issued challenge.

Finally, we needed to setup some ancillary items such as a website with our slack install button, privacy, and a support email address.

Future Challenges

Slack’s platform changes at a very fast clip. Already on my list to keep support of the app:

  • Implement secret signing HMAC security token verification. The old request token check has been deprecated.
  • Recently announced in this Slack blog post, they are reversing course on how workspace keys work and are going to require expiring tokens soon. This means I will need to implement rotating bot tokens via a refresh token.

They do provide a nice way of keeping up to date with these changes via twitter and RSS, which you will need to stay on top of if you want your app to stay on the app directory.


Overall, I had a really good experience with getting ChessBot listed on the Slack app directory. The Slack review team were patient and helpful, and did make the app a little bit more accessible to new users.


Related Content