Building a Better Upgrade Experience

Most of my Teleprompter Premium customers are ‘upgradees’ from the free version of the app Teleprompter Lite. Over the last two evenings I’ve made it my mission to re-build that upgrade experience.

Since the purchase is a completely separate app, the experience is a little broken for my customers… Users may have been using Teleprompter Lite for a number of days or even weeks, then when they upgrade to Teleprompter Premium, they have to start all over again with an empty app.

Also, both apps have a user registration process when you open them for the first time, which would mean an ‘upgradee’ would have to register their name and email address for a second time after they install Teleprompter Premium. I have this registration process in place so that my marketing lists can identify which users have upgraded from Lite to Premium.

Potentially, their experience may reflect something like this…

  1. Install Teleprompter Lite
  2. Register name and email address
  3. Compose some scripts
  4. Customise some options in those scripts
  5. Decide to upgrade – Sale made!
  6. Install Teleprompter Premium
  7. Register name and email address AGAIN
  8. Compose/import some scripts AGAIN
  9. Customise some options in those scripts AGAIN
  10. … Continue with life.

I really wanted a way to improve this experience… Up until now I’ve been suggesting that users use the import options in Teleprompter Premium to transfer their scripts, which is hardly ideal.

I needed to find two solutions:
1. Solve how to skip the user registration process after a user has upgraded, but still update my list to reflect that user’s upgrade.
2. Create a quick solution for transferring scripts and settings into Teleprompter Premium when they upgrade

I started researching ways to communicate basic data between apps, which is of course a difficult task…

For a short while I did begin planning some server-side code but I couldn’t really find that ‘perfect’ solution, and it would have still required some kind of registration to identify each user.

I found the best solution for me was to use URL schemes, they allow me to pass basic information from one app to another.

Here’s my solution logic:

  1. User opens Teleprompter Premium after purchase (first run)
  2. Teleprompter Premium sends “TRANSFER” text to Teleprompter Lite using “teleprompterlite://”
  3. Teleprompter Lite Launches
  4. Teleprompter Lite packages all scripts, settings and registration information into a single NSString
  5. Teleprompter Lite sends that NSString back to Teleprompter Premium using “teleprompterpremium://”
  6. Teleprompter Premium launches
  7. Teleprompter Premium updates with the user’s registration details, then prompts the user if they would like to transfer their scripts

Using this logic means that an upgrading user will never have to re-register, my marketing list will always update, and the upgrading user can instantly transfer all of their existing content.

Also, iOS is able to identify if it can open a particular URL scheme, so if Teleprompter Premium is unable to open “teleprompterlite://”, it means the user doesnt have Teleprompter Lite installed, and the old process can begin. I’m also tracking whether “teleprompterlite://” is accessible in Mixpanel, to understand how many of my Premium users are installing having previously installed Teleprompter Lite.