Jul 11, 2017
Are you wondering why the number of clicks and installs reported in Facebook is lower than that reported in a third-party service like Branch? There are many moving parts in the pipeline from the user clicking on your Facebook Ad to entering your app, which makes investigating Facebook Install Ad discrepancies difficult.
Measurements will never match up perfectly between different analytics tools, so some small discrepancies are normal. These can be caused by differing techniques for collecting data or processing the data that is collected, and can be explained by understanding what happens behind the scenes.
First, it’s important to know the technical reason why clicks are lower in Branch verses Facebook: Facebook routes users straight to the App/Play Store without letting Branch know that an ad was clicked. If the user decides not to install the app and drops off at the App/Play Store, then Facebook will have recorded one more click than Branch. Because Facebook blocks this click measurement, Branch cannot increment the click count until after the user installs and enters into the app. This is why you’ll see more clicks in Facebook’s dashboard.
If you’re wondering why there are more installs recorded in Facebook than in Branch, you’ll want to check whether there are re-open counts listed on your Branch Link. If you see re-opens, then the root cause of the discrepancy could be that Branch classifies re-installs by previous app users as re-opens, whereas Facebook classifies them as new installs.
If you’re stuck investigating a large discrepancy, the cause is often an SDK integration issue. The best way to catch these is by carefully reviewing our Facebook Install Ads Setup Guide — there could be crucial integration steps that have not been completed.
After you have reviewed the basic integration steps, use the following framework to ensure your app is correctly configured for Branch-enabled Facebook Install Ads. Between iOS and Android, there are nine items to check.
Note: If at any stage of this checklist you realize that something is not right, please open a ticket with our Integrations team with the results that you’ve collected. We’d be more than happy to help you investigate!
Please ensure you’ve entered your Facebook App ID and Secret at Dashboard > Settings > Link Settings > Authenticate for Facebook Install Ads. Also, make sure the ad you are creating corresponds to the Facebook app ID that you entered here.
For more information on configuring the Dashboard, see this section of the setup guide.
This is an important step because we need to ensure that after a user enters into your app, data is sent to Branch. For this, you’ll want to simulate a user installing your app for the first time as well simulate an existing user opening your app.
Simulate a new user installing your app:
Simulate an existing user opening the app:
Repeat steps 2 – 4 above. This time, clicking on your link in step 3 should take you directly to your app and you shouldn’t need to install it.
We need to make sure the App Links tags are being correctly detected with the following format: uri-scheme:open?link_click_id=<link id>
.
To verify this, follow these steps:
uri-scheme:open?link_click_id=<link id>
.This step is particularly important because Facebook needs to know the URI scheme of your Android and iOS App, along with the Branch Link information that it should pass once the user opens it.
Here’s what a healthy scrape from a Branch Link looks like:
Notice that there are App Links tags for iOS and Android of the form:
<meta property="al:ios:url" content="branchsters://open?link_click_id=link-406464435260122977" /> <meta property="al:android:url" content="branchsters://open?link_click_id=link-406464435260122977" />
You need to be collecting device IDFAs in your iOS App and GAIDs in your Android App. If you aren’t, then this could be the reason that your numbers do not match. When a user clicks on a Facebook Install Ad, Branch does not know that an ad from Facebook was clicked until a user enters and actually opens the app. Upon entry, Branch passes the device’s GAID or IDFA to Facebook to check whether any ads were clicked. If an ad was clicked, Facebook will return data about it including the link that was used in the deep link field when setting up your ad. Branch will then parse out that link, use it to register a click, and return data associated to it to your app’s deep link handler.
Here are guides on how to enable IDFA (iOS) and GAID (Android) collection in your app.
If you’ve enabled Branch’s setDebug on iOS or TestMode in your manifest file for Android, make sure you’ve removed or disabled those calls. With these modes enabled, the Branch SDK uses fake values for the IDFA and GAID on fresh app launches. This means that when Branch asks Facebook whether a user with a particular GAID or IDFA has clicked on a Branch Link, Facebook will respond saying that they haven’t since this data is faked.
Next, please ensure that you’ve configured your App Install Ad correctly by placing your Branch link inside Facebook’s Deep Link field. Here is how it should be configured.
If you’re using the Facebook SDK inside your app, please ensure the Facebook SDK is not consuming the deferred app link before Branch does by checking that the following calls are commented out from your app:
Android: fetchDeferredAppLink
iOS: fetchDeferredAppLink
We discovered a bug within the Facebook system that prevents App Links from being read by the robot if any of the app restrictions are changed. Check that your app’s restrictions from the Advanced Facebook App Settings tab looks exactly like the following screenshot:
If you’re interested in seeing how a brand new user would experience your Facebook Ads flow, the best option is the Ads tester tool. We have a great write up about the correct testing process here.
Give yourself a pat on the back, because that was a lot to check. Hopefully, it is clear why we consider Facebook Install Ad discrepancy cases one of the most difficult kinds of cases to troubleshoot. Armed with this checklist, you’ll be able to verify a lot of what we check for yourselves. Our hope is that it saves you lots of time and hopefully money! If you’re still having problems or if you encounter an issue during one the checks, please get in touch with our Integrations team. We are always happy to help out!
Branch is now a Facebook Mobile Measurement Partner! This means that in addition to enhancing Facebook ads with deep links, Branch can also provide you with best-in-class attribution and analytics for Facebook app ads. To learn more, click here!