Quietly Growing Users++

On building a Slack bot

Greg Leuch
7 min readMar 16, 2016

Back in December 2015, betaworks released PlusPlus++, a small project experimenting with bots on Slack. It was not the type of project that would see a substantial seed round nor is it anything akin to a baby unicorn. Rather, an it is experiment to try Slack’s growing developer features and new app directory, a continuation of betaworks’ focus on incubation and exploration of new ideas and platforms.

(source: reddit.com/r/gifs/comments/ontaj/karma_points_please)

Chats, points, votes, karma, … and bots.

A brief acknowledgement of the past and present

PlusPlus++ is a Slack bot that allows users to give out and take points from users and things. This concept is not new and not necessarily novel. Prior domain has existed for years, jumping between various platforms along the way (IRC, HipChat, ChatGrape, Slack, …), available in a variety of homegrown, open-source packages. And many more with more higher-level engaged opportunities with scoring, rewards, images, etc. For us, PlusPlus++ was to be the best at being simple while providing easy-to-install use for ourselves, our friends, and every other Slack team.

Even without a bot keeping score, the act of +1 has existed as a symbol in various forums, comment threads, web sites/apps, and general vernacular. Reddit uses community up-voting, Know Your Meme used +1/-1 in comments & forums, and any major review site has some form of voting or scoring. (Remember Google+?)

One of the more common karma bots for Slack (among other variations) is Karmabot, created by Instapaper CEO Brian Donohue (betaworks is an investor in Instapaper). There are many others out there — hand-coded, forked, or something in-between. And for PlusPlus++, we wanted to make it easier for teams to include such functionality without having run their own server instance to run open-source code.

Before bots became a scope

Scrambling to develop on a shifting landscape

As we began our 45 day sprint to build PlusPlus++, we ran into many obstacles with the availability of features provided by Slack. The most challenging decision we faced in our user-installation UX flow was whether to allow users to install PlusPlus++ using the “Add to Slack” button or have users create/copy/paste bot tokens for us to use. Both method presented challenges in how we architect onboarding, installation, listening to messages, and who “owns” the team’s bot.

We ultimately chose to incorporate the “Add to Slack” button to make the installation easy for any Slack user. This decision had a few drawbacks, notably that to use the bot in other channels, the installing user had to be invited into those channels, regardless if the user themselves needed to be or cared to be in that channel. But in the long-run, it made for a quick, painless install for users.

Unknown to us as we began to architect our system, Slack was addressing this problem with expanded bot user functionality, allowing teams to install a full bot user with a dedicated bot token. Other platforms became available, such as BotKit. (Disclosure: betaworks is an investor in Howdy, the company behind BotKit.) Within weeks of launching PlusPlus++, Slack announced their new bot functionality. After a rushed weekend hack session to re-architecting the app to support this new functionality and our currently installed teams, we were quickly able to support bot-user features and allow our teams to upgrade to the new functionality.

(Lesson for those reading: prepare for where you think the direction of upcoming features will go, and develop for such possibilities).

Bots, Privacy, and the Slack app directory

Make sure you communicate privacy with your users

PlusPlus++ is one of the few apps in the Slack directory that is entirely built around Slack yet also provided a public experience for users. We’ve included a public leaderboard for each team, a global leaderboard of things, and the ability to share out individual ++/ -- moments.

In the beginning, we did not make loud mentions that team information might be shared publicly. As a result, some users asked for the inclusion of a privacy mode. Additionally, after being featured in the Slack app directory, we were asked to include a disclaimer that information might be public. (This of course is no surprise given the ecosystem for Slack, but for any future Slack app developers out there reading this, it helps to be up-front about public release of team information.)

Without any external share mechanisms on social media, PlusPlus++ would be nearly isolated within the Slack ecosystem. We see the action of giving or taking points more as a social action, and such actions should be inherently be worthy of bragging. We built functionality to share individual ++/ -- to let users share those moments, but also as a means to gain new teams/users. While such external-driven growth is important and in theory that could happen from the spontaneous desire to share important ++/-- moments on Twitter, Facebook, etc., the reality of this was very little growth that can be attributed to our share functions. The reason for this is primarily that most users either don’t care or fail to notice the subtle share link embedded in each @plusplus mention, a design decision based not on necessity of attention, but made to reduce the level of noise that happens in a given channel while still making such sharing available.

