Skip to content

AppsFlyer overhaul - #487

Merged
eandreeva-twr merged 2 commits into
mainfrom
appsflyer-overhaul
Aug 19, 2026
Merged

AppsFlyer overhaul#487
eandreeva-twr merged 2 commits into
mainfrom
appsflyer-overhaul

Conversation

@titerman

Copy link
Copy Markdown
Collaborator

No description provided.

- **Purchases from profiles without `appsflyer_id` never reach AppsFlyer.** They stay in Adapty Analytics. See [Events don't reach AppsFlyer](#events-dont-reach-appsflyer).
- **AppsFlyer shows only the revenue figure you selected in Adapty.** The **How the revenue data should be send** setting decides whether Adapty sends gross revenue, proceeds, or net revenue. Comparing that against another Adapty Analytics view produces a gap equal to the commission, the tax, or both.
- **Adapty uses your app's reporting timezone; AppsFlyer receives UTC.** Integrations always get UTC timestamps, whatever you set in [App Settings](general#3-reporting-timezone). A purchase at 23:30 UTC on Jul 1 lands on Jul 2 in Adapty if your reporting timezone is +02:00.
- **AppsFlyer is missing historical events.** There are two probable causes. **Exclude historical events** is on by default, so a user's AppsFlyer history starts at their first launch of an Adapty build. Adapty also never backfills events it processed before you enabled the integration.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exclude historical events is on by default

вроде бы нет

- **View the whole subscription lifecycle, not just the first purchase.** Renewals and trial conversions are store events, with no app session for AppsFlyer's client-side SDK to report. Adapty receives subscription events server-side and forwards them to AppsFlyer, so campaign figures keep updating long after the initial install.
- **Optimize your ad campaigns with subscription event data.** AppsFlyer relays in-app events from Adapty onward to your ad networks as *postbacks*. The services that manage your ad budget can optimize on what users actually paid.
- **Account for refunds in campaign revenue.** AppsFlyer deducts refunds received from Adapty from campaign revenue.
- **Filter Adapty analytics by campaign.** Adapty saves AppsFlyer's attribution on each profile, down to the ad set and creative, and [subscription charts](charts) can filter by it.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

можно ещё про сегменты добавить. мы же можем делать сегменты на основе кампаний, например

Adapty provides a complete set of data that lets you track [subscription events](events) from stores in one place. With Adapty, you can easily see how your subscribers are behaving, learn what they like, and use that information to communicate with them in a way that's targeted and effective. Therefore, this integration allows you to track subscription events in AppsFlyer and analyze precisely how much revenue your campaigns generate.
- **View the whole subscription lifecycle, not just the first purchase.** Renewals and trial conversions are store events, with no app session for AppsFlyer's client-side SDK to report. Adapty receives subscription events server-side and forwards them to AppsFlyer, so campaign figures keep updating long after the initial install.
- **Optimize your ad campaigns with subscription event data.** AppsFlyer relays in-app events from Adapty onward to your ad networks as *postbacks*. The services that manage your ad budget can optimize on what users actually paid.
- **Account for refunds in campaign revenue.** AppsFlyer deducts refunds received from Adapty from campaign revenue.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

это скорее часть первого пункта

Comment on lines +29 to +30
2. Use the `setIntegrationIdentifier()` method of the Adapty SDK to pass this data to Adapty. Adapty stores the value on the user's profile as `appsflyer_id`.
3. Use Adapty's `updateExternalAttribution()` method to send AppsFlyer's attribution data to Adapty. The user's Adapty profile is updated with their AppsFlyer attribution data.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

давай тут не использовать названия наших методов. они разные для разных версий, и это может смутить

}}
/>
</Zoom>
- **Confirm your AppsFlyer plan accepts attribution events.** AppsFlyer's entry-level **Zero** package doesn't: its API rejects every event Adapty sends with `403 Forbidden`.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adapty sends S2S in-app events, not attribution events


Each `appsflyer_id` identifies one install, and every event carrying that ID inherits the install's attribution — the campaign that produced it, or none if the install was organic. AppsFlyer needs 20–30 seconds or more to attribute a new install. An event that arrives before then has no attribution to inherit, so AppsFlyer marks it unattributed organic.

First-launch purchases are the ones at risk — trials that started within seconds after app launch. Delay your paywall artificially for AppsFlyer to finish processing the install.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

немножко рефрейминг нужен в духе expect first-launch purchases to report as organic.

@eandreeva-twr
eandreeva-twr merged commit d879c84 into main Aug 19, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants