LinkedIn Listens: A Better Way to Prompt for Member Feedback
June 16, 2016
LinkedIn takes its members’ opinions seriously. We are always looking for ways to creatively solicit member feedback. Sometimes we do so proactively by asking focus groups for early opinions on upcoming products, and at other times we request feedback from the very top of our leadership organization. You may have noticed, for example, that our CEO, Jeff Weiner, recently asked the community on LinkedIn for feedback about our user experience. He also asked members for ways in which LinkedIn has recently helped them.
In order to reach even more members and their opinions, we have built a new communication pathway in our redesigned flagship app. On our feed page, a toast (a small, non-obstructive view that overlays part of the screen) sometimes appears to members after they interact with our app, asking whether they’re satisfied so far with the app. At this time, users can choose to either interact with the toast or to simply continue with what they were doing beforehand.
Rate-the-App toast on the Feed page
The two intended user flows are:
- Offer to send the member to the App Store for the opportunity to leave us a rating and review our app. This occurs when the “Love it!” button is clicked.
- Allow the member to give us written feedback about how to improve our app, directly within the app itself. This occurs when the “Could be better” button is clicked.
App Store Review Request Screen Feedback Request Screen
We introduced several best practices while designing and engineering our “Rate-the-App” toast:
Delightful Introduction and Experience for the Member
In order to keep both the initial entrance and the entire on-screen experience pleasant and efficient, we prioritized the following qualities:
- Non-disruptive: The toast and its related animations do not disrupt the user flow. Only after the member completes a positive action (e.g., liking some activity or reading an article) and then returns to the feed do we introduce the toast.
- Non-prohibitive: While the toast is on screen, the member is not inhibited from seeing or interacting with anything in the feed and is also free to navigate to any other page or tab in the app.
- Non-urgent: Since we are asking the member for feedback, we feel it’s best to leave the toast on the screen so that the user interaction with the toast can happen at the user’s convenience, i.e., whenever there is a natural pause in activity.
- Non-repetitive: A member will only see this toast, at most, once in three months, regardless of whether the member chooses to leave a rating, leave a review, or simply dismiss the toast.
Convenience in Sending Feedback
We encourage members to give us their feedback whether it’s positive or constructive, and we aim to make the communication channels as simple and convenient as possible. The toast and feedback flows come with the following qualities:
- No setup required: The member can leave constructive feedback that is sent directly to LinkedIn’s Global Customer Organization without using or setting up a personal email client on the iPhone. All feedback occurs within the LinkedIn app or App Store app.
- Speed: Members can also choose to be sent directly to the App Store to leave a rating or review our app. This is faster than showing the App Store entirely within our app, i.e., as a subview. And, the member visits the App Store with the ability to return to where they left off in our app whenever they’d like.
- Relevant device information included: Relevant operating system, device, and application version information are automatically retrieved and sent along with the custom written feedback to LinkedIn’s feedback endpoint in order to give context to the member’s issues/suggestions.
Flexibility for Use with Other LinkedIn Apps (iOS Discussion)
On a development level, we engineered this feedback feature in Swift and optimized for reusability within our codebase. The goal was to allow other LinkedIn apps to easily incorporate this feature as well. We have many apps in our suite, like Job Search, Recruiter, and Lynda.
Some key decisions in the design and architecture of the feedback feature included:
- Keeping all of the logic in a separate UIView from an external library: The toast is a UIView that we pass on from a separate library that can be absorbed into any LinkedIn iOS app. All of the logic of the interaction flow (animations, edge case handling, etc.) happens in this library, and the client app (e.g., the LinkedIn app) is only responsible for choosing when and how to present the toast, and for what actions to take when the member is done with it (i.e., when the toast is dismissed, the member has submitted written feedback, or the member has left the LinkedIn app to leave a review in the App Store). All of the icons and visual styles originally come from ArtDeco, a pattern library made up of design files and shared code and standards. This helps solidify and bring consistency to LinkedIn’s new look and feel. As a result, a consistent visual experience is ensured across all of our apps.
- Managing competing toasts carefully: Throughout our app, there are various instances of possible toasts that can be shown to the member, such as notification toasts, error toasts, or suggestions for other useful apps. These can come from both the top or the bottom of the screen, so a good member experience ensures that the member is not overwhelmed with multiple toasts at once. This makes for a tricky engineering problem and requires compromise within our app and across our product and infrastructure teams.
By implementing a state management system, we are able to take turns with other visual notifications that the member may receive. The system allows us to automatically dismiss our Rate-the-App toast when necessary and relinquish the screen real estate for a different toast that we want to show.
A class called ToastsManager provides the main infrastructure for toasts throughout our app, and controls the ability to present toasts. When our Rate-the-App toast needs to be presented, it requests that ToastsManager stop showing toasts by changing one of its properties to CannotShowToast. If ToastsManager does not have a current or upcoming toast on the screen, then it allows the Rate-the-App toast to proceed.
Rate-the-App must ask ToastsManager to change ToastsManager’s state to CannotShowToast
Similarly, if ToastsManager needs to present a toast on screen, it checks with all other classes that may be showing a custom toast. Each custom toast class verifies that it is not showing a toast and then accordingly allows the ToastsManager to change its property to CanShowToast. However, if there’s a custom toast on screen, then custom logic decides whether that toast will be dismissed in order to allow a new toast to appear.
Similarly, ToastsManager must ask Rate-the-App toast and other custom toasts to allow ToastsManager to change its own state to CanShowToast
For the Rate-the-App toast, the custom logic simply checks whether the user is currently responding to our toast when a new toast requests to be displayed. This comes by way of a delegate function that is called whenever the feedback flow is exited. As soon as the toast is dismissed or the feedback is received, the Rate-the-App toast relinquishes control of the toast opportunity, should it be necessary.
Flow diagram for Rate-the-App toast’s screens and its callback function
Thanks to this new Rate-the-App feature, we’ve gathered valuable feedback and used it to improve the overall member experience. Also, we’ve received many more reviews in the App Store for our flagship app. In the initial 3-week large-scale rollout of this feature, we saw a 12% engagement rate of members who were prompted for feedback and continued on to let us know that they love the app or that they think it could be better. Overall, we were pleased with this level of participation and also with the number of written feedback responses that were sent to our customer team and left on our App Store review page. Member feedback is the most important information we can receive to improve the app experience, so we made sure that members can easily provide it to us at their leisure.
Thanks to the following engineers and product specialists who helped contribute to this feature: Enrico Tanuwidjaja, Omar Restom, Deepank Gupta, Muhieddine El Kaissi, Owen Chen, Harry Bui, Maulin Patel, Davis Schneider, Yingyan Hua, Ankit Jain, and Dustin Shean.