•over 4 years ago
Getting the user experience right for a newsfeed is quite the challenge. Many apps end up showing completely irrelevant content to their users. Companies like Instagram, Quora, Etsy, Linkedin and Facebook have shown us a few tricks about providing an engaging newsfeed experience. At Stream, we’ve helped thousands of companies with their feeds. Every app and every community is unique so not all of these tips will apply to you. This blogpost will cover 13 best practices and will hopefully give you an idea or two about how to improve engagement within your app.
Part A. Onboarding
A newsfeed is a way to personalize the content a user sees in your app. Feeds only work well if your users have indicated what they are interested in. The following 4 tips ensure your users get off to a good start:
Tip 1: Automatic follows - Facebook likes
When a user signs up you can automatically follow interesting topics/artists etc. based on their Facebook likes.
Tip 2: Automatic follows - Connections
Depending on your app you might have access to the user's phone contacts, Facebook friends or Twitter followers. Signup is a good moment to automatically follow these connections within your app.
Tip 3: Manual selection
In addition to the automatic follows, you should also show the user a manual “who to follow” page. Try to focus on high level concepts such as topics, styles, genres, sites etc. instead of individual users.
Tip 4: Repeat the “who to follow” flow
After your app has been around for a while, many users will end up following inactive accounts. This can be disastrous for your user experience. If a user comes back after a long period of inactivity be sure to trigger the “who to follow” flow again.
Part B. Deciding what a user can follow
One of the most important decisions is which things your users can follow. Most apps with feeds allow you to follow other users. That’s a start, but depending on your app it might make sense to follow: topics, genres, sites, shops, playlists, discussions etc. Again, what works is highly dependent on your app.
Tip 5: Meta feeds
There’s one common trend though. It helps if there are multiple ways to discover content. Take the example of Quora, you can follow users, but you can also follow topics. Topics don’t produce questions but the best questions tagged with this topic show up in your feed. Another example is Wanelo. They allow you to follow users and shops. The best items from these shops will show up in your feed.
Part C. Scalability
The Twitter fail whale became an internet meme, Facebook often took 5 seconds to load, Tumblr struggled with a year of technical debt, Friendster…. well. These are just the famous examples, many mid-size to large companies struggle with scaling their feeds.
Tip 6: Don’t reinvent the feed
A few years ago you would have had to build your own newsfeed technology. Nowadays it’s easy to solve the challenges around scalable feeds. We’ve open sourced Stream-Framework. It allows you to build a scalable feed using Redis or Cassandra. Over the past years it’s grown to become the most widely used solution for building scalable feeds and has been downloaded more than 250,000 times. The github repo also lists some of the best articles about the underlying technological challenges. Setting up Stream-Framework is unfortunately quite difficult and time-consuming. This was one of the reasons why we’ve started getstream.io; our service allows you to add a scalable feed to your app in just a few minutes, you can give it a try in this 5m interactive tutorial.
Part D. @Mentions and hashtags
Hashtags and @mentions can seem like minor features. Nothing could be further from the truth. Let me explain why:
Tip 7: @mentions and hashtags need to be high on your roadmap
@mentions are a great way to selectively notify certain users about an activity. Even though you’re only notifying a few users, it can have a large impact. A discussion between 2 or 3 users will often spark more activity, which spreads through your community. Getting the conversation started is the most difficult bit and @mentions are essential for that. Hashtags allow your users to tag the content in the activity. If you enable search on hashtags this enables discussions to form around topics or events. In addition, hashtags can also be an important piece of data for use in personalization algorithms.
Part E. Notifications & Aggregation
Aggregation is particularly important for notification feeds.
Tip 8: Aggregate your notifications
You need to setup aggregation for your notification feeds to make sure your product is usable for power users. For example, don’t show a notification for every @mention, like or comment. Collapse the notifications based on the time, type of notification etc. “256 people followed you today” is a much better notification than your phone buzzing 256 times.
F. Ranked feeds
99% of all feeds show the activities in chronological order. For most applications, the user doesn’t care about the exact time an activity was posted. Unless real time is a core component of your app, ranking feeds chronologically is often sub optimal. Ranked feeds take other factors into account beside the age of an activity. Some common examples include:
- Popularity (based on likes, comments etc)
- Featured content
- Promoted content
- Editorial content
To quote the creator of the newsfeed, Andrew 'Boz' Bosworth: “If I log in once a day and want to see the best stories, I think most developers would be better off spending time working on the relevance”.
Tip 9: Use ranked feeds
Once you have more than a few dozen of activities showing up in a user’s feed you want to implement ranking. Don’t put this off just because it’s challenging from a technical standpoint. Stream’s decay algorithms give you full control over how to rank your feed. If you’re looking to build this in-house Elastic is a great option.
Part G. Follow suggestions
Follow suggestions are an important way to help your users discover feeds. Here are a few common data sources to base your follow suggestions on:
- The social graph: If many of your friends follow a certain person, you might also know him/her.
- Quality scores: If a certain feed gets a high engagement-to-impression ratio you probably want to suggest it to other users.
- Famous users: You’ll often want to recommend the famous/most prestigious users on your platform. There are two benefits to this approach. First it helps your users follow interesting content. Secondly it ensures that famous users on your platform reach a large audience, which in turn keeps them engaged in your community.
Tip 10: Follow suggestions
Setting up follow suggestions helps you make sure your users follow active members of your community. Graph tool and scikit-learn are great open source tools for powering follow suggestions. If you’re a user of Stream, contact our personalization team to help you setup follow suggestions.
Part H. Analytics
Tip 11 - Track impressions and engagements
To ensure your users are having a good experience with the feed, you want to track impressions and engagements. You should know which activities the user sees (impressions) and which ones they interact with (engagements). Also, you should detect common issues such as feeds with old content, feeds with a low engagement score etc. In addition, you’ll want to learn which of your users are creating highly engaging content and which ones are creating low quality/spam content. The analytics data can also be used for follow suggestions and feed personalization. Here are my top 5 recommendations for an analytics solution:
- Stream’s analytics platform (tailored to feeds)
- Database (best for small apps)
- Elastic + rollups
- Druid (high setup and maintenance costs, but very scalable)
Part I. Personalization
Newsfeeds and activity streams are essentially a tool for personalizing the content within an app. To show the right content your app needs to truly understand your user. Instagram, Facebook, Etsy, Zite and Quora are famous pioneers in this area.
Tip 12: Instagram style personalization
Instagram’s explore section is a good example of a personalized feed. The explore page serves two goals
- User discovery. While viewing the content on the discover page you also find new users to follow.
- Content discovery. The explore page highlights content you might not see in your regular feed. It ensures your user sees fresh content when/if their feed is empty.
This is one of the most under-hyped features of Instagram. Their explore section is a pretty brilliant way to power content discovery. Stream offers personalization as a service. Our team of data scientists can help customize the machine learning algorithms for your app. If you want to build this in-house you should try out prediction.io, Lasagne and/or scikit-learn.
Tip 13: Facebook style personalization
Facebook’s feed is effectively ranking and hiding content. It solves the problem of having too much content in your feed. Instagram, Etsy, DeviantArt, Linkedin and Twitter do something similar. An average user of Facebook receives 3000 new activities every day. The problem Facebook needs to address is that a user can’t possibly browse through 3000 activities. Facebook would be absolutely useless if they didn’t prioritize this list of activities. So when does this type of personalization work well?
- If the time between subsequent user visits your feed fills up with more activities than the user can possibly review
- If your app’s users don’t care about the realtime element of the conversation
E.g. If your app is showing stock prices, the realtime aspect of the conversation is very important. Facebook style personalized feeds would be a bad fit. On the other hand if you’re an ecommerce site, you’ll definitely want to show the best content and optimize your feed for conversion. For Twitter and Instagram whether a Facebook style personalized feed is right for them has been a much debated topic. It’s hard to be sure. For Facebook, this functionality works really well, time will tell if it was the right choice for Instagram and Twitter.
Feeds are important. They are one of the main ways through which we discover information online. Unfortunately many apps provide a poor user experience with their feed. This blogpost covered 13 tips towards improving the user experience on feeds:
- Tip 1: Automatic follows - Facebook likes
- Tip 2: Automatic follows - Connections
- Tip 3: Manual selection
- Tip 4: Repeat the “who to follow” flow
- Tip 5: Meta feeds
- Tip 6: Scalability, don’t reinvent the feed
- Tip 7: @mentions and hashtags need to be high on your roadmap
- Tip 8: Aggregate your notifications
- Tip 9: Use ranked feeds
- Tip 10: Follow suggestions
- Tip 11: Track impressions and engagements
- Tip 12: Instagram style personalization, explore section
- Tip 13: Facebook style feed ranking
Every app and every community is unique so not all of these tips will apply to you. Hopefully this post gave you an idea or two about how to improve engagement within your app. Share your ideas with @getstream_io and we’ll include them in this blogpost. To give Stream a try, have a look at this 5m interactive tutorial. This post is also available as a slideshare: