I wanted to share an example of "gamification", the act of adding social competition into an application to improve engagement. At New Velocity Media, we have an API for doing exactly that: the Galahad Rewards API. We just helped one of our customers, Hudson Alley Software, use it to gamify their application.
Context: The Lottery Retail Business
Let's start with some context. Hudson Alley Software helps state lotteries run their sales programs more effectively. At last count, 19 states are customers. They're about to launch a new product — InTouch — aimed at the retailers that sell the tickets. It helps increase sales by recommending how to best merchandise the tickets. It tells each retailer which tickets to put on display in what order based on what is selling well in their locale and what is hot (or not) to the buying public. In a word, it's a toolkit to help each retailer maximize their ticket sales.
Problem: Inspiring Usage
A key issue in making this system work is inspiring each retailer (of which there are hundreds of thousands) to use it every day. Sales trends and inventory move quickly, so constantly tweaking the merchandise will produce the most benefit.
While retailer owners and managers might get this intellectually, the fact is the system will be used by all levels of employee, and will be just one of a myriad of tasks to be done during the day.
So to really inspire usage, it need to motivate people at an individual level. Enter the Galahad Rewards API.
Solution: Gamify the Work
We set out to add game mechanics to the InTouch application without taking on loads of new software development. The features are simple, yet compelling:
- Users earn virtual currency points for activities like logging in every day and using their planogram merchandising tool
- Badges are rewarded for reaching certain point thresholds
- A live activity feed shows what other users are doing, creating a feeling of community
- Leaderboards set up friendly competition for earning points
- Eventually, points can be redeemed for schwag or other incentives
Implementing the API
Adding these features to the application using the Galahad Rewards API took just a couple days and required the following steps:
1. Design the Incentive System
On the Galahad side, a web-based designer tool is used to define rewardable events, the points for completing them, the badges, the activity feed sentences and more. This is all done interactively, and can be changed later on the fly. Each event you set up is assigned a unique number which you reference in API calls.
2. Create Galahad Players from Users
Galahad tracks each user as a "player", keeping a log of which events they've completed, their virtual currency balances, badges earned, etc. So each time a user is created in the app, a call is made to the Galahad API to create a corresponding player. This is all done via a REST API over standard HTTPS. The method signature to create a player looks like this (see the API documentation for more details):
This call returns a Galahad Player Id, which we store in the application to identify the user in subsequent calls.
3. Notify Galahad of Player Actions
We chose to reward events like visiting certain pages and logging in each day. To let Galahad track this activity, we just needed to call the API when users do these things. Here is the method to inform Galahad a user is completing an event:
In this case, the eventNumber is taken from the setup work done in step 2, and the playerId is known from the call made in step 3.
Likewise, to notify Galahad when a user logs in, the Record Login method is called:
4. Fill the UI
With the API calls in place, Galahad tracks and reward users in real time as they interact with the application. All that is left to do is to populate the UI with Galahad data, namely the activity feed, point balances, badges, etc. The API does not provide or force any particular UI. You create your own, then the API provides data to fill it. Here are a few examples of what it looks like:
To fill this, we just call Galahad and merge the data into our HTML templates as each page is rendered. Here is an example of the method to get the activity feed data:
All the above turns users into players as they work with the application. But how do you know if it's working effectively? Answer: analytics. Galahad provides an interactive tool to view data in real time. You can, for example, see how many users are viewing the Planogram over a given time period, see a ranked leaderboard of users by points earned, or even track detailed activity of particular users. Some examples:
All this data is intended to help continuously assess how effective the incentive system is so it can be changed as necessary. Much of the system can be altered through the Galahad designer UI without ever changing the API calls that were integrated into the application, so a nice feedback look ensues to make things as effective as possible.