Plan your MMP switch, gate by gate
Pick where you are leaving and where you are going. Get a week-by-week plan with a parallel run, what to re-map and a checklist you can copy or print.
Switching MMP is a sequence, not a single swap: check the contract and export your history first, add the new SDK and map events, connect each ad network, rebuild SKAN and deep links, run both tools in parallel for 2 to 4 weeks, then cut over on one date and retire the old setup. The planner below turns your answers into a gate-by-gate plan with a checklist.
Build your migration plan
Sample plan: AppsFlyer to a destination not decided yet. Change the answers to build yours.
Timeline
| Gate | When | Step | Remarks |
|---|---|---|---|
| 01 | Week 1 | Check the contract and data terms | Before anything else |
| 02 | Week 1 | Inventory what you measure today | Same week |
| 03 | Weeks 2 to 3 | Export your history | Before access ends |
| 04 | Weeks 2 to 3 | Add the new SDK and map events | In parallel |
| 05 | Weeks 3 to 4 | Connect ad networks and partners | Check each one |
| 06 | Weeks 3 to 4 | Rebuild the SKAN schema | iOS only |
| 07 | Weeks 3 to 5 | Move deep links | Before cutover |
| 08 | Weeks 4 to 9 | Release and run both SDKs | Parallel run |
| 09 | Weeks 6 to 10 | Cut over | One date for all |
| 10 | Weeks 7 to 12 | Retire the old setup | Last call |
| 11 | Before gate 04 | Pick the destination | Final call |
Week ranges are this site's planning assumptions, not vendor statistics. See the methodology.
Gate by gate
- Gate01
Check the contract and data terms Week 1
- AppsFlyer's Terms of Use renew subscriptions automatically unless either side gives written notice 45 days before the term ends (unless your order form says otherwise).
- AppsFlyer's Terms of Use publish no deletion timeline for paid accounts, and on termination you must remove its code from your apps and pages.
- Write down the last day you can log in to AppsFlyer and work every date in this plan back from it.
- Gate02
Inventory what you measure today Week 1
- List every in-app event name and revenue event you send to AppsFlyer, with the parameters each one carries.
- List every postback: which network gets which event, with or without revenue.
- List every live link: ads, QR codes, emails, push campaigns, influencer and affiliate links.
- Copy the current SKAN conversion value schema value by value.
- List audiences and cohorts synced from AppsFlyer to ad networks; they need rebuilding in the new tool.
- Gate03
Export your history Weeks 2 to 3
- AppsFlyer raw reports through the Pull API have a 90-day lookback, aggregated reports are kept for 25 months, and Data Locker does not support historical data. Pull raw data in 90-day slices while you still have access.
- Keep aggregated reports by day, network, campaign and platform for year-on-year comparisons; raw rows are only needed where you will re-use them.
- Gate04
Add the new SDK and map events Weeks 2 to 3
- Map each event name from AppsFlyer to the name the new SDK will send, in one sheet that engineering and marketing both sign off.
- Add the new SDK in a test build and check installs, events and revenue arrive in your new MMP before any release.
- Gate05
Connect ad networks and partners Weeks 3 to 4
- Meta: connect your new MMP through partner integrations in Events Manager, and send each event through one channel only (MMP, Meta SDK or Conversions API), as Meta advises for value optimisation.
- Google Ads: create a new link ID for each app under Tools > Data manager > Third-party app analytics. App conversion actions from a new partner arrive as secondary by default, so you choose when they become primary.
- Tell agencies and affiliates the cutover date and the new tracking links they must use from that day.
- Gate06
Rebuild the SKAN schema Weeks 3 to 4
- Only one SDK should manage SKAN conversion values in an app: AppsFlyer, Branch, Kochava and Singular all say so. Pick the date SKAN control moves to your new MMP.
- AppsFlyer holds the schema in SKAN Conversion Studio and gives Meta a connection URL for Import from Partner App.
- Rebuild the conversion value schema in the new MMP's SKAN settings.
- Meta: replace the Import from partner app URL in Events Manager with the new MMP's, and avoid decreasing values or using lock windows, as Meta advises.
- Google Ads: set the schema in one place only (Google Analytics, an App Attribution Partner or the Google Ads API), as Google advises.
- SKAN postbacks only go to one MMP, so postbacks for installs before the switch keep arriving at the old setup: the third window ends 35 days after first launch, plus up to 144 hours of random delay.
- Gate07
Move deep links Weeks 3 to 5
- AppsFlyer branded domains point at OneLink by CNAME, and only branded domains not yet mapped can be deleted from the dashboard.
- Decide: keep your link domain or start a new one. A domain serves one apple-app-site-association file, so it can point at only one provider at a time.
- Android: assetlinks.json changes can take up to 7 days to reach Android 15+ devices, and on Android 14 and lower they are picked up on app install or update. Ship the new domain in the app well before cutover.
- iOS: add the new domain to Associated Domains in the app build that carries the new SDK.
- Swap links in this order: always-on ads and QR codes first, then emails and push, then influencer and affiliate links.
- Gate08
Release and run both SDKs Weeks 4 to 9
- Release the app version with the new SDK. AppsFlyer's Adjust migration guide recommends removing the old SDK in the same release; keeping both for a while risks double attribution and double charges, so keep each network's postbacks on one MMP only.
- AppsFlyer publishes a multiple-MMP guide: only one SDK can trigger SKAN postbacks, TikTok supports postbacks for one MMP only, and X Ads does not support multiple MMPs.
- Compare daily installs by network and platform in both tools; read gaps against each tool's attribution windows before calling one wrong.
- Run long enough to cover a full Google Smart Bidding learning phase (Google says 7 to 14 days).
- Android: the Play Install Referrer stays readable for 90 days after install, so the new SDK can attribute users who installed shortly before they updated.
- Watch app update adoption: the new SDK only measures users on the new version.
- Gate09
Cut over Weeks 6 to 10
- Turn off each network in AppsFlyer under Collaborate > Partner Integrations on the cutover date.
- Airbridge's migration guide warns events may be counted twice if the previous MMP's postbacks and SAN setting stay on; switch them off on this date.
- Google Ads: make the new app conversion actions primary and the old ones secondary on the same day. Google says changing conversion goals resets the 7 to 14 day Smart Bidding learning window.
- Meta: changing an ad set's optimisation event is a significant edit that may restart learning; ad sets usually exit learning after about 50 results in a week.
- Move SKAN control to your new MMP on the date you chose, and turn off SKAN handling in the other SDK.
- Gate10
Retire the old setup Weeks 7 to 12
- Take a final export from AppsFlyer before the end date.
- Send the non-renewal notice in time: AppsFlyer's Terms of Use renew subscriptions automatically unless either side gives written notice 45 days before the term ends (unless your order form says otherwise).
- Remove the AppsFlyer SDK in the next app release.
- Remove the old link domain's DNS records only after old links are retired.
- Gate11
Final call: pick the destination Before gate 04
MMPs that fit what you entered, from their published pricing and docs. Decide before you add the new SDK.
LinkrunnerTeams go live within a week; CSV, API and webhook exports with no export fees. Free for 25k one-time installs, then $0.012 to $0.007 per attributed install, postpaid.
AirbridgeBest for small apps in East Asian markets. Free tier: 30-day trial; from $40 a month. Raw data: Growth plan only.
SingularFree tier: 15k paid conversions. Price: $0.05 per conversion (Growth). Raw data: Partly (ETL is paid).
TenjinBest for indie and hybrid-casual game studios. Free tier: 2k conversions a month; from $200 a month. Raw data: Yes.
What to re-map
- PostbacksEvent and revenue postbacks for Meta, Google Ads, moved to the new MMP on one date.
- Deep link domains and existing linksThe link domain, its AASA and assetlinks.json files, and every live link in ads, QR codes, emails and creator bios.
- Event namesOne sheet mapping each old event name to the new SDK's name, revenue events included.
- SKAN conversion schemaEvery conversion value rebuilt in the new MMP, with Meta's import URL and Google's schema source updated.
- AudiencesAudiences and cohorts synced to ad networks, rebuilt from the new MMP's data.
- Raw data historyAn export of the history you will need, taken before the old access ends.
Checklist
- Gate 01: Check the contract and data terms
- Gate 02: Inventory what you measure today
- Gate 03: Export your history
- Gate 04: Add the new SDK and map events
- Gate 05: Connect ad networks and partners
- Gate 06: Rebuild the SKAN schema
- Gate 07: Move deep links
- Gate 08: Release and run both SDKs
- Gate 09: Cut over
- Gate 10: Retire the old setup
What does switching MMP involve?
MMP migration: moving an app's attribution from one mobile measurement partner to another, including its SDK, ad network postbacks, SKAN conversion schema, deep link domains and historical data.
- Two systems at once: AppsFlyer and Singular both publish dual-MMP guides, and both say SKAN postbacks go to one MMP only.
- Fixed dates: renewal notice is 45 days at AppsFlyer and Adjust and 30 days at Branch and Singular, in their published terms.
- Data clocks: Adjust deletes customer data within 60 days of termination; Branch has no obligation to keep it beyond 90 days.
- Ad network resets: Google says Smart Bidding needs a 7 to 14 day learning phase after conversion goal changes.
How long does an MMP switch take?
Most of a switch is waiting on fixed clocks: notice periods, app update adoption and ad network learning phases. This planner pencils in about 7 to 12 weeks end to end, and the guide to switch timing explains each range.
Guides for each part of the switch
- How long does an MMP switch take?An MMP switch runs in seven phases, from contract notice to decommission. See realistic ranges, vendor renewal notice periods and ad network learning phases.
- How to run two MMP SDKs in parallelRunning two MMP SDKs in parallel lets you compare numbers before cutover. What AppsFlyer and Singular document, where it double counts, and when to stop.
- How to keep historical attribution data when you switch MMPKeep historical attribution data when you switch MMP: export windows per vendor, what each deletes after the contract ends, how to import, and warehouse tips.
- How to tell ad networks and partners you changed MMPWhat to change at Meta, Google Ads, TikTok, Snapchat, Apple Ads and with affiliates when you switch MMP, plus a notification checklist to work through.
- How to migrate deep links to a new MMP without breaking themMove deep links to a new MMP without dead links: AASA and assetlinks.json rules, keeping your link domain, vendor domain limits and a safe cutover order.
- How to remap SKAN conversion values when you switch MMPOnly one SDK may set SKAN conversion values. How to hand over the schema, reconnect Meta and Google, and time the cutover around the 0 to 35 day windows.
- How to move off Firebase Dynamic Links after the shutdownFirebase Dynamic Links shut down on 25 August 2025 and old links now return 404. What still works, how to export link data and the replacement options.
- How to choose where to move when you leave your MMPCompare MMPs on what matters when you switch: published pricing, export limits, renewal notice and data after termination, with a ranked list and key questions.
Moving off a specific vendor
Moving off AppsFlyerMoving off AppsFlyer? See what you can export and for how long, the 45-day renewal notice in its terms, where SKAN lives and which partners to turn off.
Moving off AdjustMoving off Adjust? See which raw data exports exist, the 45-day notice and 60-day deletion terms, how Meta pulls SKAN mappings and what to do with your links.
Moving off BranchMoving off Branch? See Branch's export windows, the 30-day renewal notice and 90-day data terms, how its SKAN endpoint works and what to plan for link domains.
Moving off SingularMoving off Singular? See its user-level retention windows, the 30-day renewal notice and data deletion terms, how SKAN models reach Meta and its dual-MMP guide.- Moving off Firebase Dynamic LinksFirebase Dynamic Links shut down on 25 August 2025. Quick facts on 404s, page.link, the APIs, the Takeout CSV export and what Google says replaces each feature.
Questions
What is an MMP migration plan?
It is a dated list of everything that has to move when you change mobile measurement partner: contract notice, data exports, the new SDK and event names, ad network connections, SKAN schema, deep links, a parallel run, cutover and retiring the old setup.
How long does it take to switch MMP?
This site's planner pencils in about 7 to 12 weeks from contract check to retiring the old setup, most of it a 2 to 4 week parallel run. No vendor publishes a standard length; your release cycle, renewal notice and ad-network learning phases set the real pace.
What is the riskiest part of an MMP switch?
Losing data you cannot get back. Export windows and post-termination deletion dates are fixed by each vendor's docs and terms, for example a 90-day raw report lookback at AppsFlyer and deletion within 60 days at Adjust, so the export step comes first.
Can I run two MMP SDKs at the same time?
Yes, for a while. AppsFlyer and Singular both publish guides for measuring with two MMPs, but SKAN postbacks go to only one MMP, TikTok supports one MMP at a time and X Ads does not support two.
Will I lose my historical attribution data?
Only if you do not export it in time. Export windows differ: AppsFlyer raw reports have a 90-day lookback, and Adjust's terms say customer data is deleted within 60 days of termination.
Do I need to tell my ad networks when I switch MMP?
Yes. Each network needs the new MMP connected (Meta partner integrations, a new Google Ads link ID per app, TikTok's own MMP setup), and the old postbacks switched off on the same date so conversions are not counted twice.