I have been Googling this to try and confirm - My understanding is Apple now reject apps using IDFA without actually serving Adverts. For the demographics feature of Google analytics the documentation says that IDFA collection must be enabled.
There are lots of articles around how the latest version of the Google analytics IOS SDK no longer requires the collection of IDFA by default.
To gather demographic data though - can someone please confirm if you still need to enable this option? Is it no longer possible to collect demographic data without serving ads using Google analytics?
Thanks heaps
I am using IDFA exclusively for getting demographic info for Google Analytics.
I chose the option:
"Attribute this app installation to a previously served advertisement".
And my app was approved. Cheers! :-D
When submitting the app, specify that you are using it to attribute campaigns served outside of the app. Works for us for over a year.
Related
As most of you are probably aware of, iOS 14 will basically put an end to app acquisition tracking as we know it.
Here are two great articles that explore the issue in length:
The App Attribution Industry Is Dead
How To Prepare Your Mobile App and Attribution Stack for Apple’s iOS 14 Privacy and IDFA Changes
Putting aside the critical changes most people will have to make to their business models, my question has to do with Firebase's dynamic links in particular.
Since they basically rely on copying a link in the pasteboard, I already know they might now trigger a warning banner — although the Firebase team has apparently been proactive with this matter.
What I don't know at this point is whether they will continue to work or not when users disallow ad tracking.
My team and I have tried building one of our React Native apps with XCode 12 beta on a simulator running iOS 14, but haven't been able to retrieve any value from the dynamic links — whereas it currently works with iOS 13. There might be other factors at play though, so it's difficult to draw our own conclusions at this point.
My questions, provided that the users have opted out of tracking:
Will we still be able to read the dynamic link url in-app?
Will Google Analytics still receive the UTM parameters and get campaigns' results?
If the answer is no to any of these questions, what are the workarounds or third-party solutions you've found?
Your insights will be greatly appreciated!
According to Google's blog post: https://firebase.google.com/docs/ios/supporting-ios-14
If IDFA is not accessible:
No impact for link-opening functionality
When used with Google Analytics, attribution for link conversion events is unavailable.
Is there any way to get the app install referrer information via firebase for an iOS app.
Say there is a iOS app dynamic link with information about the source and campaign. And if the app is not installed, the link takes you to app store for installing the app.
After installing when opening the first time, is it possible to track the campaign source information via firebase.
Any help is appreciated.
Currently, due to Apple dropping the referrer's URL when the user is taken to Apple Store to install the app for the first time, Firebase Analytics can't report campaign event and attribute it to the source/campaign. Firebase Dynamic Links can probably solve that issue.
If users already install the app, and the URL opens the app directly with the link, then yes, Firebase Analytics can link to the source/campaign if the URL has utm_campaign or utm_source in the URL params.
Yes, according to the documentation, APP_FIRST_OPEN is one of the metrics measured in Dynamic Links. If you want to track different campaigns, the documentation says
You use Dynamic Links with your existing Google Analytics custom
campaigns and iTunes Connect App Analytics campaigns by specifying
campaign parameters when you create a Dynamic Link. When a user opens
a Dynamic Link with campaign parameters specified, the campaign
parameters are passed on to Google Analytics or the App Store.
I would like to find out in my iOS app if the app was installed due to an ad campaign link.
Google Analytics is doing this and it is tracked on their analytics web page. iTunes Connect is doing this too and it is also tracked on the iTC web page.
I'm looking now for a way to get this information inside the app. When the app first starts i want to check if it was installed because the user was sent to the App Store by a campaign link and what campaign id it was.
Is there a way for an iOS app to ask Google Analytics, Firebase or iTC/StoreKit what campaign has led to its install?
Google Anlaytics uses IDFA of user's device as identifer after user installs the application, i.e. when user clicks on the ad, they are redirected to google analytics where they collect user's IDFA and redirects user to iTunes. Once user installs the application, they match the saved IDFA with user's IDFA and if they match they mark that user as attributed.
I looked at the Google Analytics docs, to find some info on callback that google may provide if there is a match, after user installs the application. Unfortunately, I could not find anything.
But the thing is, I don't think this method should work at all now after iOS 10. Apple provided users with Limit Ad Tracking from sometime now but on iOS 10, if a user has enabled it, the IDFA API returns a number like this: 00000000-0000-0000-0000-000000000000
You can imagine you cannot match user using IDFA now.
On the other hand, there are other ways to do fingerprint matching for iOS devices. It is not very accurate but it works most of the time.
I have used branch.io for deferred deeplinking and it worked. You can also look at the solution provided by them. They have a callback which you can implement and get to know from which link your app is getting installed.
It looks like Adjust can do this:
Adjust says it uses fingerprinting when IDFA is not available
https://docs.adjust.com/en/getting-started/#tracking-installs
According to https://docs.adjust.com/en/callbacks/#best-practice-accessing-adjust-attribution-data-externally
and
https://partners.adjust.com/placeholders/
the Adjust SDK seems to allow the app access to its data including campaign name for installs.
I will comment later if this really worked.
I got an answer from Adjust saying:
yes it is possible with the Adjust SDK to attribute installs to the
source which drove that install.
By setting up campaign parameter structure to the tracker URL, you can
actually find out the the Network Name, Campaign Name, Adgroup Name
and Creative Name.
For your reference here is the guide to setup campaign parameter
structures ->
https://docs.adjust.com/en/tracker-generation/#planning-your-tracker-structure
I have installed Google Analytics SDK using the Google Analytics v3 iOS guide and I have verified that it is hitting analytics through the real time view of the analytics dashboard. I then followed all the campaign tracking v3 iOS guide, including the troubleshooting steps "Self-serve diagnosis for iOS conversion tracking." The IDFA data was getting sent to GA as verified by viewing the "Audience->Demographics->Overview" page, and all the other steps also verified we had set up the tracking correctly. I then submitted the app, waited for review, and tested the install tracking by creating the following UTM link using the google link generator at the bottom of the Campaign tracking guide (note that the link here is bogus data, but shows the general link structure):
https://click.google-analytics.com/redirect?tid=UA-1234-5&url=https%3A%2F%2Fitunes.apple.com%2Fus%2Fapp%2Fmy-app%2Fid123456789&aid=com.company.app&idfa{idfa}&cs=google&cm=cpc&ck=running%2Bshoes&anid=admob&hash=md5
I then uninstalled my app on the phone I was using to test, clicked on the link to get directed to the app store and installed my app from there. I proceeded to wait 3 days and then looked for the install in the "acquisition->sources->all" tab of analytics and did not see the campaign show up. I then looked more closely at the guide, which has the following warning:
"Note: iOS Install Tracking only works for ads served through mobile ad networks, such as AdMob that serves in-app ads."
Which seems to suggest that the only way to verify that the UTM link install gets tracked correctly is by paying an ad network to serve an add in an app and then click on that ad?? That seems absurd. So we did some backwards engineering. In Android, all one has to do is click on the link and the install gets successfully tracked. That suggested that the restrictions imposed by IDFA (an Apple innovation) made it difficult for analytics to serve a 'one link tracks all installs' solution. Looking back at the UTM link, I noted that there is an idfa{idfa} portion that presumably is supposed to include the idfa of the phone clicking on the link, which would only be possible if the app serving the add or some other entity that knows the phone's IDFA number changed the link to include that phone's IDFA. We then obtained the phone's IDFA number through the GA logs and edited the UTM link to include the IDFA number within the brackets so the portion that used to be idfa{idfa} now was idfa{}. We then clicked on that link and are now waiting for another three days to see if it shows up in GA acquisitions... We also made an Admob account and tied it into the analytics account to track the app... but it appears that is just another way to view the exact same information that is presented in the analytics dashboard.
What is the proper way to test UTM campaign tracking? Do I really have to create a mobile add, run it and click it? Should clicking on the link as generated by Google work fine and show up in GA acquisitions, and the absence of its presence signifying my UTM tracking is not working?
I want to use Google App Indexing with my web pages and iOS app.
I do support Universal Links (or deep links in Google lingo) with Apples Search and have my web pages set up accordingly.
From Googles documentation I am unable to find out if I really need to add the Google App Indexing SDK. The SDK does not give me any required functionality and I would prefer to skip it - but does Google rely on the SDK to be able to do the magic?
I am not doing any indexing of in app content, the only thing I want to be indexed is the web pages, and get the according deep links.
To enable App Indexing in your iOS App, adding the Google App Indexing SDK is mandatory as the documentation suggests.
This way it will be possible for your App content to be searchable by users conducting Google queries, producing results that will lead the users to open or install your App.
Concerning the SDK, it will influence ranking, whether or not the user has your App installed. This means that if your App is indexed, Google will use the content within your App as a signal in ranking and not just your web content.
Users will also see an enhanced UI with your App icon on the search results page.
Hope this helps.
You are right, getting Google search results to deep-link into your app is achievable using only Universal Links and having your web content naturally feature in Google search results.
The Google documentation isn't great, but there are two major reasons you'd want to integrate the Google App Indexing SDK:
The first, as the documentation does say, is so that Google ranks your 'app content' higher in Google search results than if you didn't integrate the SDK. My guess is that 'app content' here is defined as your web content with app related meta data, such as the <link rel=alternate> tag specified in the documentation. I've yet to find any way to validate/verify to what degree this helps - we have to trust the documentation for now.
The second is that currently, your deep-linking will only work from Safari Mobile. To facilitate deep-linking from Google search results into your app in Chrome for iOS will require implementation of Google's SDK, which will also provision a "back to Google" button in your app. To see whether this is worth doing you'd have to check your analytics to see how many of your iOS users are using Chrome instead of Safari Mobile as their main browser on iPhone.
Source for second reason: https://www.youtube.com/watch?v=6NFRNamQGCc&feature=youtu.be&t=268