1

I'm running Facebook Ads campaigns for my iOS app and quite naturally I have Facebook Analytics SDK integrated inside my app to track App Installs and Start Trial events to measure the "quality" of the traffic my campaigns bring.

At the Analytics settings page inside Facebook developer dashboard.

https://developers.facebook.com/apps/XXX_APP_ID_XXX/analytics/settings/?business_id=XXX_BUSINESS_ID_XXX

I have the option Log In-App Events Automatically (Recommended) set to "Yes", which I presume enables the tracking of App Install and Start Trial events. There's also a Shared App Secret field filled in with the value from iTunesConnect.

Indeed, the App Install and Start Trial events have started to appear inside Analytics dashboard

https://www.facebook.com/analytics/XXX_APP_ID_XXX/AppEvents?__aref_src=landing_page&__aref_id=entity_name&force_desktop=1&user_id=XXX_USER_ID_XXX

However I noticed when viewing the stats for just App Installs there's a quite considerable value in USD attributed to these events. I decided to take a closer look into these events using Event Debugging

https://www.facebook.com/analytics/XXX_APP_ID_XXX/most_recent?since=1577923200000&until=1580256000000&__aref_src=landing_page&__aref_id=entity_name&force_desktop=1&user_id=XXX_USER_ID_XXX 

and selecting "App Install" in the events filter.

There I saw that some (only some and as if randomly) App Installs have a value associated with them. To me this is an unexpected behavior since I can't imagine revenue being made by just receiving an install.

Same goes for Start Trial event, which always has the value associated to it (equal to the sale price of a subscription period) and once again this makes no sense to me because started trials themselves bring no value to me. They may be canceled or may end up in Billing Retry when the user has no money on the bank card attached to their iTunes account, etc. I track the conversions from Start Trial to Purchase on my backend separately with great precision and only these conversions as well as subsequent renewals would bring real value to my business.

I can and will track these Purchases manually and post them to Facebook (server-to-server style) and I will supply the corresponding value to these events myself, which will help to understand the overall performance and ROI but I need to clean my stats from these "false" automatically and erroneously attributed values to App Install and Start Trial events first.

I've already reported this issue to Facebook few days ago, however they seem to be slow in handling such requests so I've decided to ask here if anybody ran into similar issue.

Jan Černý
  • 1,268
  • 2
  • 17
  • 31

2 Answers2

1

Add this to your plist file to disable Auto Event Logging

<key>FacebookAutoLogAppEventsEnabled</key>
<false/>
Lena Bru
  • 13,521
  • 11
  • 61
  • 126
  • Thanks for leaving a comment, Lena. This sounds as if it would stop tracking the App Events such as App Install and Start Trial, which is not I want. I want the SDK to stop tracking value for these events, however I still need these events to be tracked in full number. Can you please confirm this is achieved by your solution? – leakage_alert Jan 30 '20 at 17:45
  • You would have to report those events yourself, under a different name, to achieve what you want. These events are collected as metric for installation source – Lena Bru Jan 30 '20 at 17:47
  • Would you propose reporting these events to Facebook from client side or server side? I'm a backend developer myself and I don't know if Facebook SDK has the option for manual reporting. Also, can you elaborate on why do you propose different names for these events? – leakage_alert Jan 30 '20 at 17:53
  • 1. the facebook sdk does have the option for manual reporting. 2. I think the facebook SDK does not allow manual reporting of said events, that's why i suggest renaming them. 3. Installs definitely from client side, Start Trial I dont know, it depends on you. – Lena Bru Jan 30 '20 at 17:55
  • 1 & 2 makes sense, thank you. As for client/backend reporting, let's say I decide to report "Custom App Install" event manually client-side and "Custom Start Trial" event manually server-side. How do I tell Facebook when reporting from server that the particular "Custom Start Trial" event is performed by the same user for whom "Custom App Install" event was previously reported from client? I want the funnels in Facebook Ads business cabinet to work correctly. I believe there should be some ID to connect server and client reporting together. IDFA maybe? But what if it's disabled by user? – leakage_alert Jan 30 '20 at 18:12
  • You can get FirebaseInstanceID, and tell the app (through the AndroidManifest) to backup this ID, that way it will survive app reinstall, and so you will know that the user installed more than once – Lena Bru Jan 30 '20 at 18:37
1

Thanks to Lena Bru for giving enough food to find a solution.

The Facebook documentation is scarce on the raised questions and the support answer literally headed me towards the documentation. To recap things, there were 2 main issues (the second one I've mentioned in the comments to Lena's reply):

  1. Facebook was tracking value for the events, which brought no value to my business
  2. Some of the events I've sent from backend didn't appear in the campaign reports

To solve both of these problems, I:

  1. Turned off the value tracking option in the Facebook app settings
  2. On the client side I've started setting up User ID (which the client receives from backend) according to Facebook documentation
  3. I've started to send all of the events, which I wanted to view inside Facebook business cabinet, under custom names from backend. I've supplemented them with app_user_id parameter (see Advanced Matching for App Events in Facebook documentation) so that they could match the App Installs reported from client.

There's still a smaller issue left (it feels like Facebook reports include 20% less installs than actually happening) but the current setup is already something to begin with.