Every mobile UA campaign eventually produces two sets of numbers: the ones your agency reports, and the ones your Mobile Measurement Partner records. Most of the time they’re close enough that nobody looks twice. Occasionally they’re not — and that gap is where a surprising amount of wasted ad spend hides.
An MMP (Adjust, AppsFlyer, Kochava, Singular, and similar platforms) exists to solve one specific problem: proving which install came from which source, independent of whoever is buying the traffic. It sits inside your app via SDK, watches for the attribution signal a network or publisher sends alongside a click or impression, and matches it to the resulting install. That match is the install your MMP will count. Anything a source claims that the MMP can’t verify simply doesn’t count — at least, it shouldn’t.
What an MMP is actually checking
Attribution isn’t just “did an install happen after a click.” A functioning MMP evaluates several signals before it credits a source:
- Click-to-install time — installs that land suspiciously fast after a click, or long after an ad was ever shown, get flagged.
- Device and IP consistency — the device that clicked should be the device that installed, on a plausible network path.
- Click flooding and click spamming patterns — sources firing thousands of clicks hoping one lands near a genuine install (“spray and pray”) get filtered out.
- Post-install event quality — did the install go on to do anything, or did it open once and vanish? A real user has a shape; a fabricated one usually doesn’t.
None of this is exotic. It’s table stakes for any agency that’s actually buying real traffic. The problem is that not every dashboard you’ll be shown is pulling from the MMP at all — some are self-reported by the network doing the buying, which is a bit like grading your own exam.
Why the two numbers diverge
There are three common reasons an agency’s number and your MMP’s number won’t match, and only one of them is acceptable.
Reason one: reporting lag. MMPs finalize attribution windows over hours or days, not instantly. A same-day comparison will almost always look off. This is normal — check again after the attribution window closes.
Reason two: different definitions. “Installs” can mean raw app opens, first opens, or first opens matched to a click. If an agency’s number and your MMP’s number are measuring different events, they were never going to match, and that’s a reporting problem worth fixing, not a fraud problem.
Reason three: the number was never real. This is the one to watch for. If a source’s self-reported installs consistently run higher than what your MMP confirms — not once, but as a pattern — the delta is traffic your MMP rejected. Somebody optimized for a dashboard that isn’t yours.
If your agency’s number and your MMP’s number disagree by a wide, consistent margin, ask which one they’re getting paid on. The answer tells you everything.
The questions worth asking before you sign
Before a campaign goes live, it’s worth getting specific answers to a short list of questions — not because the answers are hard to give, but because how quickly and clearly an agency answers them tells you how the account will actually run.
- Which MMP do you report against, and is it the one already installed in my app? If the answer is “we have our own dashboard,” ask why that dashboard exists at all.
- Is attribution reconciled at the row level, or only in aggregate? Aggregate numbers are easy to make look tidy. Row-level source data is where discrepancies actually surface.
- What happens to traffic your own fraud checks reject? It should never reach your invoice in the first place — not get refunded after the fact.
- Can I see a live campaign’s numbers next to my own MMP dashboard, not a case study from someone else’s account? Illustrative results are fine for a pitch. Your account should be measured against your data from day one.
What this looks like in practice
At RVM Ads, every campaign is measured against the MMP you already have installed — not a proprietary dashboard we control. Source-level numbers are reported so they can be reconciled row by row, not just eyeballed in aggregate. If our figures and your MMP’s figures disagree outside of a normal reporting lag, that’s treated as our problem to chase down, not yours to absorb.
The broader point holds regardless of who’s running your campaigns: attribution isn’t a formality you check once during onboarding. It’s the mechanism that determines whether “performance marketing” is actually about performance, or just about a dashboard that’s easy to please. Ask for the MMP-level numbers, keep asking for them every month, and treat any agency that resists that request as having already answered your question.



