During my spare time in early 2012, I created a productivity app called Wonderful Day. Soon after its release, what I considered my small side project, quickly became popular for its simplicity and intuitive features (Lifehacker review) - it took the #2 spot amongst paid productivity apps in the app store! However, I considered my first version too lean, so I began to ramp things up. As we were adding features and focusing deep inside our app functionality, external changes to iOS as a platform and hardware were happening right under our noses. This caused unforeseen challenges and required modifications to our app. We encountered our first challenge when Apple released its ever-popular iPhone 5. It wasn’t all that of a big deal, but all of a sudden we had to make the app work on the new 4-inch screen. We coded the required enhancements and released an update pretty soon. Surprisingly though, certain users on iPod Touch still saw the black space on the top and bottom of the app because the new fixes didn’t work on some versions of the iPod Touch. Users started emailing us, complaining about the issue. The issue was not critical and the app worked without any crashes, but it was not using the screen fully - thus ruining the experience. Getting to the root of the problem was difficult because emails from users were hard to interpret. Most of them read like this: “Hey, Wonderful Day stopped working suddenly.” They didn’t include the model number of their iPod Touch or iOS version in their email. Secondly, no users attached any screenshots to help describe the issue. It was very tough for us to do anything with such reports. Back and forth email trails consumed time and it took us long to fix this trivial issue. The Struggle Was Real I began wondering why users were not sending screenshots in their emails. After trying it myself, I realized there were many steps needed to send just one simple screenshot. The long and cumbersome process started easy enough. The user first would take a screenshot by pressing the Home button & the Sleep button together. The image then was stored in the camera roll. Easy enough, right?. After taking a screenshot, the user would then need to send me an email by visiting the “Contact Us” section in the app. “Contacts Us” could be found under, or to be frank, was “hidden” under the “Settings” section. So in order to send us an email, the user would have to know to tap on “Settings”, tap on “About”, and then finally tap on “Contact us”. This simply opened up a new email with my email address auto-populated in the “To” field. The user was almost there! Now, they had to insert the screenshot from the camera roll, type in their message, and hit “Send”. These numerous steps had to be carried out to send a simple screenshot. And not just that, as one can see, the whole process was not intuitive and quite painful for the user. Who had time for all that? No one apparently, because we never received screenshots! Eureka Moment It was then that I realized I left out a big piece of the user experience puzzle. I left out giving end-users the ability to easily report issues and get help. As app developers, we spend most of our time building cool new features, but we never spend even 1/10th of that time in building a good support system inside our app. Why? Because it simply does not seem as fancy as that “swipe down to refresh the news feed” feature. We end up quickly throwing in a link that takes users to an external support web page and calling it a day. What this does though is it opens the user’s internet browser, pushing them out of the app completely. What a bummer! So I decided to change this once and for all. Getting Into Action I first formed a simple pLIST file in Xcode and added several help articles as an array of key-value pairs. Key would be the title of the article. The value would be the content of the article. I then created a TableViewController that would load the content from the pList and list all the titles. Tapping on any of the titles would take them to a screen where article content is shown. In the same table view controller, I put a section called “Report Issue”. When tapped it opened a new email, addressed to the support team. This solved a few problems. One - the user could now find help articles right at their fingertips without the need for a data connection to read them. Two - the email composed in the email editor provided had their device information embedded at the bottom. This let me know the iOS version users who were reporting issues were using. The help screen looked much better than before, overall. However, I was still experiencing some issues. The user base was very large that it became impossible for me to track and answer every single email using an email client. And lastly, I had not solved the screenshot problem... yet. The HappyFox Connection To keep things interesting, when Apple released iOS7, all of a sudden the number of support requests multiplied! iOS7 featured an all-new design and our app started crashing in some places. It became obvious I needed a customer support system; a help desk system that could help me track and answer requests conveniently and efficiently. This inspired me to build the HappyFox integration into the help screen. I made it so that the help articles can be pulled from HappyFox directly. This means that any additions, deletions, and updates to the articles reflect immediately. I coded the “Report Issue” button so that a New Ticket Form opens rather than an email composer. And when the end-user hits the submit button on the form, a new support ticket is created in the HappyFox support system. Gone now are the slew of stressful email threads. Best of all, users can now easily attach screenshots from the camera roll in those tickets. It’s Alive! Going from pLIST + email solution to a helpdesk integration benefited my users immensely and supporting them became a breeze. I abstracted out all the code and made a spiffy little iOS library out of it…. I named it HelpStack. I’ve been using HelpStack for a couple of months now and I feel that the iOS dev community, in general, can overwhelmingly gain from this. For those with a larger user base, don’t worry, we’ve got it covered - we have added support for Zendesk and Desk.com. And it does come with Android support! I’m so excited about this library because everyone can now use HelpStack with just 4-5 lines of configuration code! Keeping Users Happy One never knows which build is suddenly going to decide to have a temper tantrum or when support requests will peak up. Giving customers the ability to conveniently and easily report issues or pull up help inside the app gives them the confidence that you will be there when something goes wrong, ensuring they will happily continue using your app. For more information, visit www.helpstack.io. When you’re ready, grab the source code at Github: Help Stack for iOS. And it does come with Android support! Github: Help Stack for Android Enjoy keeping your app users happy!