The following examples illustrate typical attribution responses provided by the SDK via the attribution callback or property. While some values may differ slightly depending on the platform, the examples below will help you to determine how best to utilize the attribution response within your app.
Unattributed Install Response
If the install was not attributed (organic), the following is returned:
{"success":1,"action":"get_attribution","data":{"kochava_device_id":"KI7775605795TE7DBB78F4B734074B550B83603FFA37B","retry":-1,"attribution":false}}
Convenience Values
While the attribution results contain many data points, certain key and value pairs have been added for your convenience and are described below. Keep in mind these values are only present for attributed installs; they are not present for organic installs.
is_first_install:
This boolean indicates whether the current installation of the app is the first install as opposed to a reinstall. This value does not indicate a difference in attribution results between installs, as attribution results are always from the first install. Rather, this value helps you decide whether or not to act on the attribution results. If the value is true, the current installation of the app is the first install. If the value is false, the current installation of the app is a reinstall (and you may be more inclined to ignore the attribution results).
NOTE: The is_first_install value is present only if attribution results were requested by the SDK.
Example: identifying a reinstall —
{ "is_first_install": false }
The is_first_install flag is important for deferred deeplinking. If a user installs an app with a deferred deeplink, the attribution results will contain said deferred deeplink and the app will route the user accordingly. Then, if the user uninstalls and reinstalls the app two weeks later, the same deferred deeplink from the original install would be provided in the attribution results during the reinstall. An app needs to know this so it can choose not to apply that deferred deeplink, if that is the desire, and this flag allows that determination to be made. Without using this flag, the app would end up routing the user on a reinstall to a likely irrelevant deferred deeplink location.
Example Flow —
- User installs app for the first time with a deferred deeplink.
- App gets attribution results from the SDK and finds a deferred deeplink.
- App checks the is_first_install flag, which is true.
- App routes the user using the deferred deeplink.
- Two weeks later, user uninstalls and reinstalls the app.
- App gets attribution results from the SDK and finds a deferred deeplink from the original install.
- App checks the is_first_install flag, which is now false, and decides to ignore the deferred deeplink because it knows the deferred deeplink was from a previous install.
deferred_deeplink:
This object contains a deferred deeplink destination for your convenience, which is derived from both the deeplink and original_request values elsewhere in the attribution results. It is a convenience only, and may save you the trouble of parsing the deeplink and original_request values manually.
NOTE: If no deferred deeplink exists, the destination value is still present but is an empty string.
Example: A Deferred Deeplink Exist —
// a deferred deeplink exists { "deferred_deeplink": { "destination": "app://home/playlist/12345" } }
Example: No Deferred Deeplink is Present —
// no deferred deeplink present { "deferred_deeplink": { "destination": "" } }
Attributed Install Example Response
If the install was attributed, the “attribution” value contains a larger object which describes the details of the attribution. The example below represents a typical attributed response.
NOTE: Results may vary based on what is available at the time of the attribution object request.
{ "attribution": { "agency_network_id": "0", "attribution_action": "install", "attribution_module": "kochava", "attribution_prompt": "click", "campaign": "Primary Campaign", "campaign_id": "YOUR-CAMPAIGN-ID", "click": { "date": "2017-11-22 21:31:40", "deeplink": "", "id": 629, "meta": { "adid": "THE-DEVICE-ADID", "control_server": "172.18.95.189", "original_request": "campaign_id=YOUR-CAMPAIGN-ID&network_id=0000&device_id=THE-DEVICE-ID&device_id_type=adid&site_id=none-providedko_click_id=ko_4ac75a15ecbc50faf&in_time_ms=1511386300332&in_time=1511386300&inboarder=f4&header_ip=000.111.222.333", "origination_ip": "000.111.222.333" }, "timestamp": 1511386300 }, "control_server": "172.18.95.189", "country": "US", "creative": "", "creative_id": "", "date": "2017-11-22 21:31:55", "date_modified": "", "date_processed": "2017-11-22 21:31:40", "date_utc": "2017-11-22 21:31:40", "day_of_week": "3", "device_id": "", "device_id_type": "adid", "device_ver": "Pixel XL-Android-8.1.0", "duplicate": "628", "geolocation": "", "header_ip": "000.111.222.333", "id": "629", "id_type": "adid", "id_value": "THE-DEVICE-ADID", "identifiers": "{\"adid\":\"THE-DEVICE-ADID\"}", "in_time": "1511386300", "in_time_ms": "1511386300332", "inboarder": "f4", "install": { "date": "2017-11-22 21:31:55", "id": 1064, "meta": { "advertiser_tracking_enabled": "0", "alt_device_id": "ALTERNATIVE-DEVICE-IDENTIFIERS", "app_version": "My App Version 1", "application_tracking_enabled": "0", "control_server": "172.18.95.123", "device": "Pixel XL-Android-8.1.0", "device_id": "THE-DEVICE-ADID", "device_id_type": "adid", "device_model": "Pixel XL-google", "device_ua": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Pixel XL Build/OPP5.170921.005)", "device_ver": "Pixel XL-Android-8.1.0", "in_time": "1511386315", "inboarder": "b5", "matched_by": "adid", "matched_on": "THE-DEVICE-ADID", "origination_ip": "000.111.222.333", "price_type": "cpc", "receipt_status": "no_receipt", "reconciliation_request_click": "201711222131566LQIEX6SGK856364925", "sdk_version": "AndroidTracker 3.3.0", "utm_source": "" }, "timestamp": 1511386315 }, "ip_address": "000.111.222.333", "ko_click_id": "ko_4ac75a15ecbc50faf", "legacy_tracker_id": "13033563741", "lookback": 2592000, "lookback_used": "default", "matched_impression": "", "matched_install": "", "month": "11", "network": "Kochava Soltest - General", "network_id": "2820", "network_key": "kochavasoltest", "original_request": "campaign_id=YOUR-CAMPAIGN-ID&network_id=2820&device_id=THE-DEVICE-ADID&device_id_type=adid&site_id=none-provided&ko_click_id=ko_4ac75a15ecbc50faf&in_time_ms=1511386300332&in_time=1511386300&inboarder=f4&header_ip=000.111.222.333", "price": "", "site": "none-provided", "site_id": "none-provided", "status": "publish", "tier": "Default Segment", "timestamp": 1511386315, "tracker": "adid", "tracker_id": "YOUR-TRACKER-ID", "unix_date": "1511386300", "user_agent": "", "waterfall_level": "device" }}