Week 1 of My App in the Slack App Directory
TL;DR I created an App for Slack and in one week 350+ teams have installed it and created 950+ tasks. In the article I describe the creation process, technical stack, publishing the app and results.
It all started about a month ago when Slack announced their App Directory. It is a great initiative as they are turning their messaging app into a platform.
I wanted to get started right away but I needed an idea. As it was still early days for their platform there are not that many apps developed yet so the possibilities are endless… but what can I do? I wanted something simple, to get my feet wet and see how it goes.
While using Slack at work, I realised that sometimes you need to take a quick note, something that you need to do later.. You can use /remind but I don’t really want to be reminded about it, I needed a list, like a … hmmm … a to-do list!
I was sold on this idea to build a quick and simple to-do list that you can manage inside Slack. My initial scope would be very simple. A slash command that would let you add, remove and lists tasks from your personal to-do list.
When you create a slash command in Slack, you need an endpoint that Slack is going to hit every time someone uses the command along with the data related. More info here. You have 3000 milliseconds to respond with a message that is going to be presented back to the user. Quite simple and effective.
Right away I decided to go with Node.js + Express due to the simplicity of getting something like this up and running, but I needed a place to store the data. With not a lot of time in my hands I decided to use Parse.com If you are not familiar with their service, they basically are a PaaS that will be the model layer of your application. You store your data in their servers and then you use one of their libraries to manage it. They also let you host your Node.js application (with some restrictions) and is free until you get more than 30 request/second (This would be a great problem to have). For simple apps it is a great solution. [big note here, Parse announced they are shutting down in 2017]
Getting ready to publish
After about a week or so working on this after work, I had the slash command running as expected. To make it easy for teams to install your command you need to create a Slack App. This is quite simple but I needed to get a few things done before submitting my request.
- I needed a website where I can place the Slack Button
- A way to offer support (an email address at least)
- Along with some other stuff
This requirements took me another week or so but I finally was able to publish Zlapps.com, a small place where I will publish all the apps (hopefully more than 1) that I will create for Slack. With a free template, a $3.99 domain and free hosting from Parse, I was ready to submit my app.
The approval process
The 28th of December 2015 (13 days after they announced their platform) I submitted my request to add /todo to the Slack App Directory. It was a simple form and I got an email right away thanking me for applying. From that day I didn’t hear anything back until the 14th of January. It does seems like a bit too long but in all fairness it was the end of the year and I was not really in a rush.
Amy from Slack responded to me with feedback from my app and a few details that I forgot to add in the application. My “Add To Slack” button was not working correctly so after a few days and a few emails back and forth, on the 20th of January my /todo app was live in the Slack App Directory.
First Week Results
Once I had a link for my /todo app on Slack, I promoted it on Twitter , Reddit and Hacker News with pretty much no reaction or comments. The next day I had a look at my Parse dashboard and I was blown away by the numbers, 50 teams had installed my app!! And the number has been growing since then.
Of course this is not exponential growth or a million dollar app, but I was really impressed by the numbers considering that my only traffic source is pretty much being in the Slack App Directory. I didn’t have any special mentions, or was featured in any article. In the above chart you can see the number of teams growing per day, getting around 35o by the 7th day and the total number of tasks reaching 950 at the same time.
One of the available commands in my /todo app is the ability to send me feedback. Simply type “/todo feedback awesome app” and I get an email with that text. I was overwhelming by the number of emails from people suggesting features and saying nice things about the app. Those first users where those early adopters that you want to pay attention to. Some of them even contacted me through the contact form on my website and I exchanged a few emails with them bouncing ideas for the next version.
I would highly recommend anyone looking into building an application like this, to make it super easy for people to leave their feedback.
Version 2.0 released
My original idea was to create a personal to-do list, but after a few days out in the wild and with the feedback that I got, it became quite obvious that people were after a “public to-do list” that they can share with their peers. I didn’t waste any time and got back to work and today I’m releasing a new version of /todo! Now the to-do lists are per channel or private conversation and any of the participants can read, add or remove tasks. More details here or add /todo to your team
What I would do different next time?
When you install the app, I only asked for the minimum amount of permissions that the app needs (basically just to add a slash command and the ability to post a message in a channel). I’m not capturing any team details or user details. I’m happy with this approach but unfortunately I do not have a way to contact my users. I should have put a way for people to opt-in with their email or extra Slack permissions to get notifications by /todo. That way I could let them know about my new version, known issues, etc.
This was my first article in Medium so I hope you enjoy reading it :) Happy to hear questions. feedback or just :+1:
Icons by Linh Pham, SimpleIcon and Freepik from Flaticon licensed under CC BY 3.0