> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flokitai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# AppsFlyer

> Connect AppsFlyer to pull install attribution, campaign source, and cohort data into FloKit.

## What FloKit reads from AppsFlyer

Once connected, FloKit ingests the following AppsFlyer attribution data:

* Install attribution: campaign, ad set, creative, channel, country, and keyword
* Attribution model: last-touch, view-through, and probabilistic
* `appsflyer_id` (device-level identifier) and `customer_user_id` (your app's user ID)
* Organic vs. paid install classification
* Retargeting attribution and re-engagement events
* Sub-publisher and sub-site breakdowns where available

FloKit does not read raw device identifiers (IDFA/GAID) or access any user-level data beyond what is required to join attribution to subscription outcomes.

***

## Required access

**API token:** AppsFlyer V2.0 API token. Found in **AppsFlyer Dashboard → My Profile → API Tokens**.

The V2.0 token is required. The older V1 token does not support the pull API endpoints FloKit uses.

**Required identifiers:**

* `customer_user_id` — must match the `app_user_id` (RevenueCat) or `customer_user_id` (Adapty) you use in your subscription platform. This is how FloKit joins attribution to subscription outcomes.
* `appsflyer_id` — device-level identifier, used as a fallback join key.

If your app sets `customer_user_id` in the AppsFlyer SDK, this join is automatic. If not, see [Identity mapping](/send-data/identity-mapping).

***

## Setup

<Steps>
  <Step title="Copy your AppsFlyer V2.0 API token">
    In **AppsFlyer Dashboard → My Profile**, scroll to **API Tokens** and copy the **V2.0 token**. If V2.0 is not visible, contact your AppsFlyer account manager — it may need to be enabled on your plan.
  </Step>

  <Step title="Add AppsFlyer in FloKit">
    In **FloKit → Settings → Integrations → Attribution**, select **AppsFlyer**. Enter your AppsFlyer app ID and API token.

    * iOS app ID format: `id123456789` (numeric App Store ID prefixed with `id`)
    * Android app ID format: `com.yourapp` (package name)

    If you have both iOS and Android apps, add them as separate integrations.
  </Step>

  <Step title="Map your user identifier">
    In the FloKit AppsFlyer settings, confirm which field to use as the join key. In most setups this is `customer_user_id`, which maps to your RevenueCat `app_user_id` or Adapty `customer_user_id`. If you use a different identifier, specify the mapping here.
  </Step>

  <Step title="Wait for attribution backfill">
    FloKit begins pulling attribution data for the past 30–90 days immediately after the API token is saved. Attribution backfill progress is visible in **FloKit → Data → Sources → AppsFlyer**.
  </Step>
</Steps>

***

## Validation checklist

* [ ] AppsFlyer app ID and V2.0 API token added to FloKit
* [ ] Attribution events visible in **FloKit → Data → Events** (event type: `install_attributed`)
* [ ] `customer_user_id` resolving in **FloKit → Data → Identity**
* [ ] Campaign names and ad set IDs visible in **FloKit → Reports → Payback**
* [ ] Organic vs. paid split visible in **FloKit → Reports → Acquisition**

***

## Common issues

**No attribution data appearing**

Check that AppsFlyer V2.0 API access is enabled on your account plan. V2.0 pull API access is not available on all AppsFlyer tiers. Also confirm that the app ID format matches exactly — a missing `id` prefix on an iOS app ID will cause all requests to fail silently.

**`customer_user_id` not matching subscription platform**

FloKit joins `customer_user_id` from AppsFlyer to `app_user_id` in RevenueCat (or `customer_user_id` in Adapty). If your AppsFlyer SDK does not call `setCustomerUserId()` with your internal user ID at install or login time, the join will fail and installs will appear unattributed in payback reports. See [Identity mapping](/send-data/identity-mapping).

**Attribution appears as organic for recent installs**

Installs outside the attribution lookback window — default 7 days for click-through, 24 hours for view-through — are classified as organic by AppsFlyer and will appear as organic in FloKit. Adjust attribution windows in **AppsFlyer → Configuration → Integrated Partners** if your conversion funnel is longer than 7 days.

**Retargeting attribution not appearing**

Retargeting events require enabling re-attribution and re-engagement tracking in AppsFlyer. These are separate from install attribution and must be configured per campaign in AppsFlyer before FloKit can receive them.

***

## What this unlocks in FloKit

* CAC by campaign, ad set, creative, and country
* ROAS and payback curves tied to attribution source
* Trial start and subscription conversion rates segmented by campaign
* Organic vs. paid LTV comparison
* Creative-level payback analysis when creative IDs are present in attribution data
