> For the complete documentation index, see [llms.txt](https://docs.coupler.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.coupler.io/sources/category/marketing/appsflyer/common-issues.md).

# Common Issues

## Connection issues

<details>

<summary>My API key is rejected or the connection fails immediately</summary>

Make sure you're using the correct API token type. AppsFlyer has different tokens for different API versions — check that you're using the V2 API token found under your account settings, not a dashboard-specific key. Also confirm the token hasn't expired or been regenerated since you last connected.

</details>

<details>

<summary>The App ID I entered isn't recognized</summary>

App IDs are case-sensitive and format-specific. iOS App IDs typically look like `id123456789`, while Android App IDs use the package name format like `com.example.app`. Copy the App ID directly from your AppsFlyer dashboard rather than typing it manually.

</details>

## Missing data

<details>

<summary>My data flow runs successfully but returns no rows</summary>

This usually happens when the date range falls outside the 90-day limit for raw reports. Check your start date and make sure it's within the last 90 days. Also confirm that the entity you selected has actual data — for example, retargeting entities return nothing if there are no active retargeting campaigns attributed in AppsFlyer.

</details>

<details>

<summary>Retargeting reports come back empty</summary>

Retargeting entities (retargeting installs, retargeting in-app events, etc.) only return data when AppsFlyer has attributed conversions to retargeting campaigns. If you haven't run retargeting campaigns or they aren't properly configured in AppsFlyer, these reports will be empty.

</details>

<details>

<summary>Device identifiers (IDFA, GAID) are missing from raw reports</summary>

This is expected behavior. iOS 14.5+ requires user consent via ATT (App Tracking Transparency) before IDFA is shared. Many users decline, resulting in empty identifier fields. GAID availability on Android is also affected by privacy policy changes. This is a platform limitation, not a Coupler.io issue.

</details>

## Permission errors

<details>

<summary>I get a 403 or "unauthorized" error when running the data flow</summary>

Your AppsFlyer account may not have API access enabled, or your plan may not include the report type you're requesting. Check with your AppsFlyer account admin to confirm API access is active. Some report types (e.g., raw data reports) require specific plan tiers.

</details>

## Data discrepancies

<details>

<summary>Numbers in Coupler.io don't match what I see in the AppsFlyer dashboard</summary>

The most common cause is a timezone mismatch. The timezone you set in Coupler.io must exactly match the timezone configured for your app in AppsFlyer's App Settings. A one-hour offset can shift installs or events across day boundaries, causing totals to differ. Double-check both settings and re-run the data flow.

</details>

<details>

<summary>Organic and paid install counts don't add up to the total shown in AppsFlyer</summary>

AppsFlyer may attribute some installs to categories that don't map cleanly to the organic/non-organic split — for example, restricted installs where attribution couldn't be determined. Pull the Daily reports entity as well to cross-reference aggregate totals.

</details>

## Rate limits

<details>

<summary>My data flow fails midway or returns a rate limit error</summary>

AppsFlyer enforces API rate limits that vary by plan and report type. If you're running several data flows for the same App ID simultaneously, you may hit these limits. Try staggering your data flow schedules so they don't all trigger at the same time. If this happens regularly, consider combining multiple entities into one data flow using the Append transformation.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.coupler.io/sources/category/marketing/appsflyer/common-issues.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
