# 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>
