AppsFlyer iOS
Send iOS app events and conversions to AppsFlyer server-to-server for mobile attribution, SKAdNetwork support, and campaign analytics.
This blueprint is currently alpha — schema and behaviour may change before GA.
Prerequisites
Complete these steps in the AppsFlyer dashboard and App Store Connect before configuring Signal.
Create an AppsFlyer account
Sign up at appsflyer.com and log in to the AppsFlyer dashboard.
Register your iOS app
Click Add App in the dashboard, select iOS, and enter your app’s Apple App ID or search by name. The app must be live on the App Store or registered in App Store Connect.
Find your Dev Key
Navigate to Configuration > App Settings in the left sidebar. Your Dev Key is displayed at the top of the page. Copy this value.
Generate an API token
Go to Security Center (accessible from the top-right user menu or under Configuration). Generate a V2 API Token. This token authenticates all server-to-server event calls.
Find your Apple App ID
Log in to App Store Connect, open your app, and locate the numeric Apple ID on the App Information page (e.g. 123456789). This is required for SKAdNetwork attribution.
Note your AppsFlyer App ID
Your AppsFlyer App ID for iOS is typically in the format id123456789 (the id prefix followed by your Apple App ID).
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
app_id | string | Yes | The AppsFlyer app ID for your iOS app (e.g. id123456789). |
dev_key | string | Yes | Your AppsFlyer Dev Key from Configuration > App Settings. |
api_token | secret | Yes | The AppsFlyer V2 API token from Security Center. |
apple_app_id | string | Yes | The numeric Apple App ID from App Store Connect, used for SKAdNetwork attribution. |
Signal Setup
Quick Setup
- Navigate to Integrations in the sidebar.
- Open the Integration Library tab.
- Find AppsFlyer iOS or filter by Attribution.
- Click Install, select a variant if available, and fill in the required fields.
- Click Install Integration to create the integration with a ready-to-use default blueprint.
API Setup
curl -X POST http://localhost:8084/v1/admin/integration-catalog/appsflyer_ios/install \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "AppsFlyer iOS",
"variant": "default",
"config": {
"app_id": "id123456789",
"dev_key": "AbCdEfGhIjKlMnOpQrSt",
"api_token": "your_api_token",
"apple_app_id": "123456789"
},
"delivery_mode": "server_side"
}'Event Mapping
The Retail variant maps the following Datafly events to AppsFlyer in-app event names:
| Datafly Event | AppsFlyer Event | Notes |
|---|---|---|
Product Viewed | af_content_view | Product details map to af_content_id, af_price, af_currency |
Product Added | af_add_to_cart | Product details map to af_content_id, af_price, af_currency |
Order Completed | af_purchase | Requires af_revenue, af_currency, af_order_id |
| Custom events | Passed through | Add the AppsFlyer event name in the blueprint event map |
Identity
The default blueprint forwards the following identifiers to AppsFlyer:
| Source | AppsFlyer field |
|---|---|
vendor_ids.appsflyer_id | appsflyer_id |
vendor_ids.idfa | idfa (when available) |
vendor_ids.idfv | idfv |
context.ip | ip |
context.user_agent | user_agent |
Capture appsflyer_id from the AppsFlyer iOS SDK at app start and pass it via the Datafly mobile SDK — every S2S event requires it. idfa (iOS only, post-ATT consent) improves attribution accuracy when present.
Consent
Default consent category: advertising. Gate behind advertising consent in your CMP, and only forward idfa when the user has granted App Tracking Transparency.
AppsFlyer requires the appsflyer_id device identifier on every S2S event. For iOS, the idfa (Identifier for Advertisers) is also recommended when available for improved attribution accuracy.
Verify it’s working
- Install your iOS app on a test device and trigger the events you want to track.
- In the Signal Management UI, open your AppsFlyer iOS integration and watch the Live Events stream.
- In the AppsFlyer dashboard, navigate to Activity > Event Timeline and filter by your test device.
- Verify the event name, revenue, and custom parameters match expectations.
- Confirm 200 responses in Signal’s Live Events log.
Troubleshooting
| Symptom | Cause | Resolution |
|---|---|---|
401 Unauthorized | Invalid API token | Regenerate the V2 API token in Security Center and update Signal. |
400 Bad Request | Missing required fields | Ensure appsflyer_id and app_id are present in the event payload. |
| Events not appearing | Wrong app ID format | iOS app IDs must include the id prefix (e.g. id123456789). |
| SKAdNetwork attribution missing | Missing or wrong apple_app_id | Verify the numeric Apple App ID matches your App Store Connect listing. |
| Revenue not tracked | Missing af_revenue field | Map your revenue field to af_revenue (numeric) and af_currency (ISO 4217) in the blueprint. |
Visit AppsFlyer documentation for full API reference and credential setup instructions.
Blueprint
The AppsFlyer iOS blueprint version is 0.1.0 (alpha). It ships with a Retail variant covering af_content_view, af_add_to_cart, and af_purchase events.
See also
- AppsFlyer Android — Android counterpart.
- Adjust — alternative mobile attribution.
- Branch — alternative mobile attribution with deep linking.
- Singular — alternative mobile attribution and analytics.