Overall, making certain team information public for team and global leaderboards has been useful for brand perception and user engagement, but the biggest takeaway we’ve seen is that sharing experiences can be improved for both user enjoyment and user growth.

Bots, users, account_inactive and token_revoked

How we are not doing well recapturing dropped users.

Today, we’re seeing lots of different teams using PlusPlus++ for a variety of uses. Some are used in large Fortune 500 companies, others are one-off Slack teams for weekend hackathons or other events.

A side effect we and other apps have encountered are dealing with the various reasons PlusPlus++ would be deactivated on a team, many times are not based on intentional installs but rather the installing user being removed from a team. Say when that employee leaves the company, PlusPlus++ is deactivated when that user is deactivated (account_inactive error message). This is different from an intentional uninstall (token_revoked error message). We’ve seen in many occasions PlusPlus++ being installed by another user on the team, but this does not always happen.

The fact that a shared-used bot can be removed when a user is deactivated has hurts long-term retention without proper re-engagement — something we’re beginning to explore.

(source: giphy.com/gifs/free-finance-pse-ByM7XBf6s2RsQ)

Retention, Growth, and Spread

Teams++, Users++, Retention+-, Re-engagement--

I’ll state this simply: we’ve nearly 2k team installs, of which 1.5k are still active. We have a reach of 80k+ users, 12% of those users having given over 152k ++/-- actions. Overall, we’ve seen a day 30 retention rate of around 45% that drops only a few points through day 90.

Privacy, although stressed as important earlier in this post, does not seem to be a big issue for most teams. Only 3% of the currently installed teams have enabled privacy mode.

On a daily basis, we’re seeing a growth of 25–40 teams during a given weekday. After our initial launch, we were only seeing 5–10 a day. We’ve done very little after launch to garner attention, relying solely on the Slack app directory, ProductHunt, a few medium posts, and the occasional tweet from a happy PlusPlus++ user. We’ve also seen organic installs from existing users, with more than 200 teams having been installed by someone who was previously using PlusPlus++ in another team.

In fact, the most common request we received from teams has contributed to retaining users. Teams previously using other karmabots had that ++ behavior instilled upon their users, so creating the ability to import points from existing karmabot systems became beneficial for them and us. We built the ability to import scores from existing databases and found that having import functionality improved user retention, especially with larger, well-established teams.

Given the nuisances of installing once into multiple closed ecosystems, these stats are impressive. But can be greatly improved with further feature development and re-engagement. With regards to uninstalls, we’ve yet to attempt any re-engagement email or followup with the nearly 5k teams that had previously tried PlusPlus++. With existing installs, we’re struggling to find an appropriate system for making PlusPlus++ known in teams. We’ve tested a weekly report DM’d to the installing user, but much more can be done. Re-engagement is important for the future of PlusPlus++.

(source: futureisnext.com)

PlusPlus*2, PlusPlus^2, logn(PlusPlus), …

What is next forPlusPlus++?

Along the way, we’ve seen how we can grow PlusPlus with new features and expansion into other chat platforms. Betaworks itself is continuing to explore new and engaging ideas on Slack, Telegram, Kik, and even SMS. We are constantly looking at how various studio companies, investments, projects, and new ideas can engage with users on these platforms.

Stay tuned++.

If you want to install PlusPlus++ into your Slack, click here.

— —

Greg Leuch is Head That Wears Many Hats (Product) at betaworks. His focus is on interaction design, early-stage development, and project management. Lately his attention has centered around bots, bots, and more bots.

You can find him at @gleuch on Twitter, Instagram, Medium, etc.

--

--

Greg Leuch

CTO at Iris Nova / @drinkdirtylemon. Previously #chatbots @PonchoIRL, @FFFFFAT (RIP), @betaworks, @BuzzFeed, @XOlator, @KnowYourMeme.