Announcing the KPI Service

We’ve expanded your options to pull data from your adjust dataset with the KPI Service: a pull API for all of your statistics out of the adjust dashboard. Need to segment, filter, and group heavily for internal analytics purposes? That’s where the KPI Service comes in. I’ll go through some of the key use cases and usage here.

In essence, the KPI Service is a JSON pull API, which returns a JSON object on your GET request. You can freely specify which KPIs, which dates, which countries, device types, so on and so forth.

You authenticate by adding a personal user token to your request. All connections should be made over HTTPS for this reason, but the endpoints will also respond to HTTP.

There are three types of queries: AppsEvents, and Cohorts. These correspond to the main three sections of your dashboard - indeed, because that’s the data structure they’re driven on.

To get started, here’s a simple query for some basic app data.

https://api.adjust.com/apps/{your_app_token}?start_date=2015-05-01&end_date=2015-05-31&kpis=sessions,installs&countries=de,uk&user_token={your_user_token}

which would return something like:

{
  "result_parameters": {
    "kpis": ["sessions", "installs"],
    "start_date": "2015-05-01",
    "end_date": "2015-05-31",
    "sandbox": false,
    "countries": ["de", "uk"],
    "grouping": ["trackers"]
  },
  "result_set": {
    "token": "{your_app_token}",
    "name": "app name",
    "currency": "USD",
    "trackers": [
      {
        "token": "foobar",
        "name": "Network 1",
        "has_subtrackers": true,
        "kpi_values": [100, 299]
      },
      {
        "token": "15jvui",
        "name": "Network 2",
        "has_subtrackers": true,
        "kpi_values": [557, 880]
      }
    ]
  }
}

The real magic happens when you start segmenting, filtering, and grouping your data. The adjust dashboard can be easily filtered by country, by campaign and source, by device type and so on - but the API gives you an even stronger grip on manipulating these segments to get exactly the data you need.

Filters are applied as GET parameters to each query, and can bring you down to specific countries and device types. Grouping is applied by filling the grouping parameter with an ordered list of the groups you want to see.

For example, a query with these parameters:

grouping=trackers,weeks,events&countries=de,at,ch&device_type=tablet

will return your request KPIs, filtered to tablets in the DACH countries, and grouped (in order of priority) by trackers, weeks, and events. For the event KPIs that you select, the results are per-event, nested into per-week, nested into trackers:

Tracker 1
    Week 14
        small_purchase
            kpi_1: 100
            kpi_2: 300
        big_purchase
            kpi_1: 200
            ...
        ...
    Week 15
        small_purchase
            kpi_1: 100
        ...
    ...
Tracker 2
    Week 14
        small_purchase

If we change the order, we’ll also get different nesting:

Week 14
    small_purchase
        Tracker 1
            kpi_1: ...
        Tracker 2

Looks cool, huh?

This logic is, you’ll recognise, equivalent to the order of operations in an SQL GROUP BY query or the top-down sorting in an Excel pivot creation dialog.

We’re pretty excited about this and working on releasing additional functionality and tools to explore your data further.

This complements the callbacks API, where we push you the data in real-time to your server endpoint, as well as the extensive CSV reporting options we provide. All the better to understand what your data is all about.

The KPI Service is currently in closed beta, and currently available for clients with dedicated account managers, while we tweak the spec and squash a couple of edge cases. Please ping your AM rep to receive a user token for the API.