Modernizing Fellow’s Slack app
The bot that grew up and moved home
At Fellow, we recently updated our Slack app, transitioning from a conversational bot to a more robust app experience. This was possible by implementing two newly released Slack platform features:
- The app home tab — an interactive app surface that you can customize to display information, instructions, and more for each unique user
- Modals — another interactive surface that enables more advanced workflows for apps in Slack
In this article, we’ll focus on how to build for the app home tab, including lessons learned and actionable takeaways.
About Fellow’s app on Slack
The idea for Fellow started with a Slack-native chatbot that helped companies build and maintain a culture of continuous feedback. Partnering with the People team at Shopify, we created a Slack app that encouraged employees to request feedback through gentle and timely reminders.
Collecting product feedback, we realized there’s so much more to great work relationships and management culture. Our mission grew to help managers and companies adopt best practices — like holding regular 1on1s, tracking goals, and efficiently running inclusive team meetings. Fellow had evolved into a full web-based application, but our friendly Slack bot had been left behind.
Adopting new Slack features
Slack’s latest platform features inspired us to update our Slack app to be much more intuitive for our users — especially the new home tab.
We’re excited about the home tab as a way of making Fellow even simpler to use. Fellow now puts the most important information in a single, quickly-accessible place. Before, direct message were the only way we could interact with people in Slack. Leading to more (possibly unwanted) notifications that were lost in the continuous stream of conversation.
While useful for specific interactions, chat is not the most natural or efficient way to accomplish everything. In 2016, chatbots were making a big splash, and it seemed that chatting with robots was the way of the future. While this may feel natural in conversation, other UX paradigms are often more efficient, practical, and user-friendly. For example, it feels strange to type “what meetings do I have today?” to see today’s calendar. The home tab freed us from the restrictions of an infinitely scrolling conversation.
An unexpected benefit? We’ve reduced our Slack app’s code, no longer needing the subtleties of chat-based UX. Fellow was built before mature NLP frameworks, so we designed our own system for dealing with chat state. This took the shape of a complex state machine — tasked with tracking user conversation, pausing notifications mid-dialogue, and expiring interaction if the user ghosted: 👻
Building for the app home tab 🏠
So how do you actually get started? First and foremost, the app needs to start by responding to the app_home_opened event, which Slack sends each time a user clicks on your app in the sidebar. How you respond to this event is up to you — we check our database for a matching user, and if we notice that they haven’t gone through our onboarding yet, we’ll show them a welcome message with information about Fellow:
Once the user has configured their Fellow account, we display the most relevant information for each unique user with Block Kit, Slack’s app UI framework. Some of the information (like upcoming meeting times) is time-dependent. To ensure that this is always up-to-date, we schedule background tasks to push content to the home tab — otherwise, the user would see outdated information when clicking on the tab.
Creating richer app interactions
Slack’s app home tab completely changes the way people interact with apps, and if you are building an app for Slack, it’s easy to adopt this feature. Instead of the upfront investment of creating a dialog-based chatbot, you can release a fully functioning app more quickly. We rebuilt our Slack app within weeks of hearing the product announcement — and mostly spent that time debating layout, because there are so many possibilities with Block Kit! By building an app home, you can create more powerful interactivity for your app and a richer experience for your users.