General

Data is central to the benefits that we provide. It can be divided into two categories: live and historical. Live data gives us real-time data from the moment the integration is enabled. Historical data allows us to start optimizing immediately and with more accuracy. Without an historical data integration or manual import, a live data collection period is required prior to optimization so we can ingest enough data to predict reliably.

Whether live or historical, the data we collect is primarily based on the app open, install, and revenue events across a number of dimensions including advertiser app, channel, campaign, country, and publisher app.

Live Integrations

We can collect live data in real-time via attribution partner or custom server-to-server integration. We are already integrated to the most popular attribution platforms including Adjust and AppsFlyer. To start optimizing immediately, an historical integration or manual import is required in addition to a live integration. Otherwise, a period of live data collection is necessary before optimizations can be made.

Adjust

To enable the Adjust integration, simply add our postback URL as a callback. See https://docs.adjust.com/en/callbacks/#adding-callbacks-in-your-adjust-dashboard for instructions on how to setup callbacks in the Adjust dashboard. The following URL must be added as a callback to the app open, install, and revenue events:

http://ingest.prod.tapheaven.com/event?event_type={activity_kind}&data_source=adjust&campaign_name={campaign_name}&advertising_id={idfa||gps_adid||fire_adid}&app_id={app_id}&app_name={app_name}&app_version={app_version}&attribution_device_id={adid}&city={city}&click_time={click_time}&connection_type={connection_type}&cost_amount={cost_amount}&cost_currency={cost_currency}&cost_type={cost_type}&country={country}&creative_name={creative_name}&currency={currency}&date={created_at}&deeplink={deeplink}&device_name={device_name}&device_type={device_type}&engagement_time={engagement_time}&event_id={event}&event_name={event_name}&idfa={idfa}&idfv={idfv}&impression_time={impression_time}&installed_at={installed_at}&ip_address={ip_address}&is_organic={is_organic}&isp={isp}&language={language}&network_name={network_name}&os_name={os_name}&os_version={os_version}&postal_code={postal_code}&reattributed_at={reattributed_at}&referrer={click_referer}&region={region}&original_revenue={revenue_float}&revenue_cents={revenue_usd_cents}&site_id={adgroup_name}&time_spent={time_spent}&tracking_enabled={tracking_enabled}&tracking_limited={tracking_limited}&user_agent={user_agent} 

AppsFlyer

To enable the AppsFlyer integration, simply add the TapHeaven Analytics partner integration to your integrated partners list in the AppsFlyer dashboard.

See https://support.appsflyer.com/hc/en-us/articles/207033816-Integrated-Partner-Configuration for more instructions.

Be sure to enable In-App Events postbacks and select "Events attributed to any partner or organic" as the Sending Option for Default Postbacks and In-App Events Postback.

For any revenue events, it is important to check the Send Revenue checkbox.

Historical Integrations

We can download historical data from marketing analytics partners, some attribution partners, or via custom integration to internal or external systems like business intelligence software, data warehouses, etc. you may also manually export historical data if it is a manageable size and send it to us for a one-time manual import.

Tenjin DataVault

We have an out-of-the-box integration with Tenjin’s DataVault product. Simply provide your DataVault connection information to TapHeaven and data will be imported on a one-time or scheduled ongoing basis.

Singular

Our integration with Singular is based on Singular shared reports. TapHeaven can download data on a one-time or scheduled ongoing basis. Note: There is a strong limitation with the Singular integration. Singular does not provide data on a publisher app level unless you are using Singular’s attribution product. For customers who use 3rd party attribution, data is only provided at the campaign level. This has significant impact to our ability to make granular and accurate predictions, but still increases accuracy and decreases the necessary live data collection period if the only other possible integration is a live one.

AppsFlyer

