Humanoid robots poised to revolutionize the way we live and work
Lee Liao
Lee Liao
article.featured

Data Discrepancy Check for MMP(Adjust/ Appslfyer/ Branch.io/ Singular etc.)

Here I have listed normal reasons for "tolerable data discrepancies" and "intolerable data discrepancies"

December 5, 2023

Marketers who run mobile application ads rely on MMP(Mobile Measurement Platforms like Adjust, Appsflyer, Branch.io, Singular, etc.) which provides a mobile attribution service, has always faced a problem that there are data discrepancies or data differences between MMP and the Ad platforms.

Due to the complexity of the mobile attribution method, you will have to accept there will never be 100% accurate numbers when you compare MMP and Ad platforms, especially to SRNs (Self-reporting Networks), normally, for data scape within 10% you can consider it as "tolerable data discrepancy" (sometimes even a bit higher for daily level data) but if data gap is higher than 10% and the problem still exists when you look at a longer period like weekly or monthly data, you will need to take it seriously for "intolerable data discrepancy" and it may influence your marketing campaigns.

Here I have listed normal reasons for "tolerable data discrepancies" and "intolerable data discrepancies"

Tolerable Data Discrepancies between MMP and Ad platforms

Let's take Google Ads and Meta Ads as examples, below reasons also happen to most of the other SRNs (Self-Reporting Networks)

Causes of Discrepancy

Google Ads

Meta Ads

MMPs

Timezone

(Especially for daily data)

Varies - based on account settings

Meta ads' default reporting time zone is PST. Make sure to change it in Meta ads Manager

Varies - sometimes for a report generator like Adjust, its default with UTC+0, can change it on settings

Attribution Window: Click-attribution lookback window

30 Days

7 Days

Normally is 1-30 days. Make sure to set to 7 days with Meta ads, and 30 days with Google Ads

Attribution Window: View-through attribution lookback window

1 Day, but View-through conversions only show in the All conversions column and not in the Conversions column, unless set otherwise in Google Ads.

1 Day

Appsflyer: 1 Day by default, but can change from 1-48 Hours

Adjust: by default no View-through attribution only 7 days click, but can config View-through attribution

Different conversion dates

Google Ads attributes the conversion to the Click time

Facebook reports installs and other conversion events as the day of click

MMPs report installs as the day of install (i.e., first app open) and report in-app events when they happen.

Reinstalls

Google Ads show reinstalls as a session_start conversion.

Meta Ads consider reinstalls as new conversions after attribution window

MMPs normally have a 90 days re-attribution window, within 90 days reinstall won't be count as new install.

Multi-channel source attribution

Google Ads, as an SRN, attributes all installs following engagements with Google Ads, within their attribution window.

Meta ads self-attributes installs regardless of other media sources.

MMPs normally use last-click attribution

more attribution method for different MMPs refer to blow links:

Appsflyer / Adjust / Branch.io / Singular

So to confirm the configurations of MMPs and Ad platforms for data discrepancies, here is a basic checklist

  • Make sure Timezones are the same from MMPs to Ad platforms,

  • Check attribution windows setting for each Ad platform in MMP, and make sure it has been set to align with the Ad platforms,

  • Look at longer time periods like weekly data to reduce discrepancy from the conversion date difference,

  • Check if there are a large amount of reinstalls that cause the discrepancy,

  • If you are running a lot of Ad platforms at the same time, the numbers on MMPs are normally less than on Ad platforms cause MMP uses last-click attribution from all Ad channels.

Normally tolerable data discrepancies are conversions on Ad platforms slightly higher than MMPs

Intolerable Data Discrepancies between MMP and Ad platforms

If you have done the above check but there is still a big gap between MMPs and Ad platforms, or the data on MMP is much higher than Ad platforms, you can consider it as "intolerable data discrepancies", then you will need to check more campaign setting or dataflows between Ad platforms and MMPs to your own App, here I listed several common "silly" but actual happens a lot examples:

Case 1: Google Ads show 30% more conversion than MMP(Adjust or Appsflyer)

The conversion goals on Google Ads used conversion source from Google Play "Download" as "Primary Conversion", but actually there is a loss from the user clicking "Download" button in Google Play to install(first open) the app, and all redownload for reinstall will also counted as conversion in Google Ads, hence the 30% data gap.

Its suggested that if you have Firebase embedded in the app(which is highly likely yes), for Google Ads please always use the Firebase "first_open" event as primary conversions for download as it represents the actual install and Google Ads gives better optimization if you use Firebase native events.

After connecting Firebase properties to Google Ads and importing the "first_open" event as the primary conversion goal for the campaign, the install conversion data has quickly reached a more than 95% match rate compared to the installs in MMP.

download conversions on google ads
the Red is "Download" events from Google Play, the Green is "first_open" event imported from Firebase

Case 2: Meta Ads show 70% less conversion than MMP(Adjust or Appsflyer)

In this case, the install conversions on Meta is much less than the data on Adjust, after the investigation I found out the current Meta Pixel used for Mobile Ads tracking, is actually misused by another website pixel.

So on the Ad account level, you can see this Ad account has already built up pixels for connections to MMP, the pixel itself reflects nearly 99% install and in-app event accuracy, but at the Campaign level, the tracking setting was wrong and used another website pixel, hence the install data can't be correctly connect with according campaign.

After changing to correct pixels that have dataflow from Adjust, the campaign installs data quickly reached more than 90% match rate compared to Adjust, and different from Google Ads, Meta also refreshes historical data from time to time, so the historical data also quickly matched to the data in Adjust.

How can I know if the installs and in-app event data in MMPs are correct?

What if I am not sure if MMPs like Adjust or Appsflyers have recorded all installs and in-app events for the App, and wanted to confirm it has been recorded 100%?

This happens especially when startups do not have a well-deployed user analysis system, the logic to confirm it, is to find a baseline or trusted data source that has 100% install data, I will recommend using Firebase as the data source, all MMPs have provided a Push API(Appsflyer) or Callbacks(Adjust) that allows you to access raw data flow, please refer to my another post Use Firebase "first_open" event to validate MMP install data.

footer.aboutUs

footer.description