Improving Twitter's scheduled posts experience
Introduction
Twitter's scheduled posts calendar is a core feature for many users, but it's not without its flaws. In this blog post, we'll be exploring the current state of the feature, discussing potential improvements and creating a prototype Google Chrome extension. This is a case study about user experience and how simple quality of life features can greatly improve it, especially when it comes to repetitive tasks.
Problem
For social media managers and content creators, scheduling posts is a core part of your workflow. A good post scheduling tools allows users to efficiently manage their content calendar, and to have a clear overview of their upcoming schedule. Twitter offers a post scheduling tool, however it lacks a calendar view, which is essential for a good user experience. Other content planning tools offer this view, as it is considered one of the most intuitive ways to view upcoming posts. Therefore, our main issue is that users can't see their upcoming schedule in a clear and readable way - scrolling through a list instead.
Research
Since I'm already familiar with social media scheduling, but also since the target audience for this tool is myself, most of the research is based on my own experiences. First, we should consider other social media networks and their scheduled posts features, particularly focusing on things we like and dislike.
Twitter (current state)
The application features a simple list view, displaying up to 200 posts in ascending order. Tweets are displayed in a card format, with a content preview, a timestamp and a preview of the attached media. Tweets can be clicked to see more details, edit or delete them. Users can also delete posts in bulk from the list view, using a checkbox system. There is no calendar view and no sorting and filtering system.
Meta Business Suite
Meta Business Suite is a tool for managing your Facebook and Instagram accounts. It allows you to schedule posts, manage your content calendar and track your performance. I've been using this tool for years, which despite being a bit bloated, has a really good calendar view. You can see upcoming or past posts in a weekly or monthly view, and you can click on a post to see more details. This sub-menu also allows users to edit, re-schedule or delete posts. You can also filter results by platform (Facebook or Instagram), and by type (post, story, reel, ad). Scheduled posts are displayed stacked, in the correct order, with no space between them.
Buffer (or other planner tools)
Another good example is Buffer, a social media scheduling tool that has a great calendar view. Here we can notice the same things: you can see posts in a weekly or monthly display view, and you can click on a post to see more details. You can also filter results by a variety of criteria, such as tags, platform, etc. Scheduled posts are displayed in a timeline view, with empty spaces between them, making it easier to see gaps between posts in the "weekly" view.
Instagram, Pinterest, LinkedIn
Instagram offers a limited scheduling tool on mobile, however Meta Business Suite (mentioned above) provides a more complete experience, including a calendar view. Pinterest also offers a limited tool but lacks a calendar view, displaying posts in a masonry grid instead. LinkedIn is really similar to Twitter, offering the same list view with no calendar to manage posts - both of them pretty much share the same interface.
Ideation
Since the idea was pretty clear, ideation mostly revolved around specific features which could improve the user experience. During brainstorming, a few ideas came up which were really cool, although maybe a little too complex for our MVP. Here's some of the ideas considered throughout the process:
Feature | Description |
---|---|
Calendar displayed in weekly and monthly views | View scheduled posts in a more intuitive way, with a clear schedule view |
Calendar displayed in list view, with infinite scroll | View scheduled posts in the classic Twitter format using our new features |
Scheduled post counter indicators for each day | See how many posts are scheduled for each day while in calendar view |
Drill-down detailed view, displaying daily posts | See all posts scheduled for a specific day, with a clear schedule view |
Link each scheduled post to edit/delete feature | Edit or delete posts directly from within the Google Chrome extension |
Search for scheduled post based on keywords | Find posts based on keywords without using the browser search feature |
Copy post content to clipboard, download media | Copy post text content to clipboard or download media used in the post |
Repost post button to easily draft a new repost | Draft a new post from already existing scheduled posts in a single click |
Display more posts than Twitter posts API limit | View more posts than displayed when using Twitter's scheduled posts feature |
While most of those ideas were implemented, some of them had to be discarded due to technical limitations or due to wanting to ship the product quickly. Some of the rejected ideas might be implemented in the future, however for now our prototype focuses core features which are simple to fix and essential to the user experience and quality of life when using the extension.
Prototype
With our ideas in mind, work on the prototype begun. The wireframe was scheduled using pen and paper, with our front-end being adjusted throughout the process. The final wireframe can be seen below - you might actually be able to spot some minor differences when compared to the final product:
Since I'm not actually a developer and didn't want to get lost in the details, I decided to use the most simple stack possible: HTML, CSS and JavaScript. Work quickly began by creating the HTML structure and styling the calendar. Once that was done and the results were satisfactory, I looked into where to get the actual data from. Twitter uses an API to display posts, using authentication headers to access each user's data. By copying the request, we were able to pull the data, parse it and display it in the calendar. Status indicator pills were added, and we now had a working prototype!
This already helped visualise the scheduled post volume a lot, however a few more features were needed to make the experience complete. First up was adding a drill-down view, displaying daily posts in a timeline view. This was a simple implementation, allowing users to click on the calendar (on a specific day) to view scheduled posts. A summary view was added at the top of the drill-down as well - however I'm not particularly happy with how it turned out.
Now that the actual interface was pretty much done, it was time to implement the small details which we've always wanted. Since we already had a card design, adding a search bar and displaying search results was a breeze. This allows us to quickly check which posts we've already scheduled, and was a necessary feature since we often deal with hundreds of scheduled posts at any given time. Download media and copy post to clipboard buttons were also added, allowing me to easily repost existing tweets manually.
The last thing we needed to complete for our prototype was increasing the number of posts displayed. Twitter's API only allows displaying 200 posts at a time, however they do allow users to sort them by date ascending or descending. This means we can fetch both directions and display double the amount of posts (400), however this also comes with a cost. Before this, when we had over 200 posts scheduled, we would only see the most recent bunch. Data is now being fetched from two directions, which means if we have over 400 posts scheduled, we might notice a gap between the two sorting directions.
Discarded features
The most important discarded feature was the "action buttons": edit, repost and delete. Due to how complex the request flow would be, this was left out of the MVP. I would love to go back to these ideas and implement them in the future, as they could streamline the post scheduling process. Another feature which was attempted but discarded was the "list view". This was left out due to it being rarely used during the testing phase. Turns out it reminded me of the default Twitter view too much, and I would never use it. The "weekly view" was also discarded, as the monthly view was considered sufficient for the moment, however this is also a good future addition to the product.
Testing
The testing phase was pretty quick, as I was the only one using the prototype. Using the extension daily has helped me manage scheduled posts better, allowing me to get a better overview of my upcoming schedule. A few timezone issues were noticed and quickly fixed, as well as some other bugs. From my initial feedback, action buttons would really help make the process better, as currently the user still needs to access default Twitter features when he wants to edit or delete a post. Currently there are no filters implemented, however it would be useful to add them for specific use-cases. For example, in my case, affiliate links are always disclosed by starting posts with Ad:
which means posts could also be filtered using a simple regex search.
Another idea which came up was displaying already posted tweets, and analyzing them to see which ones were the most effective based on link clicks and engagement. This however quickly turned into a rabbit hole about how Twitter's analytics work and implementing them in the extension, however I'll leave that story for another time since I'm still playing around with the data, but you can already see the analytics button in the screenshots above.
Conclusion
Creating this extension was a fun and interesting experience. It allowed me to refresh my JavaScript knowledge and to learn more about how to build a browser extension, since I was never actually interested in this topic. This project also allowed me to quickly refresh my user experience skills by having to think about the user journey for this specific use-case. Last but not least, this was a fun reverse engineering project, as the API is not documented. I'm writing this post a few weeks after starting the project, and I'm still using the extension daily as it helps me manage my scheduled posts better, so I would call it a success, even without action buttons and other missing features.
The extension is currently not available to download, however if people are actually interested in using it, reach out and I'll try to get it up and running.