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
| Feature | Description |
|---|---|
| Cost collection | Spend, impressions, clicks, and installs per campaign, collected automatically every 4 hours with a reporting API key |
| Click attribution | Clicks, installs, and events arriving through a tracking link are reported under the liftoff.ads channel |
| Conversion sending | Attributed 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
-
Open the
Cost Integrationtab 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. -
Turn on the
Liftoff Cost Integrationswitch. While it is off, theAdd Integration Accountbutton is disabled. -
Click
Add Integration Account, enter the Account Label (a name to identify this account in adstage), the API Key, and the API Secret, then clickIntegrate. -
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 staysPreparing.
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.
3. Creating Tracking Links
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.
-
In Deep Links > Create, select
Liftoffas the ad channel. -
The
CampaignandCreativefields are filled with Liftoff macros and locked, markedPreset. 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. -
Leave the
Ad Groupfield empty. Liftoff has no ad group macro. -
To break results down by the app the ad ran on, click
Add Channel Details. TheMediafield is filled with the Liftoff app ID macro. -
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 parameter | Liftoff macro | Value |
|---|---|---|
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.
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
-
On the create or detail screen of the Liftoff tracking link, turn on
Send install postback to ad networkin theNetwork Postbacksection. If the URL field is empty, the Liftoff preset fills it immediately. Otherwise pickLiftoff — Install & events (Advertiser Attribution)fromNetwork Preset. -
Review the
Install Postback URL Template. Installs and events go to the same address, so leaveEvent Postback URL Templateempty.
| Liftoff parameter | Value sent |
|---|---|
{liftoff_app_id} in the path | The Liftoff App ID received on click. With several apps, each link carries its own ID |
third_party_tracking_token | Liftoff tracking token (click ID) |
event_name | Event name. Installs are sent as install |
event_timestamp, client_ip, platform | Event time, user IP, and ios or android |
bundle_id | The package name / bundle ID from deep link settings |
idfa, google_aid | Advertising identifiers; only the one for that platform is filled |
revenue, currency_code | Purchase amount and currency code, filled for purchase events only |
-
Choose the
Trigger Events. The default isinstallonly. To also send post-install events such as purchases, add them, and useEvent Name Mappingif the name agreed with Liftoff differs. Do not renameinstall. -
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
installandfirst_openare treated as one.- With several links, configure the postback on each link.
5. Collected Data
| Item | Description |
|---|---|
| Collection interval | Every 4 hours (1, 5, 9, 13, 17, 21 o'clock KST), plus one immediate run when the account is added |
| Update range | Last 30 days excluding the day of the update (D-30 ~ D-1) |
| Data level | Campaign level |
| Metrics | Spend, impressions, clicks, installs |
| Currency | USD. Liftoff reports carry no currency field, so values are recorded as USD |
| Report timezone | Your Liftoff billing timezone, read from the account so date boundaries match the Liftoff dashboard and invoices |
| Data finality | The previous day is final after 05:00 UTC |
| Channel name | liftoff.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
liftoffas the channel is also reported underliftoff.ads.
7. Troubleshooting
The key is rejected
- Check that the API key and secret were pasted exactly, with no leading or trailing spaces.
- 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.
- "Could not reach Liftoff" is a temporary problem on the Liftoff side. Try again shortly.
No data is collected
- Check that the
Liftoff Cost Integrationswitch is on. - If the status is Failed, hover to see the cause; for authentication errors, delete the account and add it again with a new key.
- 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.
- If the first collection takes long, the status may stay
Preparing. The next cycle (within 4 hours) retries automatically.
Postbacks do not reach Liftoff
- 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.
- Confirm the package name and bundle ID are registered in Deep Link Settings.
- Confirm the event you want to send is in
Trigger Eventsand that its name matches what you agreed with Liftoff. - 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
- Liftoff Reporting API — key issuing (via your account manager), authentication, billing timezone, data finality
- Liftoff Advertiser Attribution — direct integration without an MMP and the test before going live
- Augmenting MMP Data via S2S — postback address and parameters
- Liftoff Tracking URL Macros — click URL macro list
- Liftoff company page — the 2021 Vungle merger

