Short answer: Meta and your MMP count installs differently. Meta credits itself for installs within its own attribution windows, including views, and models some iOS conversions. Your MMP picks one winner across all your channels. Some gap is normal. A large or sudden gap usually points to a setup issue.
What is an install discrepancy?
An install discrepancy is the difference between the installs an ad network such as Meta reports for a campaign and the installs your mobile measurement partner (MMP) attributes to that same campaign. Some gap is expected, because the two systems answer different questions.
- Meta asks: did someone who saw or clicked our ad install the app within our window?
- Your MMP asks: of every channel that touched this user, which one gets the credit?
Why do Meta and MMP install numbers differ?
They differ because Meta counts every install it touched within its own windows, while your MMP deduplicates across all channels and gives each install to one source. Six causes explain almost every gap.
- Different attribution windows. Meta says differences with MMPs are typically due to different attribution windows. Meta counts click-through and view-through installs within the windows set on your account, so if your MMP uses a different window, or ignores view-through, the numbers will not match.
- Every network claims the install. Meta, Google and TikTok each count installs they touched. Your MMP gives the install to one source, so the network totals add up to more than your real installs.
- Modelled iOS conversions. Since Apple's App Tracking Transparency (ATT) changes, Meta fills gaps with modelled conversions that your MMP cannot see.
- Time zones. Meta reports in your ad account's time zone; your MMP may use UTC or the app's time zone, which shifts installs across days.
- What counts as an install. Meta may count an install event; your MMP usually counts the first app open after the SDK starts.
- Broken event setup. Missing SDK initialisation, duplicate events or a wrong app ID cause real gaps.
How big a gap is normal?
Some gap between Meta and your MMP is normal and usually comes from windows, view-through credit and modelling. A gap that is large, or that jumps suddenly from one week to the next, usually means something is broken.
| Gap size | Likely cause | What to do |
|---|---|---|
| Small and stable | Time zones, reporting delays | Nothing, keep watching the trend |
| Moderate and stable | Windows, view-through, modelled iOS conversions | Align windows, compare like for like |
| Large or sudden | SDK or event setup error | Audit the integration before changing budgets |
How to diagnose a large gap
Work through these in order. The early checks are quick and catch most problems.
- Check the date range and time zone on both sides.
- Check attribution windows. Set your MMP to match Meta's click and view windows for the comparison.
- Check the app ID and SDK version in your MMP and in Meta Events Manager.
- Check SDK initialisation. Make sure the SDK starts on first app open, before any login screen.
- Look for duplicate events. Sending installs from both the Meta SDK and your MMP can double count on Meta's side.
- Split iOS and Android. If the gap sits mostly on iOS, modelled conversions and ATT are the likely cause.
How to close the gap
- Match attribution windows on both sides
- Compare the same time zone and the same date range
- Look at weekly trends, not single days
- Make sure your MMP sends conversion events back to Meta, so Meta optimises on the same events you measure
- Investigate any large or sudden gap as a setup problem, not a reporting quirk
Which number should you use for what?
| Decision | Use |
|---|---|
| Splitting budget between Meta, Google and TikTok | MMP, because it deduplicates |
| Optimising ad sets and creatives inside Meta | Meta, because its algorithm uses its own data |
| Reporting total paid installs to finance | MMP |
| Checking CPI trends inside one network | Either, as long as you stay consistent |
Do all MMPs integrate with Meta?
The main MMPs all state a Meta integration. Tenjin joined Meta's MMP programme in February 2025, Branch says it supports Meta's Advanced Mobile Measurement (AMM) from June 2025, and Airbridge relaunched AMM support the same month. AppsFlyer, Adjust and Singular also document Meta integrations.
The difference is in how each tool presents deduplicated data and which events it can send back to Meta. Compare the options on the best MMP for startups page or the AppsFlyer vs Adjust comparison.
Where Linkrunner fits
Where Linkrunner fits: Best for teams spending on Meta and Google that want one deduplicated view and revenue-based optimisation. Linkrunner connects to Meta as a Meta Tech Provider, shows Meta, Google and organic installs on one dashboard, and sends revenue events back to Meta so campaigns optimise on paying users, not just installs.
It also supports view-through attribution, which makes like-for-like comparisons with Meta's view window easier, and pricing is published from $0.010 per install. See how that compares in the MMP pricing table.
If your Meta and MMP numbers have drifted apart, a clean deduplicated view is the fastest way to find out why, and you can test one free on Linkrunner for the first 25k installs.
FAQ
Which number should I trust, Meta or my MMP? Use your MMP for budget decisions across channels, because it deduplicates installs that several networks claim. Use Meta's numbers to optimise inside Meta, since its delivery algorithm runs on its own data.
Is some gap between Meta and my MMP normal? Yes. Differences in attribution windows, view-through credit and modelled iOS conversions mean the two rarely match exactly. Watch for gaps that are large or change suddenly.
Why does Meta show more installs than my MMP? Meta counts installs within its own click and view windows, including modelled iOS conversions. Your MMP gives each install to a single source, so other networks or organic traffic may take the credit instead.
Can my MMP show more installs than Meta? Yes, though it is less common. It usually means your MMP uses a longer window than Meta, or that Meta has not yet received delayed conversion data.
How do I reduce the discrepancy? Match windows and time zones, check that the SDK initialises on first open, and remove duplicate install events. Then make sure your MMP sends conversion events back to Meta so both sides optimise on the same signal.