Budget half a day of engineering, then a release cycle on each store before the first install is attributed.
Before you start#
- The app is live (or in TestFlight / internal testing) on the App Store or Google Play.
- A business portfolio with the ad account, and a Meta developer account with access to it.
- A decision on measurement: Meta SDK alone, or a mobile measurement partner (MMP) such as AppsFlyer, Adjust, Branch or Singular. Use an MMP if you advertise on more than one platform.
1. Register the app in the App Dashboard#
As of September 2026:
- developers.facebook.com → My Apps → Create App. Enter the app name and contact email, click Next.
- Pick the use case that includes app ads, then connect the app to your business portfolio when asked.
- In the app's dashboard add each platform under Settings → Basic → Add platform: bundle ID and App Store ID for iOS, package name and key hashes for Android.
- Switch the app from development to Live mode. Ads cannot deliver to an app in development mode.
Paste the app ID into Madder's campaign draft.
2. Send events — SDK or MMP#
- Meta SDK. Add the iOS or Android SDK, initialise it with the app ID, and let it log
Activate appautomatically; log in-app events (Complete registration,Start trial,Purchase) at the moment they happen. No SDK means Meta optimises toward link clicks, not installs. - MMP. Install the partner's SDK instead and enable its Meta integration; the partner forwards installs and events to Meta and to Madder.
Either way, pick one in-app event (registration, trial) as the campaign's optimisation event.
3. Configure iOS attribution (SKAdNetwork / AEM)#
In Events Manager open the app → Settings → SKAdNetwork and configure the conversion schema so the events in step 2 map to conversion values; Meta recommends a 24-hour window. Aggregated Event Measurement does not cover app-install campaigns, so SKAdNetwork is the only iOS install signal.
4. Verify before launch#
Events Manager → app → Test events, install a test build, open it, and watch Activate app arrive.
5. The gate Madder applies#
Madder does not launch an app-install campaign on platform-reported installs alone. It waits for at least one install to arrive from your SDK or MMP; until then the draft shows the tracking item as todo. After launch, a rule watches the two numbers: if the platform reports installs but the MMP reports none for two hours, Madder proposes pausing the campaign as tracking broken.
Realistic timelines#
- App Dashboard and SDK integration: hours.
- Store review of the build with the SDK: one to several days per store.
- First Android install attributed: same day as the first click.
- First iOS install via SKAdNetwork: Apple delays postbacks — at least 24 hours, sometimes much longer — so day-one iOS figures look low.
If it doesn't work#
- Events Manager shows no app events — app still in development mode, wrong app ID in the SDK init, or the MMP's Meta integration is disabled.
- Android installs arrive, iOS none — SKAdNetwork schema not configured, or the SDK version predates SKAdNetwork support.
- Platform installs high, MMP installs zero — the MMP attribution window or Meta integration is off; Madder's mismatch rule will fire, which is correct.