Getting started

Transcription

Getting started
Getting started
This guide takes you through a step-by-step process, from
implementing the SDK to setting up callbacks. We’ve also defined
key terms and KPI definitions to make things easier.
adjust.io is an app download tracking tool that helps you understand which
marketing sources give you your most valuable users.
www.adjust.io | www.adeven.com
1
Contents
Prepare your app . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Setup your app in the dashboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Integrate the adjust.io SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Tracking revenue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Tracking events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Enable logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Submit your app into the store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Tracking installs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Setting up a tracker URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Put your tracker URL in the advertising source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Attributing facebook mobile app install ads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Understanding your data and setting up reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Setting up reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Advanced topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Sending conversion data to ad networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Changing the target of tracker URLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
In-app event and install callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Understanding callbacks and placeholders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
adjust.io placeholders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Using multiple parameters in callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Transmitting custom parameters from in-app events . . . . . . . . . . . . . . . . . . . . . . . 19
Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
General terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
KPI definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2
1 Prepare your app
To work with adjust.io, you need to integrate our tracking SDK into your app. Unlike
many other tools, adjust.io uses an open-source SDK that transparently integrates into
your code.
We recommend that you first work out which in-app events you want to measure, if
any, before integrating the SDK and submitting it to the store. Everything else, like
tracker URLs and callbacks, can be added and edited from the dashboard at any time.
.1
Setup your app in the dashboard
First of all, you need to add your app to the adjust.io dashboard.
1
Go to your dashboard on http://adjust.io.
2
On the "Apps" screen, hit
3
Enter your app ID and specify the name.
4
Click "Create app" to confirm.
.
You can change the app settings at any time.
Once you have registered the app in adjust.io, you will receive an app token that will
identify your app. This is key to getting started with the SDK.
Should you have trouble finding your app ID, feel free to get in touch at
[email protected].
3
.2
Integrate the adjust.io SDK
In short, the integration process is pretty much this:
1
Go to the GitHub repo for the adjust SDK and pick your platform.
2
Download and import the source files into your project - follow the readme.
3
Specify your app token as in the readme.
4
Hit the "build" button, lean back, and grab a cup of coffee.
That's pretty much it - but be sure to go through the readme to specify permissions
and set up frameworks correctly. If you have trouble, just email [email protected] or,
if applicable, your account manager.
With the adjust.io SDK integrated just like so, you've just unlocked conversion tracking,
session analysis and standard usage KPIs - in about five minutes.
The next sections will cover how to get more intelligence by sending revenue figures
and using SDK hooks to analyze in-app events.
4
.3
Tracking revenue
If you have a single source of revenue - and that's cool, we don't judge - or if you just
want to track the revenue generated by your app, you can simply just send us revenue
figures when it applies. A single hook lets the SDK know that revenue was generated.
In our open source SDK, it looks like:
iOS:
Android:
[AdjustIo trackRevenue:1.0];
AdjustIo.trackRevenue(1.0f);
The '1.0' here represents 1 cent of revenue - so if you want to register a purchase
worth €9, or $9, £9, or ¥9 for that matter, punch in '900.0'. adjust.io is currency
agnostic, so as long as you're consistent, it doesn't matter which currency you
use.
That's the simplest way - now if you want more detail, you'll want to set up
events.
5
.4
Tracking events
An event is any activity that the user initiates in your app. It is a specific action that
occurs at a specific time, like, let's say, a purchase or a registration.
To track any event in your app, you will first need to set up the event in the adjust.io
dashboard.
1
Go to the "Events" screen and click on the app you're setting events up for.
2
Click new event (you guessed it). Give it a name.
3
When you confirm, you'll receive an event token.
The event token is a unique identifier specifying your particular app and event. This is
what you'll insert in your event hooks and send to our servers. It's a base-36 number,
by the way, how cool is that?
To trigger an event, use the following hooks - here with example event token 'abc123':
iOS:
Android:
[AdjustIo trackEvent:@"abc123"];
AdjustIo.trackEvent("abc123");
One more thing - in-app events are completely free with adjust.io. For the best resolution in
your business intelligence, track as many events as you can. It won't cost you a cent.
Ramp it up: if you want to track an event that generates associated revenue, simply use:
iOS:
Android:
[AdjustIo trackRevenue:1.0 forEvent:@"abc123"];
AdjustIo.trackRevenue(1.0f, "abc123");
In the advanced section of this guide, we're going even further - you can send any kind
of parameter across from in-app events. Current highscore? Product ID? Average flight
velocity of a swallow? You name it.
6
.5
Enable logging
Before we take this any further, let's just make sure that everything's mingling nice
and tidy.
Make sure your SDK is correctly integrated by enabling logging.
The SDKs writes log entries with different frequency depending on the setting. You can
either activate all log entries, or disable logging entirely. By default, the log level is
set to Info - and to change, it, you just have to make a function call to ask the SDK to
change the log level. Here are the different log levels and their function calls:
Level:
iOS:
Android:
Verbose
[AdjustIo setLogLevel:AELogLevelVerbose]
AdjustIo.setLogLevel(Log.VERBOSE)
Debug
[AdjustIo setLogLevel:AELogLevelDebug]
AdjustIo.setLogLevel(Log.DEBUG)
Info
[AdjustIo setLogLevel:AELogLevelInfo]
AdjustIo.setLogLevel(Log.INFO)
Warn
[AdjustIo setLogLevel:AELogLevelWarn]
AdjustIo.setLogLevel(Log.WARN)
Error
[AdjustIo setLogLevel:AELogLevelError]
AdjustIo.setLogLevel(Log.ERROR)
Assert
[AdjustIo setLogLevel:AELogLevelAssert]
AdjustIo.setLogLevel(Log.ASSERT)
Explanation:
Verbose
Everything imaginable.
Debug
Crucial debug logs.
Info
Logs include central points.
Warn
When something is about to go wrong.
Error
When something has gone wrong.
Assert
Logging disabled.
Verbosity is set by default to Info.
7
.6
Submit your app into the store
Unlike other SDKs you may have worked with in the past, the adjust.io SDK is open
source. You can specify the build settings in whichever way best suits your app and
the SDK will follow. Further, since you can inspect the code, you know exactly what it's
up to.
As soon as you start testing your app with the newly installed adjust.io SDK, you will
notice that it is displayed in the adjust.io dashboard as organic traffic.
Organic traffic is traffic that does not come through a tracked adverting source. We
still crunch the same KPIs as any other source. Oh, and just like event tracking, organic
traffic is totally free.
You will see a large spike in installs. This is typical of the first time the adjust.io SDK
is integrated, as each user will register an install when they update to the first version
with adjust.io in it. (An alternative, sweeter explanation is that adjust.io is an install
magnet. This is not true.)
Now let's start tracking install sources.
8
2 Tracking installs
adjust.io conversion tracking mostly matches installs to clicks on a URL. These clicks
come from advertisements, websites or even other apps.
adjust.io links send users to the store, where they go into a black box, and then
installs come out the other side. Using a clever augmented digital fingerprinting
method, we can look at clicks and installs, identify common environmental factors
and to a high degree of confidence attribute the install to a source.
.1
Setting up a tracker URL
To set up a new source, just generate a new tracker URL and start linking to it.
adjust.io will take care of the rest.
1
Log into your dashboard at adjust.io.
2
Go to the "Apps" screen and pick the app you're thinking of.
3
Give it a name and press enter.
The new name will be added to the list and another base-36 number will be
generated - something like http://app.adjust.io/f0ob4r.
If you now click the link on a fresh device and install the app, one click and one install
is attributed to that source.
In the advanced section of this guide we cover redirects of users to places other than
the store.
9
We also provide "grouped trackers" that enable you to aggregate different sources
under a common name, to keep things nice and tidy. Let's say you split up several
different creatives with the same network, or group different targetings under a
common partner name.
If you want to create a group of trackers, use the following notation with double colon:
<Group name>:: Tracker_name
For example
Network::Creative
Partner::Targeting
The system will automatically display the trackers as a group, but the numbercrunching hasn't changed. Let's say halfway through you change your mind and want
things ordered by creatives, not networks - just rename the trackers to have the
creative name before the double colon and the network name after. Hey presto!
If you have any further questions about setting trackers, get in touch with
[email protected] or your account manager.
.2
Put your tracker URL in the
advertising source
Once you have set up all of your install sources, you will need to make sure that the
correct tracker URL is set into your advertisement. Either set this up yourself or ask
your network account manager to do this for you.
The basic set up process is now complete. As soon as someone clicks and installs
your app, it will immediately show up in your dashboard statistics.
10
.3
Attributing facebook
mobile app install ads
adjust.io has been approved by Facebook to measure installs coming from
Facebook's mobile app install ads.
This means that if you are already using the adjust.io SDK, you no longer need
the Facebook SDK to receive all of our KPIs and measurements as well as analyze
Facebook mobile app installs.
You can set up a Facebook app campaign by just specifying the Facebook app ID in
your dashboard.
1
Log into your dashboard at adjust.io.
2
On the "Apps" screen, pick the app you're setting up.
3
Click "Settings", then go to the "Facebook" tab.
4
Enter your Facebook App ID (as found here) and confirm.
That is all you need to do - we'll start checking with Facebook if any installs can
be attributed to them from then on. Go ahead and put your Facebook ads live in
your Facebook ad dashboard. Note that the Facebook dashboard attributes installs
to impressions, whereas we attribute to clicks. This will result in slight differences
between adjust.io and the Facebook dashboard.
We'll create a special tracker group that we'll automatically populate with the
different ad groups you are running.
Please note that the current implementation does not support the transmission of
clicks and we are therefore unable to provide you with their number or conversion
rate. If this should change in the future we'll get in touch.
11
Understanding your data
3 and setting up reports
The adjust.io dashboard displays drill-down data as well as a wide range of different
KPIs that help you understand the performance of your app and the quality of your
users by installation source.
You can also drill down into the data to be able to easily compare different
advertising sources so that you can effectively optimize your advertising campaign.
Each tracker will report a separate set of data and KPIs. Depending on your goals,
different KPIs and metrics may be a better indicator of the performance of your
sources.
See the glossary section for KPI definitions.
.1
Setting up reports
In addition to the online dashboard, you can also set
up customized reporting for individual apps to be
automatically sent to you via e-mail.
1
Log into your dashboard at adjust.io.
2
On the "Apps" screen, click the app you're
looking for.
3
In the "Settings" tab, you can set up reporting
frequency and where we send it.
12
4 Advanced topics
.1
Sending conversion data to
ad networks
adjust.io sends conversion pingbacks to adservers of advertisement networks through
a highly flexible and dynamic callback interface.
Many networks either automatically detect adjust.io trackers and add their callbacks
to the click URL, or have instructed account managers to handle it for their accounts.
When neither of this is possible and you need to provide a network with conversion
data, please get in touch with [email protected] and we'll identify the best way of
solving the situation.
13
.2
Changing the target of tracker URLs
If you want the user to be redirected elsewhere than the app store, you can simply
attach an additional parameter to your tracker URL. For example when using:
http://app.adjust.io/foobar?redirect=encodedurl
You'll have to encode your URL, otherwise there's a risk of shenanigans. To send the
user to another landing page e.g. http://mypage.com instead of the app store, then
encoding your URL would look like:
http%3A%2F%2Fmypage.com
Append this to your tracker URL as above and you'll wind up with this:
http://app.adjust.io/foobar?redirect=http%3A%2F%2Fmypage.com
Any user that passes through an adjust.io URL can be matched to an install.
Be aware that if you redirect your users to an invalid URL or target that does not allow
users to get to the store, then you will not receive any downloads.
14
.3
In-app event and install callbacks
Understanding callbacks and placeholders
If you wish to also keep data from your campaigns in other systems, like BI software or
web service servers, you can receive data on any event or install triggered in your apps
through an HTTP GET request.
These HTTP calls are made in real-time by our servers. The callback setup is made
through the "Events" screen in the dashboard - and no SDK modifications are required
to change them at any time.
1
Log into your dashboard on http://adjust.io
2
Go to the "Events" screen and pick your app
3
In the list of events, that you defined in section 1.3 of this guide, you can
click "Add Callback" for any event, including install
4
To add a callback, provide the URL that our servers should ping when the
event is triggered
Note that installs are also recorded as an event in this screen - so you can set up
callbacks on installs just as well.
If you have any questions or any issues setting this up, feel free to get in touch with
[email protected], or if applicable, your account manager.
15
adjust.io placeholders
{adid}
A unique device identifier provided by adeven
{tracker}
The id of the source the install was attributed to
{event}
The id of the event being called
{idfa}
The id for advertisers from iOS 6 (only available at install time)
{android_id}
The google android id (only available at install time)
Receiving a simple URL ping is one thing, but we can also include a number of
variables available on the device that triggered the event. For example, you could
prepare the callback http://crm.awesome-ltd.com/app and want to include the
placeholder "{idfa}". You would want to define a name and define it as the placeholder,
which would then be filled with an IDFA value:
http://crm.awesome-ltd.com/app?device_id={idfa}
If you set this to a callback on an event, our servers will request this URL when the
event is triggered. When your servers accept this request, you'll receive a variable
named "device_id" set to the IDFA of the device.
In the table below, you'll find all of the placeholders and their availability. Some of
these are only available at install time, others are only available when an in-app event
has been triggered, and so on.
16
placeholder
content
example
click install event
{tracker}
6 digit tracker ID
from adjust.io
o1da2f
●
●
●
{tracker_name}
Name of the tracker,
as set by client
facebook_ad
●
●
●
{app_id}
AppId from store
iTunes / Google Play
332193586
de.is24.android
●
●
●
{ip_address}
IP address of device
8.8.8.8
●
●
●
{idfa}
ID for advertisers
(iOS only)
8C6CBC0D-5F43-4765-A6E6-84DFF3D24707
○
●
●
{android_id}
Android ID of device
(android only)
3accef2d7286d0de
○
●
●
{mac_sha1}
SHA1 of mac
(uppercase with colons)
282f2e4d6324ed731ee1ca4179deb6603f2bc5bc
○
●
○
{store}
Target store of click
ios
android
wstore
wphone
●
○
○
{event}
Event token
from adjust.io
asd123
○
○
●
{adid}
adjust.io device ID
(all platforms)
18546f6171f67e29d1cb983322ad1329
○
●
●
{idfa_md5}
Base-64 encoded
MD5 hash of IDFA
Cz_u68NTpaNfIrXesAtKGg
○
●
●
{country}
Country the device is
located in
US
●
●
●
If a placeholder is not available, e.g. IDFA on Android, it will be replaced with an empty
string. If you are interested in any other placeholder please contact [email protected].
17
Using multiple parameters in callbacks
Let's say you have the following URL as your callback receiver:
http://crm.mycompany.com/api.php
You need this URL pinged for each 'sign-up' action in the app, and you want the source
and device ID of the app to be sent along with the ping. So your callback URL could
look like this:
http://crm.mycompany.com/api.php?action=signup&type=mobile&device={adid}
&source={tracker}
This is the URL that you set in the Events screen as described in the introduction to
this section.
When your servers receive the request, the placeholders will be filled in and find the
variables set to the values you either define statically or expect from the placeholders.
18
.4
Transmitting custom parameters
from in-app events
If you want to receive additional data from in-app events we provide you with an API
to transmit any kind of custom parameters to web-service of your choice.
For example, if you want booking numbers sent to your server when a certain event
happens, you could pass this across as a parameter on the event call.
Please note that we do not store or process custom parameters in any way, due to
the strict privacy standards we adhere to. This means if you have an event sending
custom parameters but no callback setup we will ignore the additional data upon
receiving the event until you provide a callback URL for that specific event.
First you need to setup your application to transmit custom parameters when an
event is triggered. This would look something like:
iOS:
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
[parameters setObject:@"value" forKey:@"key"];
[parameters setObject:@"bar"
forKey:@"foo"];
[AdjustIo trackEvent:@"abc123" withParameters:parameters];
Android:
Map<String, String> parameters = new HashMap<String, String>();
parameters.put("key", "value");
parameters.put("foo", "bar");
AdjustIo.trackEvent("abc123", parameters);
19
Of course you can combine this with revenue tracking:
iOS:
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
[parameters setObject:@"value" forKey:@"key"];
[parameters setObject:@"bar"
forKey:@"foo"];
[AdjustIo trackRevenue:1.0 forEvent:@"abc123" withParameters:parameters];
Android:
Map<String, String> parameters = new HashMap<String, String>();
parameters.put("key", "value");
parameters.put("foo", "bar");
trackRevenue(1.0f, "abc123", parameters);
So if you provide the URL:
http://crm.mycompany.com/api.php?a=signup&source={tracker}
We would call:
http://crm.mycompany.com/api.php?a=signup&source=1q2w3e&key=value&foo=bar
If you have any questions or trouble setting this up please contact us
[email protected].
20
5 Glossary
The in-app advertising and analytics industry does not currently have agreed upon KPI
definitions. Alphabetically listed below is our glossary of commonly used terms and
our definitions.
.1
General terms
App Download Tracking
This is when app installs and usage behaviour are attributed to particular user
sources, and the performance of the users sources compared over time. The term
conversion tracking also is commonly used.
Attribution
adeven attributions are clicks plus non-organic installs - that is, any clicks on a tracker
URL as well as any installs that came from a tracked user source. Yeah, 'attributions' is
a general term and we do also 'attribute' in-app events and organic installs.
Click
When we speak of clicks, we exclusively refer to clicks on a tracker link.
Digital Fingerprinting
Digital fingerprinting identifies the mobile device after an advertisement has been
clicked on. This means a set of non-personal data is gathered. If the user installs
and opens the app with the adjust.io SDK integrated, the same process happens.
Our server then matches the device to the advertising source. adjust.io uses ePrivacy
compliant technology.
Installs
We define an install as when a user installs and then opens the app for the first time
Revenue
This is any kind of income that a user generates through in-app purchases or
otherwise through the app.
21
Software Development Kit (SDK)
An app SDK is like a mini program that is put into an app. adjust.io uses an open
source SDK for tracking and analytics. This means that what is in the SDK can be
easily viewed by developers and checked – and can be set up as they like. This
prevents issues that are often associated with closed source SDKs, like unexpected
crashing.
Sessions
A session is every time that a user opens the application. There must be a 30 minute
break between use, otherwise it is counted as the same session. For example, if a
user opens an app every five minutes over a hour long period, this is counted as one
session as there was not a sufficient break between any of the uses.
Tracker
A tracker is an URL, which is attached to a user source. Typically this source is an
advertisement, but it can be anything from an e-mail newsletter, another app, or even
a QR code.
Uniform Resource Location (URL)
A link - the URL is the address of where a resource is located on the web.
.2
KPI definitions
In order to provide you with more meaningful KPIs we do not simply give point in
time data, but rather cohort analyzed groupings by set post install timeframes. Our
dashboard displays the averages for user KPIs either 7 or 30 days after installation or
for the whole lifetime of a user.
Average Revenue Per Paying User (ARPPU)
The average revenue generated by a paying user. Non-paying users are not taken into
account.
Average Revenue Per User (ARPU)
The average revenue generated by any user within a defined timeframe. Every user is
taken into account.
22
Conversion rate
The percentage of users that, having clicked the ad, go on to install the app.
Daily Active Users (DAU)
The number of unique users that have opened the app during a given day.
Event Conversion rate
The ratio of users that triggered a specific event at least once.
Events Per User
This is the number of times a specific event was triggered by a user within a defined
timeframe.
Monthly Active Users (MAU)
The number of unique users that have opened the app during a given 30 day period.
Time to first Event (TTFE)
The time that it takes for a user to trigger a specific event for the first time.
One Time Users (OTU)
The ratio of users that only opened and used the app on the day of installation.
Retention (30 day)
The 30 day retention is the rate of users that downloaded the app and are still using it
after a month. To be considered retained, a user must have opened the app within the
last 7 days of the 30 day timeframe.
User Lifetime
The length of time that a user is actively using an app. Lifetime ends when a user
stops using an app. For more meaningful data we deduct one time users from the
average.
23