AppsFlyer integration for Tapper Block
Connect AppsFlyer to Tapper Block with a Push API postback, so Tapper sees every install and in-app event your app records, organic included.
Connecting AppsFlyer to Tapper Block takes three steps: add the app in Tapper, switch on Block for it, then add Tapper's callback address as a Push API postback in AppsFlyer. No SDK changes are needed.
Tapper detects and records the invalid installs and in-app events your AppsFlyer postback carries. It rejects nothing in AppsFlyer, so your AppsFlyer data stays as AppsFlyer recorded it: see What happens to an invalid install.
If someone else runs your AppsFlyer account, send them this page. They need admin access to the AppsFlyer apps. An admin of the Tapper workspace does the Tapper steps.
What you need from AppsFlyer
| Credential | Where to find it |
|---|---|
| AppsFlyer app ID, one per platform | AppsFlyer dashboard → My Apps. An iOS app ID is id followed by the App Store ID, such as id1234567890. An Android app ID is the package name, such as com.example.app. |
| API token (V2.0) | AppsFlyer dashboard → account menu → Security Center → Manage your API tokens → API token V2.0. Counting (Lift) reads your AppsFlyer totals with it, so use the token of an AppsFlyer admin who can see these apps. Block does not need it. AppsFlyer revoked the tokens made before 10 March 2026, so make a new one. Treat it like a password. |
Push API access must be part of your AppsFlyer plan. If AppsFlyer does not offer Push API on your account, ask your AppsFlyer contact to add it.
Create the integration in Tapper
Open Setup > Mobile app. With no app yet, the page opens on the add form; otherwise click Add app at the end of the list on the left. Enter a Name, tick the Platforms the app ships on, and choose AppsFlyer as the Tracking tool. Each ticked platform gets an AppsFlyer app ID field: enter the iOS and Android IDs from the table above. Click Add app.
On the app's page, open the Access card and click Connect next to AppsFlyer API Token (V2.0). Paste the token and save. One token serves every AppsFlyer app in the workspace. Skip this step if you only use Block.
On the Block card, turn on the switch. The dialog asks for nothing: click Switch on. Tapper makes a callback address and a secret.
The next screen shows the Secret and the Callback address, with the secret hidden in it until you click the eye icon, and the steps for AppsFlyer. Click the copy icon next to Callback address. You paste it into AppsFlyer next.
The address carries your secret and every AppsFlyer field Tapper reads, so paste it as it is. The secret is shown only on this screen; afterwards the app's page keeps a preview of it.
An app with both platforms gets one address for iOS and Android. Use it in the AppsFlyer app of each platform.
Set up the Push API in AppsFlyer
Do this in the AppsFlyer app of each platform.
In AppsFlyer, go to your app → Configuration → Push API.
Click Add, then select the event types to track.
Tick the organic and the non-organic message types. They are separate selections, and both are required. Then tick every in-app event you want Tapper to see, for example the events your campaigns optimize for.
Ticking only the non-organic types sends Tapper nothing until campaigns attributed to Tapper exist, so the integration looks broken while it is only filtered.
Paste the Callback address from Tapper and save.
If you set Tapper up as a partner postback instead of the Push API, set the scope to All media sources, including organic, never This partner only.
Check that events arrive
The app's Block card shows where the connection stands:
| Status | Meaning |
|---|---|
| Waiting for first install | Tapper has received nothing from AppsFlyer for this app. |
| Receiving events | Postbacks arrive, and none was an install in the last 30 days. |
| Receiving installs | Installs arrive. Last install shows when AppsFlyer last sent one. |
| Off | Block is not switched on for this app. |
| Paused | The switch is off. |
If the card keeps showing Waiting for first install after a real install, check the event types first: both the organic and the non-organic message types must be ticked.
What data is captured
On every postback, Tapper receives these fields from AppsFlyer:
- Attribution: media source, campaign, ad set and ad, with their IDs, whether the install is organic, and the match type.
- Activity type: install, reinstall, re-engagement, session or in-app event, with the event name.
- Click identifiers:
clickid,gbraid,wbraid,fbclidand the sub-parameters, used to match the event back to its click. - Device: the AppsFlyer ID, IDFA, advertising ID and IDFV, platform, OS version and app version.
- Location: country.
- Timing: click time, download time and install time.
Callback security
Tapper checks the secret on every postback and refuses a postback without the right one.
The secret travels in the callback address, as the secret parameter right after the ?. The Callback address shown on the Platforms card is the same address without the secret. If you ever build the postback in AppsFlyer from that address, add secret= and your secret, followed by &, right after the ?. A secret with characters other than letters and digits must be URL-encoded there.
Lost the secret? On the Platforms card, click Replace next to Secret. Type a new one of at least 32 characters or click Generate, then click Replace. The old secret stops working at once and the new one is shown once. In AppsFlyer, replace the value after secret= in the postback address with the new secret. Until you do, Tapper refuses AppsFlyer's postbacks.
Tapper Lift and AppsFlyer
Block sends no numbers to Tapper Lift. To compare your AppsFlyer numbers in Lift, switch on Counting (Lift) for the same app under Setup > Mobile app. It has its own switch and reads AppsFlyer with the API token on the Access card.