Switching mobile measurement partners used to mean a six-week release cycle, two SDK integrations running in parallel, and a finance team that lost confidence in every dashboard for a month. It does not have to.
If your mediation SDK supports remote configuration of attribution endpoints, the migration becomes a config change. We have done this for accounts running 50M+ MAU without a single new release on either store.
The pattern
Apps Kit SDK ships with a thin attribution adapter that translates internal install and event signals into the wire format of any major MMP. The endpoint, the API key, and the event mapping all live in a Firestore-backed remote config. Switching MMPs is a write to that config.
The validation window
We always recommend a two-week dual-track period. During that window the SDK fires postbacks to both the old and the new MMP, with a small random suffix on the install identifier so the two systems do not collide on dedup logic.
Compare the install counts, the event counts, and the cohort revenue side by side. Discrepancies above 3% almost always trace to event mapping mismatches — the new MMP is calling 'subscribe_trial' what the old one called 'trial_started'. Fix the mapping in config, re-validate, then cut over.
Event name mapping: the reference you will need
Every MMP uses its own canonical event names, and the mismatches are where 90% of migration discrepancies come from. These are the mappings we apply by default; treat them as a starting point and override per-event when your finance team has historical naming.
- Install: Adjust 'install' → AppsFlyer 'af_install' → Singular '__INSTALL__'
- Trial start: Adjust 'trial_started' → AppsFlyer 'af_start_trial' → Singular 'sng_trial_start'
- Subscription: Adjust 'subscription' → AppsFlyer 'af_subscribe' → Singular 'sng_subscribe'
- Purchase: Adjust 'purchase' → AppsFlyer 'af_purchase' → Singular 'sng_ecommerce_purchase'
- Tutorial complete: Adjust 'tutorial_complete' → AppsFlyer 'af_tutorial_completion' → Singular 'sng_tutorial_complete'
- Ad revenue: Adjust 'ad_revenue' → AppsFlyer 'af_ad_revenue' → Singular 'sng_ad_revenue'
Cutover day: the checklist
- Confirm dual-track parity within 3% on installs and within 5% on revenue events for seven consecutive days
- Lock the campaign tracking links on the new MMP at 09:00 local; verify postbacks land within 10 minutes
- Disable the old MMP's deep-link routing in remote config; keep its postback firing in read-only mode for 7 more days
- Notify UA, finance, and the leadership team in writing with the exact cutover timestamp
- Pin a dashboard comparing the last 24h of both MMPs and review at +6h, +24h, +72h
The rollback plan you will not need but must have
Because the cutover is a remote config change, the rollback is the inverse remote config change. We commit both writes ahead of time and store the rollback as a one-click action gated on a senior approver. The longest production rollback we have ever executed took under 15 minutes from decision to traffic on the old MMP.
The condition that triggers rollback should be written down before cutover: typically more than a 10% drop in attributed installs sustained over six hours, or any complete loss of revenue events. Vibes-based rollbacks lead to a second migration two months later, not to a better outcome.
Why this matters for media planning
MMPs charge per attributed install and per tracked event. The pricing differences between providers can run into six figures annually for a mid-sized publisher. When switching is a config change, the negotiating leverage shifts back to you — every renewal becomes a real conversation about price.
Vendor negotiation: what to ask for at renewal
Once your team can switch MMPs in a week without a release, your renewal conversations change shape. The questions that move pricing are specific and verifiable; the questions that do not are about feature roadmaps.
- Per-attributed-install rate at your current volume tier, broken out by iOS and Android
- Cost of incremental SKAN postback ingestion vs. bundled allowance
- Audience export and re-targeting fees — usually the largest hidden line item
- Annual rate-lock vs. monthly true-up — at scale, the lock is usually worth 10–15%
- Termination notice period — anything over 60 days erodes your leverage
When switching MMPs is a Tuesday afternoon, every vendor pitch becomes more honest and every renewal becomes a real conversation about price.
What to do this quarter
Even if you have no plans to switch MMPs, ship the dual-track scaffolding. Having the second postback path live and validated is the cheapest insurance policy you can buy against vendor incidents, pricing shocks, and acquisition events that suddenly make your incumbent the wrong choice.


