adstage
TrackingIntegrations

Liftoff Integration

In adstage, you can collect cost data from Liftoff (Accelerate) app campaigns with an API key, report clicks, installs, and events that arrive through a tracking link under the liftoff.ads channel, and send attributed installs and events back to Liftoff. Liftoff merged with Vungle in 2021, so campaigns you used to run as Vungle follow this page as well.

Beta

This integration is still being verified with live advertiser accounts. If the collected numbers differ from the Liftoff console, please let adstage support know.

1. Integration Overview

FeatureDescription
Cost collectionSpend, impressions, clicks, and installs per campaign, collected automatically every 4 hours with a reporting API key
Click attributionClicks, installs, and events arriving through a tracking link are reported under the liftoff.ads channel
Conversion sendingAttributed installs and events are posted back to Liftoff (the direct integration Liftoff supports)

Cost collection is set up in the Cost Integration tab of Integrations > Ad Channel Integration > Liftoff. Tracking links and conversion sending are configured per link in Deep Links > Create. Searching for vungle in the integration list also returns the Liftoff card.

2. Setting Up Cost Collection

Getting the API key

Liftoff does not issue reporting API keys in the console. Ask your Liftoff account manager (or CSM) for a Reporting API key and secret; they are sent to you by email. A single key reads reports for every app and campaign under that advertiser account.

Connecting the account

  1. Open the Cost Integration tab in Integrations > Ad Channel Integration > Liftoff. The How to get your Liftoff key box and the Liftoff reporting API documentation link at the top repeat the issuing steps.

  2. Turn on the Liftoff Cost Integration switch. While it is off, the Add Integration Account button is disabled.

  3. Click Add Integration Account, enter the Account Label (a name to identify this account in adstage), the API Key, and the API Secret, then click Integrate.

  4. adstage verifies the key with Liftoff before saving it (Verifying...) and stores it encrypted. The first collection starts as soon as the account is added. Liftoff reports are generated asynchronously, so the first sync may take a few minutes, during which the status stays Preparing.

Please note

If the key is rejected you will see "The key was rejected by Liftoff. Please check the key and its permissions."; if Liftoff cannot be reached, "Could not reach Liftoff to verify the key. Please try again later." Registering the same key twice in one organization is refused with "This account is already registered".

Checking integration status

The account list shows Account Name, Status, Last Data Update, and Management (delete).

  • Preparing: the first collection right after the account was added is still running.
  • Success: Liftoff API calls are working. The status stays Success even when no data comes in because no campaigns are running.
  • Failed: the key was revoked or lacks permission, so no data could be fetched. Hover over the badge to see the cause. Each cycle retries, so the status returns to Success automatically once the cause is fixed. Liftoff rate limits and temporary server errors do not flip the status; they are simply retried on the next cycle.

Even in Success, if no cost data accumulates for more than three days a warning appears next to the status with "No cost data has been collected for N days." The warning disappears once data arrives again.

To change the key, delete the account with the trash icon in the Management column and add it again with the new key. Data already collected is kept.

Liftoff supports taking an advertiser click URL directly, without an MMP. On click, Liftoff sends the user to your adstage tracking link while filling in campaign and creative information and a click ID (tracking token), and adstage forwards the user to the store or the app according to the link's redirect settings.

  1. In Deep Links > Create, select Liftoff as the ad channel.

  2. The Campaign and Creative fields are filled with Liftoff macros and locked, marked Preset. You do not type the names yourself — Liftoff substitutes the real names on click, which is what makes them match the campaign names in cost collection.

  3. Leave the Ad Group field empty. Liftoff has no ad group macro.

  4. To break results down by the app the ad ran on, click Add Channel Details. The Media field is filled with the Liftoff app ID macro.

  5. Set the redirect options, save, and copy the generated link.

The link carries the values below. The click ID, campaign ID, creative ID, and Liftoff App ID are always appended, whether or not you filled anything in.

adstage parameterLiftoff macroValue
click_id${TRACKING_TOKEN}Liftoff tracking token — the basis for attribution and postbacks
campaign${CAMPAIGN_NAME}Campaign name
campaign_id${CAMPAIGN_EXTERNAL_ID}Campaign ID
ad_creative${CREATIVE_NAME}Creative name
ad_creative_id${CREATIVE_EXTERNAL_ID}Creative ID
sub_channel${APP_ID}ID of the app the ad ran on (only when Media is filled)
liftoff_app_id${EXTERNAL_ID}Liftoff App ID of the advertised app, used in the postback URL

A finished link looks like this.

https://adg.im/@{org}/track/liftoff.ads?short_path={short_path}&campaign=${CAMPAIGN_NAME}&campaign_id=${CAMPAIGN_EXTERNAL_ID}&ad_creative=${CREATIVE_NAME}&ad_creative_id=${CREATIVE_EXTERNAL_ID}&sub_channel=${APP_ID}&click_id=${TRACKING_TOKEN}&liftoff_app_id=${EXTERNAL_ID}

Send the copied link to your Liftoff contact and ask them to register it as the campaign's click URL. While registering, confirm with them that the macro names are the ones your account uses.

