---
title: Appsflyer Integration
description: Appsflyer integration documentation
---

[Skip to content](https://docs.mineos.ai/knowledge/appsflyer-integration#main-content)

[![Mine](https://docs.mineos.ai/hs-fs/hubfs/Frame%201948756858.png?width=62&height=40&name=Frame%201948756858.png)](https://docs.mineos.ai/knowledge)

Open main navigation

Close main navigation

 Hello! How can we help you?

- There are no suggestions because the search field is empty.

1. [Help center](https://docs.mineos.ai/knowledge)
2. [Integrations](https://docs.mineos.ai/knowledge/integrations)

# Appsflyer Integration

## Automating privacy operations by integrating MineOS to AppsFlyer

This integration enables you to automate Data Subject Requests (DSR) for user data in AppsFlyer:

- Delete (AppsFlyer *erasure* request)
- Copy (AppsFlyer *access* request)

Requests are sent to AppsFlyer's OpenDSR (GDPR requests) API. MineOS opens the request, then tracks it to completion on its own — no manual follow-up is needed.

**This is the API-based AppsFlyer integration.** It is separate from **AppsFlyer (Email request)**, which sends a privacy request by email. Use one or the other, not both.

### Prerequisites

- Your MineOS plan must support integrations
- An AppsFlyer account with access to the OpenDSR (GDPR requests) API
- An AppsFlyer **API V2 token**. An admin creates it in AppsFlyer: open the account menu (your email address in the top bar) → **Security center** → **AppsFlyer API tokens** → **Manage your AppsFlyer API tokens**. AppsFlyer shows the token only once, so copy it before closing the dialog.
- The **App ID** of the app the requests should cover (for example `com.example.app` or `id123456789`)

### Choosing the right integration type

AppsFlyer has no email or phone identifier of its own. A user is matched by the identifier your app reports to AppsFlyer — in practice the **Customer User ID (CUID)**. MineOS therefore offers three integration types, which differ only in *which* identifier MineOS takes from the privacy request:

| Integration Type | MineOS sends AppsFlyer | Use it when |
| --- | --- | --- |
| **AppsFlyer (API, email)** | The requester's email address | Your app sets the CUID to the user's email |
| **AppsFlyer (API, phone)** | The requester's phone number | Your app sets the CUID to the user's phone number |
| **AppsFlyer (API, user ID)** | The user's internal ID in your systems | Your app sets the CUID to your own user ID |

Whichever you pick, the value is sent under the AppsFlyer identifier field you configure (**Customer User ID** by default). If your app does not populate that field, AppsFlyer will not be able to find the user.

### Setup instructions

1. Navigate to **Data Inventory** \> **Data Sources** in the left sidebar
2. Click **Add data source**
3. Select **AppsFlyer** from the catalog
4. Go to the **AppsFlyer** page in Data Inventory
5. In the **Request Handling** tab: 
     - Check "Handle this data source in privacy requests"
     - Choose **Integration** handling style
6. Select the Integration Type that matches the identifier your app reports — **AppsFlyer (API, email)**, **AppsFlyer (API, phone)** or **AppsFlyer (API, user ID)**
7. Fill in the connection details:
   
   | Field | Required | Value |
   | --- | --- | --- |
   | **V2 API Token** | Yes | Your AppsFlyer API V2 token |
   | **App ID** | Yes | The AppsFlyer App ID the requests are scoped to |
   | **Platform (ios / android)** | Yes | The platform of that app |
   | **AppsFlyer identifier field** | No | The AppsFlyer identity the value is sent as. Leave empty for `customer_user_id`. Other accepted values: `appsflyer_id`, `idfv`, `ios_advertising_id`, `android_advertising_id`, `fire_advertising_id`, `microsoft_advertising_id` |
8. Click **Test your integration** to validate the connection
9. Click **Test & Save**

### How requests are handled

**Deletion requests** — MineOS opens an AppsFlyer *erasure* request and keeps the privacy request open until AppsFlyer reports it completed.

**Copy requests** — MineOS opens an AppsFlyer *access* request. Once AppsFlyer has generated the report, MineOS downloads it automatically and attaches it to the copy report.

### Timeline — what to expect

AppsFlyer fulfils privacy requests on a fixed ~10-day cycle, so both request types are asynchronous:

| Stage | AppsFlyer status | Duration |
| --- | --- | --- |
| Request received, grace period before processing starts | `pending` | 48 hours |
| Request being processed | `in-progress` | up to 8 days |
| Done — deletion applied, or report ready to download | `completed` | — |

MineOS checks the status once a day and completes the request as soon as AppsFlyer reports `completed`. A request that has not completed after **14 days** (deletion) or **21 days** (copy) is flagged so an agent can review it.

Because the cycle is measured in days, an AppsFlyer request will normally be the last one in the privacy request to close. This is expected and does not indicate a failure.

### Limitations

- **No Preview / content discovery.** This integration handles deletion and copy requests only; it does not scan AppsFlyer for PII and cannot preview a user's data before the request is executed.
- **No email or phone matching inside AppsFlyer.** A user is only found if your app reports the identifier you configured. See *Choosing the right integration type* above.
- **A canceled request is not a completed one.** If the request is canceled in AppsFlyer, MineOS reports an error rather than marking the request as fulfilled.
- **Reports are not retained.** AppsFlyer does not guarantee how long a completed copy report stays available, so MineOS downloads it as soon as the request completes.

### Troubleshooting

| Message | What it means |
| --- | --- |
| *Failed to connect to the AppsFlyer API. Please check the V2 API token and try again.* | The token is wrong, revoked, or lacks OpenDSR access. Regenerate it in AppsFlyer's Security center. |
| *AppsFlyer App ID is missing* | The **App ID** field is empty. |
| *'…' is not an AppsFlyer identifier field* | The **AppsFlyer identifier field** value is not one of the accepted identities. Leave it empty to use `customer_user_id`. |
| *AppsFlyer does not know request …* | The request ID is no longer recognized by AppsFlyer. Re-trigger the action on the privacy request. |
| *AppsFlyer request … was canceled* | The request was canceled on the AppsFlyer side and has to be re-opened. |

### Next steps

- [Managing deletion requests using integrations](https://docs.mineos.ai/knowledge/managing-deletion-requests-using-integrations)
- [What are Automated API Integrations?](https://docs.mineos.ai/knowledge/automatic-api-integrations)

- [Data Inventory](https://docs.mineos.ai/knowledge/data-inventory#main-content)

    - [Systems](https://docs.mineos.ai/knowledge/data-inventory#systems)
    - [Data types](https://docs.mineos.ai/knowledge/data-inventory#data-types)
    - [Activities](https://docs.mineos.ai/knowledge/data-inventory#activities)
- [Compliance Operations](https://docs.mineos.ai/knowledge/compliance-operations#main-content)

    - [Compliance reports](https://docs.mineos.ai/knowledge/compliance-operations#compliance-reports)
    - [Policies & alerts](https://docs.mineos.ai/knowledge/compliance-operations#policies-alerts)
    - [Risk assessments](https://docs.mineos.ai/knowledge/compliance-operations#risk-assessments)
- [DSR Handling](https://docs.mineos.ai/knowledge/dsr-handling#main-content)

    - [Setting Up Channels](https://docs.mineos.ai/knowledge/dsr-handling#setting-up-channels)
    - [Configuring Responses](https://docs.mineos.ai/knowledge/dsr-handling#configuring-responses)
    - [Processing Requests](https://docs.mineos.ai/knowledge/dsr-handling#processing-requests)
    - [Audit & Reporting](https://docs.mineos.ai/knowledge/dsr-handling#audit-reporting)
    - [Setting Up Rights & Workflows](https://docs.mineos.ai/knowledge/dsr-handling#setting-up-rights-workflows)
- [Integrations](https://docs.mineos.ai/knowledge/integrations#main-content)

    - [General information](https://docs.mineos.ai/knowledge/integrations#general-information)
- [Settings & Security](https://docs.mineos.ai/knowledge/settings-security#main-content)

    - [Security](https://docs.mineos.ai/knowledge/settings-security#security)
    - [Your Account](https://docs.mineos.ai/knowledge/settings-security#your-account)
- [Developers Documentation](https://docs.mineos.ai/knowledge/developers-documentation#main-content)

    - [Portal for developers](https://docs.mineos.ai/knowledge/developers-documentation#portal-for-developers)
    - [Webhook](https://docs.mineos.ai/knowledge/developers-documentation#webhook)
    - [Other](https://docs.mineos.ai/knowledge/developers-documentation#other)
- [Release Notes](https://docs.mineos.ai/knowledge/release-notes)
- [Consent Management](https://docs.mineos.ai/knowledge/consent-management)

[![Frame 1948756858](https://docs.mineos.ai/hs-fs/hubfs/Frame%201948756858.png?width=62&height=40&name=Frame%201948756858.png "Frame 1948756858")](https://mineos.ai/)

Copyright © 2026, "MineOS" (Saymine Technologies Inc)