Data driven patterns in user data are currently something many do not consider when trying to engage with their users. It is not only the content that matters, it is also a question about whom to target and when. As data scientists, our objective is to extract latent patterns in a data driven manner and make them actionable. To do this, we rely on analytics tools giving us the opportunity to visualize our user data – however, in many cases is it desirable to use machine learning methods on top of the analytics product. Since only few efforts have been made so far to integrate machine learning into established analytics tools, we have to feed enriched user data to their servers separately.

Most recently we have been working closely with the team from Fashion.Gram who have developed a sophisticated image stream, regularly fed with popular fashion from Instagram. For such an app, there exist multiple approaches to get in touch with users via push notifications. Our mission is to develop a recommendation service enabling them to grab recommended fashion items from goedle.io and forward these via push notifications to their users. In particular, to user segments with a high likelihood of churning.

As we see ourselves as a possible plug-in for established analytics tools and push services, we have to achieve this goal by finding tools allowing an import of data to enrich metrics of the users. In the course of this project, we conducted a little survey on the currently established services to learn whether they are capable of handling our additional data driven attributes computed by our machine learning algorithms. To accomplish this, we have to stream the raw user data containing an unique identifier (e.g., the Google Advertising ID) to our servers. Such an identifier ultimately gives the developers means to map the data between different services.

Adjust provides a neat feature of callbacks which automatically can be set up to forward events to other services. After receiving the data from Adjust, we compute the churn probability and provide this enriched user information through our API to the specific developer, in this case Fashion.Gram. Following this, they can import the enriched data to a push service and merge our computed meta data onto the corresponding users.

flow

Stay with me – let’s go into more detail. The most advanced and established push service we know of is Parse who have invested plenty of time and effort to build an extremely easy to understand and reliable push service. They offer a rich set of API calls which make this endeavor easy to accomplish. We earlier mentioned the importance of being able to map the users. This can simply be accomplished in your application as follows:

 ParseInstallation.getCurrentInstallation().put("idfa", "12345"); 

This way, the Google Advertising ID is attached to the current user and sent to Parse. On the other hand, we receive raw data directly from Adjust and let our algorithms compute the likelihood of churn for each user. We provide this data through our API (access upon request!) which returns for example:

{"results": {"idfa": "12345", "churner": true, ... }}

This in turn has to be imported back to Parse, to populate the users with the computed meta information regarding their churn behavior. Within this setup, we can achieve this in a breeze as we have the unique identifier matching every user. First of all, you as a developer will have to query your user object within Parse with the idfa:

curl 
-X GET 
-H "X-Parse-Application-Id: Jr2bNmTruQ12Bnhr1HV33P3137OHJku6MNJlIijv" 
-H "X-Parse-Master-Key: 6eIldtZnxB2Q8TKobLsdNMmHKd4LzYs99PfLPfRg" 
-G --data-urlencode 'where={"idfa":"12345"}' --data-urlencode 'keys=objectId' https://api.parse.com/1/installations

{"results":[{"objectId":"3S4E2k84LE"}]}

which returns a Parse object id ready to be updated with our computed metric goedle_churner:

curl 
-X PUT 
-H "X-Parse-Application-Id: Jr2bNmTruQ12Bnhr1HV33P3137OHJku6MNJlIijv" 
-H "X-Parse-REST-API-Key: dVTUfVog1rBiCMqGzomx70lRPNvlMwwMpO7Xes1Y" 
-H "Content-Type: application/json"
-d '{"goedle_churner":true}' 
    https://api.parse.com/1/installations/3S4E2k84LE

To actually show you that this works, check out this dashboard from the Parse interface giving you the option to create your audience with our computed data driven metric.

goedle.io predicate in Parse

Last but not least, and absolutely essential for our service, one should not underestimate the advantages of enriching user profiles. We took a closer look at ten established services to figure out who we can actually build upon for this design:

Service Push API (send) Export Raw & Import Enriched Data
Localytics
Parse
MixPanel
Appboy
Batch *
PushWoosh
XtremePush
Tapjoy
UrbanAirship
Pushwizard
*limited values, no customization. Please feel free to contact us if any of the stated information is unintentionally false or misleading.

With this blog post, we have not only demonstrated how easy it is to enrich your users telemetry data but also emphasize the importance of data driven metrics. Latent patterns do exist in each and every user, and these can be discovered with the help of sophisticated machine learning algorithms. Predicting churn behavior can be quite handy for many, as you can engage with your users before they uninstall your app.

Stay tuned for further blog posts from goedle.io on predictive marketing automation tools!