A need for efficiency
The
redesign of the chatbot builder marked a significant improvement in usability, resulting in an uptick in chatbots created by Drift customers. Their ability to build and launch chatbots in a matter of hours enabled them to more easily tailor messaging to their various audiences, a strategy proven to boost engagement.
However, as customers appreciated the ease with which they were able to build new chatbots, they soon found themselves rebuilding the same conversation flows over and over. This repetitive process grew increasingly tedious, especially when updates to these shared conversation flows were inevitably needed. Maintaining consistency across all chatbots became a time-consuming and frustrating process for Drift users.
Example of a simple chatbot with two commonly reused flows
In the fall of 2021, the product team originally tasked with this customer problem decided to tackle this issue with a proof-of-concept called "Reusable Blocks." Reusable Blocks allowed users to turn conversation segments into reusable components which could be used across multiple chatbots. Because this was a highly anticipated feature, the team made some tradeoffs in order to get the feature into customer’s hands quickly and learn. But despite the overall enthusiasm for the feature, the team quickly realized that the feature was not only incomplete, but also fairly buggy. As a result, customers weren’t using it.
I assumed the role of lead designer just as Reusable Blocks was released to our entire customer base with less than enthusiastic reviews. I was tasked with determining a path forward alongside my product management and engineering teammates. We weighed factors such as the time required to rectify the issues, the potential disappointment of users if the feature were to be deprecated, and the trust we stood to lose by leaving it in its current state with only minor improvements.
Rebuilding Reusable Blocks
Ultimately, we made the decision to start over. The original version's bugginess stemmed from its scrappy construction, and the new interaction patterns resulted in usability challenges that needed to be addressed. Despite the substantial engineering effort required to redesign and rebuild Reusable Blocks, doing so had several upsides – the most important being that we were able to leverage existing code and interactions from the chatbot builder.
We didn’t view the initial release as a failure – it helped us narrow in on what was important to customers. But this time around, we wanted to get it right. I established the following guiding principles, by which all of my design choices were made:
- Utilize existing interaction patterns
Minimize the learning curve by retaining familiar patterns that have already been proven successful - Introduce feature limitations judiciously
Only introduce restrictions when they significantly impact project scope - Prevent errors using guardrails and clear messaging
Prevent users from encountering unknown error states, given that Blocks could potentially create severe unintended consequences - Optimize for learning
Get the new version into customers' hands as quickly as possible - High quality standards
The last version was very buggy, and we couldn’t stand to let customers down again
Iterative design and testing
Over a span of three weeks, I rapidly iterated based on usability testing feedback and maintained regular feasibility check-ins with my engineering teammates. After several rounds of design iterations and user testing (including internal users and customers), I had a solution that I was confident about. So the team started on the build.
Several rounds of design iteration and testing
Early customer feedback was extremely positive
After multiple rounds of QA, Reusable Blocks 2.0 was ready for beta. My primary goal was to ensure that customers understood how blocks connected into their chatbots, as a misunderstanding would most likely prevent them from adopting and realizing the value of the feature. So the first round of user feedback was centered around initial understanding of the feature and general ease of use. To assess this, I created a series of unmoderated tasks for each beta user to complete. 100% were able to successfully complete the tasks on their own. I also uncovered one usability issue that we were able to quickly address.
After 2 weeks, we checked in again with our beta users. By now, these users had begun to uncover the updating workflow that, although I’d put a lot of time and thoughtfulness into, was the most risky part of the experience. To my surprise and excitement, no users reported any issues with the workflow.
Notifying user that they've introduced breaking changes that require manual update in the chatbot
Success in beta and beyond
Because no substantial issues were uncovered amongst the initial users, we expanded the beta to a larger user group and then released it to our entire customer base soon after.
As of today, a growing number of customers (currently 55%) are actively utilizing Reusable Blocks in their chatbots, a testament to the successful transformation and usefulness of this feature.