Skip to main content

Augmenting MMP Data via S2S Integration

Overview

Liftoff offers server-to-server integration options in order to augment a standard MMP integration with additional data points for optimization.


Device Matching Identifiers

In order for optimization to work correctly, Liftoff will need to match your postbacks to an attributed MMP install and its upper-funnel engagements (e.g. click, impression). To perform this matching, we require at least one of the following IDs to be included with every postback.

We recommend sharing the third_party_tracking_token whenever possible, since the IDFA’s availability is limited by Apple’s ATT framework and similar restrictions on the GAID are expected from Google in the future.

Parameter/Column NameDescription
third_party_tracking_tokenLiftoff click or impression ID that the MMP attributes the user’s install to.
If using this Matching Identifier, is_attributed is assumed to be 1, so there is no need to explicitly set this value.
mmp_tracker_device_idA unique ID for the given install generated by the tracker/MMP on the first app open.
If using this Matching Identifier, is_attributed should be set to 1.
gaidGoogle Advertising ID
If using this Matching Identifier, is_attributed should be set to 1.
idfaApple ID for Advertising
If using this Matching Identifier, is_attributed should be set to 1.

Hypothetical User Flow

  1. Mobile user clicks on Liftoff ad.
  2. Liftoff redirects user to MMP.
  3. MMP stores click and redirects user to app store.
  4. Mobile user installs your app.
  5. MMP attributes the install to Liftoff and sends us a postback with the attributed click ID.
  6. Mobile user triggers in-app events.
  7. MMP attributes the events to Liftoff and sends postbacks with attributed click ID.
  8. Advertiser derives additional data points for the mobile user.
  9. Advertiser sends Liftoff S2S postback with MMP-attributed third_party_tracking_token ID or one of the matching identifiers outlined in the chart above.

Sending Data to Liftoff

Realtime Postbacks

For each additional event (e.g., purchase) or data point (e.g., LTV prediction) you generate, you send an HTTP GET request to our servers.

Postback URL Template

http://analytics.liftoff.io/customer_tracker/v1/{liftoff_app_id}/events?third_party_tracking_token={third_party_tracking_token}&mmp_tracker_device_id={mmp_tracker_device_id}&client_ip={client_ip}&idfa={idfa}&google_aid={google_aid}&event_name={event_name}&event_timestamp={event_timestamp}&bundle_id={bundle_id}&revenue={revenue}&currency_code={currency_code}&is_ad_revenue={is_ad_revenue}&is_attributed={is_attributed}&is_first_event={is_first_event}&platform={platform}&install_timestamp={install_timestamp}&os_version={os_version}&is_viewthrough={is_viewthrough}&ltv_score={ltv_score}&ltv_model_version={ltv_model_version}

Macros

Values in curly braces within the postback template above denote macros that should be replaced with the relevant information for each postback according to these definitions:

MacroDescription
{liftoff_app_id}Required. Liftoff-specific app ID (found in the developer page within the customer dashboard).
{third_party_tracking_token}The unique click/impression ID for the engagement attributed by the MMP.
{mmp_tracker_device_id}A unique ID for the given install generated by the tracker/MMP on the first app open.
{idfa}Apple’s identifier for advertising (empty for Android).
{google_aid}Google Play advertising identifier (empty for iOS).
{event_name}The name of the event that the postback corresponds to, e.g., “purchase.”
{event_timestamp}The timestamp that the event occurred at, in seconds since epoch (e.g., “1407259958”).
{is_attributed}“1” when the event should be attributed to Liftoff; “0” otherwise.
{client_ip}The device’s IP address. For the most accurate data, use IPv6 whenever available.
{platform}Either "ios" or "android."
{revenue}Non-zero for events which have a transaction amount associated with them.
{currency_code}3-letter ISO 4217 currency code for the associated revenue (e.g., “USD”).
{is_ad_revenue}“1” when the event revenue was generated via in-app advertising.
{is_viewthrough}“1” when the event was attributed to Liftoff because of an impression; “0” when attributed via a click.
{is_first_event}Whether this is the first time this event has been triggered for this user.
{device_model}String representing specific device model type, e.g., “iPhone14,7.”
{language}Device language, e.g., “en-US.”
{user_agent}The device user agent (e.g., "Mozilla/5.0 ...").
{os_version}The version of iOS or Android the user is running.
{install_timestamp}The timestamp the corresponding install occurred at, in seconds since epoch.
{ltv_score}Required for pLTV optimization only. Numeric score representing the predicted lifetime value of an acquired user.
{ltv_model_version}Required for pLTV optimization only. The version of your LTV model, if you track them.

Batched Postbacks via S3

You can also provide the same data via a scheduled job that uploads CSV files into an S3 destination. This option may be less optimal than realtime postbacks because it introduces a delay in information sharing.

File Specifications

  • The column names should adhere to the mapping specified in the macros table above (without the curly brackets). For example, {tracking_token} should be stored within a tracking_token column.
  • New events should be uploaded at a regular cadence—typically hourly or daily.
  • Files should be uploaded with the appropriate extension (.csv, .tsv, .csv.gz, .tsv.gz).
  • Uploaded files will be automatically deleted after 14 days.

File Extensions

ExtensionDescription
.csvIndicates a standard comma-delimited file.
.tsvIndicates a tab-delimited file.
.csv.gzIndicates a gzipped, comma-delimited file.
.tsv.gzIndicates a gzipped, tab-delimited file.

Credentials & Destination

The specific S3 bucket, AWS credentials, etc., will be provided by your Liftoff account team once integration has been approved.