AppsFlyer can provide historical data as well as live data to us. The historical integration is based on the AppsFlyer Raw Data Reports, which we accesses through the Pull API. Simply provide your AppsFlyer API key to us and it will download data for each of your apps. Note: Raw data export is an AppsFlyer Premium feature and may only be available for higher package tiers (see https://support.appsflyer.com/hc/en-us/articles/207034366-API-Policy).

Adjust

Adjust can provide historical data as well as live data to us. The historical integration is based on the Adjust Raw Data CSV Export functionality (https://docs.adjust.com/en/raw-data-exports/), which we accesses through access to your configured S3 bucket. Simply provide access to your S3 bucket through an S3 bucket policy and we will download and import the data.

Data Imports & Custom Integrations

We require the following data points when importing data manually or creating a custom integration with any data source. The data can be either pre-aggregated or raw. If the data is raw, we will perform the necessary aggregation.

Aggregated Data

Pre-aggregated data required by us can be classified into two types: daily data aggregated by date and cohorted data aggregated by acquired date and the number of days since acquired. This data can be contained in a single file, but it is often convenient to separate it into two files. The only data that is absolutely essential to our campaign optimization functionality is the cohorted data. That is used to build predictive models. If daily data is not available, budget allocation is not possible and some reports will be incomplete.

Any field in italics is optional, but may affect some non-essential functionality such as reports being incomplete.

Daily Metrics (aggregated by Date, App, Channel, Campaign, Country, and Site)
a. Date
b. App (Advertiser)
      i.   ID (iTunes Store ID or Google Play Store ID)
      ii.  Name
      iii. Platform (iOS/Android)
c. Channel Name
d. Campaign
      i.   ID (as assigned by the channel usually)
      ii.  Name
e. Country
f.  Site (or publisher app or sub ID)
      i.   ID
      ii.  Name
g. Spend
h. Impressions
i. Clicks
j. Reported Installs (as reported by the channel)

k. Tracked Installs (as tracked by attribution)
l. Sessions
m. Active Users
n. Revenue (in USD cents)


Cohorted Metrics (aggregated by Acquired Date, Days Since Acquired, App, Channel, Campaign, Country, and Site)
a. Acquired Date
b. Days Since Acquired (0 on the acquired date, 1 the day after the acquired date, etc.)
c. App (Advertiser)
      i.   ID (iTunes Store ID or Google Play Store ID)
      ii.  Name
      iii. Platform (iOS/Android)
d. Channel Name
e. Campaign
      i.   ID (as assigned by the channel usually)
      ii.  Name
f. Country
g. Site (or publisher app or sub ID)
      i.   ID
      ii.  Name
h. Sessions
i. Active Users
j. Revenue (in USD cents)

An example daily metrics CSV file might look like:

Date,App ID,App Name,Platform,Channel,Campaign ID,Campaign Name,Country,Site ID,Site Name,Spend,Impressions,Clicks,Installs,Tracked Installs,Sessions,Active Users,Revenue

2018-01-01,com.example.app,Example App,Android,AppLovin,12345,Tier 1 Campaign,US,99999,App ABC,1000,10000,500,20,20,5000,1000,500000

2018-01-02,com.example.app,Example App,Android,Unity,17171,RON UK,UK,23232,App XYZ,100,1000,50,2,2,500,100,5000 

An example cohorted metrics CSV file might look like:

Acquired Date,Days Since Acquired,App ID,App Name,Platform,Channel,Campaign ID,Campaign Name,Country,Site ID,Site Name,Sessions,Active Users,Revenue 

2018-01-01,0,com.example.app,Example App,Android,AppLovin,12345,Tier 1 Campaign,US,99999,App ABC,50,20,5000

2018-01-01,1,com.example.app,Example App,Android,AppLovin,12345,Tier 1 Campaign,US,99999,App ABC,35,14,6500

2018-01-02,0,com.example.app,Example App,Android,Unity,17171,RON UK,UK,23232,App XYZ,10,2,500

Raw Data

If the data is raw, we can aggregated the data itself. Raw data must be sent in the form of events. There are 3 types of events required: opens, installs, and revenue. These can be sent as a single file or as separate files.

Any field in italics is optional, but may affect some non-essential functionality such as reports being incomplete.

Opens
a. Date/Time
b. App (Advertiser)
      i.   ID (iTunes Store ID or Google Play Store ID)
      ii.  Name
      iii. Platform (iOS/Android)
c. Channel Name
d. Campaign
      i.   ID (as assigned by the channel usually)
      ii.  Name
e. Country
f. Site (or publisher app or sub ID)
      i.   ID
      ii.  Name
g. IDFA (advertiser device ID)
h. IDFV (vendor device ID)

Installs
a. Date/Time
b. App (Advertiser)
      i.   ID (iTunes Store ID or Google Play Store ID)
      ii.  Name
      iii. Platform (iOS/Android)
c. Channel Name
d. Campaign
      i.   ID (as assigned by the channel usually)
      ii.  Name
e. Country
f. Site (or publisher app or sub ID)
      i.   ID
      ii.  Name
g. IDFA (advertiser device ID)
h. IDFV (vendor device ID)

Revenue
a. Date/Time
b. App (Advertiser)
      i.   ID (iTunes Store ID or Google Play Store ID)
      ii.  Name
      iii. Platform (iOS/Android)
c. Channel Name
d. Campaign
      i.   ID (as assigned by the channel usually)
      ii.  Name
e. Country
f. Site (or publisher app or sub ID)
      i.   ID
      ii.  Name
g. IDFA (advertiser device ID)
h. IDFV (vendor device ID)
i. Revenue (in USD cents)

Assuming the required events were combined into a single file by adding an “event type” field, an example raw data CSV file might look like:

Timestamp,Event Type,App ID,App Name,Platform,Channel,Campaign ID,Campaign Name,Country,Site ID,Site Name,IDFA,IDFV,Revenue 

2018-01-01 12:15:43.465,install,com.example.app,Example App,Android,AppLovin,12345,Tier 1 Campaign,US,99999,App ABC,38400000-8cf0-11bd-b23e-10b96e40000d,599F9C00-92DC-4B5C-9464-7971F01F8370,0

2018-01-01 12:15:44.173,open,com.example.app,Example App,Android,AppLovin,12345,Tier 1 Campaign,US,99999,App ABC,ebc82313-7134-4ffe-a707-48933fcb594d,837A1048-9302-4576-A036-7601955C09D1,0

2018-01-01 12:15:44.566,purchase,com.example.app,Example App,Android,AppLovin,12345,Tier 1 Campaign,US,99999,App ABC,ea368006-b107-4857-a4b2-956b3f219c46,CD7B7B25-BE13-4EBF-A710-55A7C6E99B86,599 

Did this answer your question?