Please note

  • Do not remove or rewrite the macros in the link. Without the tracking token, installs cannot be matched to Liftoff clicks and no postback can be sent.
  • Cost is collected at the campaign level only. Breaking a report down by creative splits conversions per creative while cost stays on the campaign row.

4. Sending Conversions to Liftoff

Reporting attributed installs and events back to Liftoff lets Liftoff use them for campaign optimization. This is configured per link; for the shared behavior (deduplication, retries) see Network Postback.

Before you start

Liftoff requires the app's bundle ID in every postback. Register the Android Package Name and the iOS Bundle ID in Tracking Links > Settings > Deep Link Settings first, otherwise the bundle ID is sent empty.

Steps

  1. On the create or detail screen of the Liftoff tracking link, turn on Send install postback to ad network in the Network Postback section. If the URL field is empty, the Liftoff preset fills it immediately. Otherwise pick Liftoff — Install & events (Advertiser Attribution) from Network Preset.

  2. Review the Install Postback URL Template. Installs and events go to the same address, so leave Event Postback URL Template empty.

https://analytics.liftoff.io/customer_tracker/v1/{liftoff_app_id}/events?third_party_tracking_token={click_id}&client_ip={ip}&event_name={event}&event_timestamp={timestamp}&platform={platform}&bundle_id={bundle_id}&idfa={idfa}&google_aid={gaid}&revenue={revenue}&currency_code={currency}
Liftoff parameterValue sent
{liftoff_app_id} in the pathThe Liftoff App ID received on click. With several apps, each link carries its own ID
third_party_tracking_tokenLiftoff tracking token (click ID)
event_nameEvent name. Installs are sent as install
event_timestamp, client_ip, platformEvent time, user IP, and ios or android
bundle_idThe package name / bundle ID from deep link settings
idfa, google_aidAdvertising identifiers; only the one for that platform is filled
revenue, currency_codePurchase amount and currency code, filled for purchase events only
  1. Choose the Trigger Events. The default is install only. To also send post-install events such as purchases, add them, and use Event Name Mapping if the name agreed with Liftoff differs. Do not rename install.

  2. Save, then ask your Liftoff contact for an end-to-end test. Liftoff verifies click redirect, attribution, and postback together before the integration goes live.

Please note

  • Only installs and events attributed to that link are sent. The same event for the same click is sent once, and install and first_open are treated as one.
  • With several links, configure the postback on each link.

5. Collected Data

ItemDescription
Collection intervalEvery 4 hours (1, 5, 9, 13, 17, 21 o'clock KST), plus one immediate run when the account is added
Update rangeLast 30 days excluding the day of the update (D-30 ~ D-1)
Data levelCampaign level
MetricsSpend, impressions, clicks, installs
CurrencyUSD. Liftoff reports carry no currency field, so values are recorded as USD
Report timezoneYour Liftoff billing timezone, read from the account so date boundaries match the Liftoff dashboard and invoices
Data finalityThe previous day is final after 05:00 UTC
Channel nameliftoff.ads

In reports these channel-reported values are marked with (Channel) in the metric name. Days where spend, impressions, clicks, and installs are all zero are not stored.

6. Cautions

  • Numbers may differ between Liftoff and adstage because of collection timing (data collected before the previous day is final) and timezone differences.
  • Revoking the key or its permissions on the Liftoff side stops collection. Get a new key and add the account again.
  • The Liftoff report creation API is rate limited, so adstage collects accounts one at a time.
  • Traffic from custom links where you typed liftoff as the channel is also reported under liftoff.ads.

7. Troubleshooting

The key is rejected

  1. Check that the API key and secret were pasted exactly, with no leading or trailing spaces.
  2. On registration adstage checks both account lookup and report creation permission. A rejection of either shows as a rejected key, so confirm reporting access with your contact.
  3. "Could not reach Liftoff" is a temporary problem on the Liftoff side. Try again shortly.

No data is collected

  1. Check that the Liftoff Cost Integration switch is on.
  2. If the status is Failed, hover to see the cause; for authentication errors, delete the account and add it again with a new key.
  3. If the status is Success but there is no data, spend, impressions, clicks, and installs were all zero for that period. Check campaign status in the Liftoff console.
  4. If the first collection takes long, the status may stay Preparing. The next cycle (within 4 hours) retries automatically.

Postbacks do not reach Liftoff

  1. Confirm the ad click went through the adstage tracking link and that the click ID and Liftoff App ID macros are still in the link.
  2. Confirm the package name and bundle ID are registered in Deep Link Settings.
  3. Confirm the event you want to send is in Trigger Events and that its name matches what you agreed with Liftoff.
  4. Run a test click with your Liftoff contact and compare what they received.

8. FAQ

Can I connect an account I used to run as Vungle?

Yes. Liftoff merged with Vungle in 2021. Once your Liftoff contact issues a Reporting API key, the setup is identical.

Do I need one account per app?

No. One key collects campaigns for every app under that account. The App ID in the postback URL is filled from the link, so you only need a separate tracking link per app.

Why do Liftoff installs and adstage installs differ?

Installs (Channel) is the number Liftoff reports, while adstage installs match tracking link clicks with SDK events. In a direct integration Liftoff counts installs from the postbacks adstage sends, so the two numbers converge only when postbacks are working.

9. Reference Documentation

Table of Contents