Leave AppsFlyer
Bring every install, channel, uninstall and dollar AppsFlyer holds into Fictura, then take their SDK out and stop paying for it.
Fictura does what you pay AppsFlyer for: it decides which channel brought each install, and it keeps doing that after you cancel. This page is the whole move, in the order that keeps your history.
Order matters
Import first, remove the SDK second. AppsFlyer's raw data does not sit there forever, and the day their SDK stops calling is the day the clock starts on what is left. If you pull the SDK first you may not be able to get the history back.
1. Import everything
Dashboard → Setup → Import data → AppsFlyer.
You need two things: an API token V2 (AppsFlyer → your name, bottom-left → Security center → Manage your AppsFlyer API tokens) and your AppsFlyer app id (id123456789 on iOS, the package name on Android).
Tokens made before March 2026 no longer work
AppsFlyer revoked the old ones. If yours predates that, make a new V2 token rather than trying to work out why the old one is refused.
Press start. The import walks twelve reports in two-month steps, keeps going if you close the tab, and picks itself back up if anything interrupts it.
What comes over
| From AppsFlyer | What it becomes in Fictura |
|---|---|
| Installs, paid and organic | A person, backdated to their real install date, with the country they installed from |
| Media source, campaign, adset, ad, keyword, touch time, match type | Their attribution record, so old installs have a channel on them |
| Up to three contributing touches | The losing touches on that same record |
| In-app events with revenue | Revenue events, dated when they happened |
| Uninstalls | An uninstall event on that person, on the real date |
| Reinstalls and re-attributions | A reinstall event, not a second install |
| Ad revenue (AdMob, AppLovin, and the rest) | Revenue, recorded but kept out of subscription totals |
| Retargeting conversions and events | Carried with a retargeting flag, so win-back is never counted as a new user |
Reports your AppsFlyer plan does not include are skipped, not failed. An app with no mediation simply has no ad revenue to bring.
What does not come over, on purpose
Aggregate spend. Fictura reads spend from Meta, Apple Search Ads, TikTok and the rest directly. Importing AppsFlyer's copy of the same money would count every dollar twice and halve every ROAS figure you look at. Nothing is lost: it is the same spend, read from the source that charged you.
2. Check it landed
Before you touch the app, look at the dashboard:
- Acquire should show installs split by channel going back to the beginning, not one bar on today.
- Analytics should show revenue starting where your business started.
- A user who installed two years ago should have that date on them, not this week's.
If the history is there, AppsFlyer has nothing left that you need.
3. Take the SDK out
This part is in your app's own code, and Fictura cannot do it for you.
Remove the AppsFlyer SDK and every call into it, then ship that build. Fictura's SDK is already recording installs, attribution, events and revenue, and has been since you connected it, so there is no gap to cover.
On Android, check that nothing else is consuming the Play Install Referrer in a way that competes. Fictura reads it too, and it is the one fully deterministic signal either store offers.
4. Wait, then cancel
Leave the AppsFlyer account open until the build without their SDK has reached effectively everyone. An old build on someone's phone is still calling them, and closing the account underneath it produces errors you will spend an afternoon chasing.
Once the old builds are gone, cancel.
Doing it by asking
The agent can walk this with you. Ask it something like "help me get off AppsFlyer" and it will read what has already been imported, tell you what is still missing, and start what needs starting. It will not re-run an import that has already finished, and it will tell you before it starts whether you are in for a minute or an hour.
Coming back for more later
Running the AppsFlyer import a second time only pulls the days since the last one, so it takes about a minute. It overlaps the last few days deliberately, because AppsFlyer restates recent days as postbacks land. Anything that arrives twice is counted once.