Complete UA Setup
Step 3. UA Setup has three blocks that match its progress bar: Meta integration, AppsFlyer setup, Prepare the app for testing. You enter your Meta app values and authorize our ad account; Appodeal creates the Meta ad account ID and your AppsFlyer app; you send us the build and our Technical Engineer reviews it within 48 hours.
Before you start
- Complete Monetization Setup is done — otherwise Send for Review says "Complete Monetization Setup step".
- You have access to your app on Meta for Developers.
- No Meta app yet? We can create one for you — write to us with your bundle ID (Get help).
1. Meta Integration
Values you need
| Value | Where it lives |
|---|---|
| App ID | Meta for Developers, App settings → Basic |
| Client Token | App settings → Advanced → Client Token |
| Install Referrer Decryption Key — Android apps only, 64 characters | App settings → Basic → Android → Google Play Store |
App ID and Decryption Key go into the dashboard fields in this block. App ID and Client Token go into your build (Put the App ID and Client Token in your build). The Decryption Key never goes into the build.
Enter the values and request UA
-
In 1.2. Provide input enter Facebook App ID and, for an Android app, Decryption Key. MMP Setup and Request UA become active once the App ID and, on Android, a 64-character key are entered.
-
Click Request UA. The dashboard shows "Ad Account is now creating for you, please wait a bit so you can copy the ID". When Ad Account ID fills, copy it with the copy icon.
-
In your Meta app open App settings → Advanced → Advertising accounts → Authorized ad account IDs — the wizard's 1.3 text calls it "Advertising ad accounts IDs" — paste the ID and click Save Changes.
-
Make sure the Meta app is published — the left sidebar shows Published.
-
Select Meta integrated.
Put the App ID and Client Token in your build
The Meta SDK (facebook-core) is already inside the Appodeal SDK; there is nothing to install.
- Android
- iOS
- Unity
- Flutter
- React Native
Add the com.facebook.sdk.ApplicationId and com.facebook.sdk.ClientToken meta-data entries to AndroidManifest.xml as shown in Configure Meta App.
Add FacebookAppID, FacebookClientToken, FacebookDisplayName and the CFBundleURLSchemes entry fbAPP-ID to Info.plist. All four are required even if you serve no Meta ads. Details: Configure Meta App.
Open Appodeal → Appodeal Settings → Meta Settings, select Enable auto configuration, then enter Meta App ID (Android) / Meta App ID (iOS) and Meta Client Token (Android) / Meta Client Token (iOS) for the platforms you build. Keep Enable FacebookAutoLogAppEvents and Enable FacebookAdvertiserIDCollection turned on. The page embedded in the wizard still calls this panel "Facebook Settings".
Apply the Android and iOS tabs to the android/ and ios/ projects.
Apply the Android and iOS tabs to the android/ and ios/ projects.
Your app already ships its own Meta (Facebook) SDK
- Authorize the Ad Account ID from Request UA in your Meta app, as in step 3.
- Leave the Meta fields in Appodeal Settings → Meta Settings empty.
- Remove the Meta Analytics adapter from the Appodeal SDK dependencies — on Unity, clear it in Appodeal DM and click Generate.
- Send us the App ID, Client Token and, on Android, the Install Referrer Decryption Key (Get help).
- Make sure the Meta app is published.
We confirm coexistence per app.
2. AppsFlyer setup
We use AppsFlyer. The AppsFlyer adapter ships inside the Appodeal SDK, and attribution for the test runs on Appodeal's own AppsFlyer account. You do not create an AppsFlyer account, enter a Dev Key or link an account anywhere in the dashboard. The "connect AppsFlyer" link inside the embedded Meta guide in block 1.1 is for publishers who link their own AppsFlyer account — ignore it.
Do exactly one of these:
| Your situation | Do this |
|---|---|
| You have no AppsFlyer app | Click MMP Setup — active once block 1 has the App ID and, on Android, the 64-character key. We create the AppsFlyer app and the status turns Setup is done. Select AppsFlyer setup. |
| Your app already exists in AppsFlyer | Transfer it to us: AppsFlyer → My Apps → row actions ⋮ → Start transfer → receiving account owner e-mail [email protected] (the AppsFlyer Help button opens AppsFlyer's own instructions for the dialog). Then select AppsFlyer setup. If Complete UA Setup still says "Complete MMP Setup", click MMP Setup as well — the step completes only once the MMP setup is done on our side. Whether ownership returns after the test and what happens to your historical data is confirmed per app (Get help). |
| You use Singular or another MMP | Keep it: "Keep Singular — it's fine and already integrated. But the AppsFlyer adapter is still required for our BI. There's no conflict between the two." No Singular adapter or pod is needed. Then click MMP Setup as in the first row. |
Do you still need the Appodeal SDK if you already have an MMP? Yes. "The SDK plus the AppsFlyer adapter is required — forwarding events to your own AppsFlyer instead isn't sufficient, because we need our adapters to track installs and metrics from the Facebook campaign."
Your app already ships its own AppsFlyer SDK (Unity)
- Keep it. Install it with UPM from
https://github.com/AppsFlyerSDK/appsflyer-unity-plugin.git#upm; on build errors, match the AppsFlyer version the Appodeal adapter uses, 6.17.1 or higher, with#Strict-v*.*.*— or#v*.*.*if that errors. - Install our GDPR and CCPA plugin (GDPR & CCPA).
- Initialize AppsFlyer before the Appodeal SDK:
AppsFlyer.initSDKinAwake→ the Appodeal consent flow →AppsFlyer.setConsentData→AppsFlyer.startSDK()→Appodeal.Initialize. - Send us a screenshot of that code (Get help).
We confirm coexistence per app.
3. Prepare the app for testing
-
Turn on logging before you build: Android, iOS, Unity; Flutter and React Native set it in the native project. On Android also change
network_security_config.xmlas shown in the wizard's 3.1 guide, Prepare the App for Testing. -
Run the app and find all three lines in the log:
SDK-Public [Appodeal]: initialize
Service [Info]: FacebookAnalytics - ver. *** initialized
Service [Info]: Appsflyer - ver. version: *** initializedKeep a TXT file or a screenshot of the three lines: add it to the zip (Android) or attach it to the TestFlight mail (iOS).
-
Hand the build over — two cases, by app entry, not by engine:
- Android app entry (native, Unity-Android, Flutter or React Native Android): zip the APK (
.zipor.rar, max 100 MB), upload it to Google Drive, paste the link into Link, click Upload, then click Send for Review. You can also drop the file on "Click or drag and drop to upload files". - iOS app entry (native, Unity-iOS, Flutter or React Native iOS) in Appodeal SDK mode: block 3.2 is not shown. Send the TestFlight build to [email protected] and [email protected], then select Testflight has been sent to …. If your step shows the Link field and the upload area instead, write to us before you send the build (Get help).
- Android app entry (native, Unity-Android, Flutter or React Native Android): zip the APK (
-
Wait — "Please upload your logs and allow us to analyze them up to 48 hours." The block shows Integration is under review:, and "The statuses will change once our Technical Engineer checks your integration". The five rows the engineer checks are Mediation is initialized, Consent Manager is shown (screenshot can be provided as well), Ad types integrated + shown, Networks integrated and AppsFlyer/Meta integrated.
-
Click Complete UA Setup. Once the logs pass, we write: "Logs are correct — please publish your app to the store and upload creatives, then ping us and we can launch the campaign together."
If a button is grey
| You see | Why | Do this |
|---|---|---|
| MMP Setup and Request UA are disabled | Facebook App ID is empty, or, for an Android app, Decryption Key is not exactly 64 characters. We do not enable them per app | Fill in 1.2. Provide input; the key is 64 characters |
| Upload or Send for Review is disabled | The tooltip names the reason: "Please complete Meta Integration section" · "Click Request UA button in Meta Integration section to get Ad Account ID" · "Please complete AppsFlyer setup section" · "Please complete Prepare the app for testing section" · "Please upload the required file in Prepare the app for testing section" · "Request for review has already been sent" · "Complete Monetization Setup step" | Do what the tooltip names |
| Complete UA Setup is disabled | "Please start the analysis by clicking Send for Review button" · "Please wait until the analysis is complete" · "Complete MMP Setup" | Click Send for Review, wait for the review, or click MMP Setup |
The FacebookAnalytics … initialized line is missing | The Meta Analytics adapter is not in the build — Android: the facebook_analytics line; Unity: Meta Analytics under Services, then Generate. On the own-Meta-SDK path it is absent by design | Add the adapter, rebuild, resend — or tell us you followed the own-Meta-SDK steps |
| The embedded Meta guide in 1.1 says "follow this guide for AppsFlyer" | That note is for publishers who link their own AppsFlyer account | Ignore it; use MMP Setup or the transfer |
| Testflight has been sent to … names a second, personal address | Dashboard string | Send the TestFlight to [email protected] and [email protected], then select the box |
Next you upload at least one vertical video and launch the campaign.
Next: 4. Creatives
Get help
Write to [email protected] and [email protected] or [email protected]. Include your bundle ID, the platform (Android, iOS, Unity, Flutter or React Native), whether you chose Light SDK or Appodeal SDK, and what is blocking you: the wizard block and a screenshot, or the exact error or log text.