Pass some data to ITunes Store url and get it from application - ios

Is there any known way to pass some data in iTunes Store url:
https://itunes.apple.com/app/id000000000?mt=8
And then get it from installed app?
As I know, Google Play have "referrer" parameter that you can get from installed app, but iTunes doesn't. I need to track installations of our apps, and don't know where to start. Maybe there is a way to link our url and application launch?
Some companies, like Adjust or Appsflyer can do that. How is that possible?

You have a few choices here:
A) you can rely on attribution measurement in Firebase/Google Analytics. This is the way you are asking about. It's for free, but it has some huge limitations like only attributing some sources (no Facebook campaigns for example) and you need to use generally very unreliable UTM parameters with each link.
B) You can rely on AppsFlyer or Adjust which attributes referrer sources on the back-end. So it's agreement between Facebook / Google etc. and AppsFlyer to hand-over that information. It's industry standard and if you have money (you pay for each non-organic attribution, approx. 5 cents per install)

Related

How to detect an iOS app install campaign inside the app

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

Tracking affiliate generated app installs in iOS greater than 24 hours

I'm trying to run an affiliate project for my app and Apple's 24 hour cutoff makes it a bit difficult. I'm wondering whether there is a way to implement one's own tracking?
I first was thinking a landing page with a phone number input form. Upon submission we'd use something like Twillio to send the user the app store link via SMS and also store the phone number together with the affiliates code from the landing page URL. I then saw that Google somehow let's you track adwords in relation to app installs and thought that perhaps there might be a way that doesn't involve this phone number indirection... Anyone know how they do it?
To be or not to be
The main question here is nature of your intention.
It reasons necessary accuracy / limitations you have on iOS. I see two variants.
100% Accuracy
If you need 100% accuracy, you can use SFSafariViewController - it's view is rendered by another process and it has shareable cookies between your app and Safari. It's iOS 9+ only 100% way to attribute installs. Also you can go with explicit attribution (email, phone number etc.) requested from user after app install. It might be needed if business model relies on this process (like each install is paid out to user account etc.)
You can get an idea and do implementation following this link
<100% Accuracy
If you want to provide greatest UX possible (but it's not critical) or gather analytics (but it allows some kind of deviation) you can go with some approximation techniques, like gathering IP addresses, location etc from requests to your affilate link. The flow can be following:
Your landing page contains dynamically generated link
Upon clicking on link, user metadata is stored (ip, location, device info - whatever can be grabbed from User-Agent or another info available to your web service)
User is redirected to App Store
Upon install and run, app queries your service with device info and ip.
Your web service now decides on attribution. Matching algorithm can include any necessary amount of variables / conditions. Like "Same IP + Device Type + No more than 5 minutes since clicking the link".
This way you don't request any user info (email, phone number) but you're already able to track attribution. Correctness percent is subject to tuning.
Edit #1
This approach might be helpful to you, it's used to attribute login, however you can use modified for analytics.
Edit #2
If you're really wondering, how AdWords does this, you might be interested in install tracking step-by-step guide. It's explicitly stated (section "Instructions for tracking iOS app installs (first open)", p.14) that you should either use AdWords tracking code (this tutorial describes how) or setup server-server integration. So, going back to original questions:
..there might be a way that doesn't involve this phone number indirection?
Yes
Anyone know how they do it?
There are lots of techniques (as well as measurement pixel built on top of mentioned above SFSafariViewController), described in these docs:
Google SDK,
3d-party SDKs

Deep link after iOS app installed (Deferred deep linking)

How can you solve this scenario:
User is using Safari on iOS. They click a link on a website that says
"View Profile on our app". The user does not have the app, they are
taken to the app store to download the app. After they open the app,
the app immediately loads the profile screen (instead of the main
screen).
Currently in order for us to solve this problem, when the app is installed we immediately open Safari to grab the session cookie, if it matches the one on the server we load the right screen. However, Apple is now rejecting our app (and others) for loading Safari at startup.
What is a valid solution that won't get rejected by Apple?
(Also note that we were exploring IDFA - which would have worked - but Apple is rejecting apps that use IDFA if the app isn't using Ads)
This is definitely possible without the IDFA.
Basically, create a URL endpoint on your server that will 302 to the App Store on GET. When a user clicks this link, collect IP Address, OS, OS version, device model, screen size and other parameters and store it as a browser fingerprint.
Then, after the user installs your app, send the same array of meta data to your server as a device fingerprint. Your server can then match this device fingerprint to the browser fingerprint. If there's a match, you can be very certain that the user originated from your link.
Just to give you an idea of numbers, we (at Branch) give this service away for free and now process hundreds of millions of these match queries per day. We've seen that if a user will install, 99% of them will do it within the first 60 minutes. Just empirically, we estimate that this mechanism, with a short window of 2 hours is very close to 100% accurate.
For an added benefit, if you collect IDFA, you can drop a cookie on the browser on redirect and then store the matched pair to the IDFA to create a semi-permanent alternative to the fingerprinting mechanism I mentioned above. If someone clicks your link again, and you've got a cookie stored in the browser, you'll know who they are when they send their IDFA back to your service on install because you've seen that story play out before.
The best solution requires IDFA, which you are in fact allowed to collect for the purpose of deferred deep linking. The "Apple IDFA Scare" was a bit overblown in the media, and Apple revised its T&Cs to make it more clear. Apple also allows you to collect IDFA if you are an advertiser, for attributing installs, or for attributing post-install actions. In other words, you don't have serve ads in your own app in order to collect IDFAs.
Here's a link to the current Apple policy (https://developer.apple.com/news/?id=08282014a ), and this article from AdExchanger goes into a little more detail (http://www.adexchanger.com/mobile/apple-throws-a-bone-to-app-marketers-blesses-idfa-for-attribution/ )

iTunes install tracking

I should be able to track the click to install conversion, with tools like Flurry or Adjust (ie. user clicks on a generated link, and is redirected to my app on the iOS AppStore and I could see, the click and the install).
How does this work, from the technical side. I'am generating a link, where I can obviously track the click very easily, but how do I get the conversion, from click to install? I can redirect the user to the AppStore page, but I would need to provide a ID (or similar) which the AppStore will provide my app, that the respective SDK can track the actual install.
Could you provide me some insight, how this works? Through iTunes Affiliate?
Through Flurry it's really easy if you own the apps:
Flurry SDK must be installed on both the apps (let call them A and B).
On Flurry website goto Company Tab -> "Conversions" -> "Up-Selling" -> "Create New Up-Sell..."
Then add the conversion you are trying to measure for example from A to B (you can also measure B to A separately).
This would make Flurry start measuring this.
For now you cannot measure exactly how many is by your ad at app A or if the user got both apps separately it would still get into that count. The way to measure that is not so complex it's involves Flurry creating a unique ID for the device (they are probably using Advertising ID - IDFA or other unique identifier you can get from the iOS SDK) and if this ID appears on the other app it would count as up sell (if A is before B).
Doing all that on your own without Flurry is too much because you would need servers just for that task. If you are willing to do so just on server side save each user_id (IDFA or other similar) the APP_ID that connected to it (it is pretty easy to get the bundle_id so you could use it or get from the iTunes API the exact APP_ID), then you would have for each device which apps he has that you installed your SDK on. from there you could estimate your conversion rate. On top of that you could register each link press on your server and then have another estimation of clicks from the SDK itself or sending the user to your server with his IDFA (or similar) and APP_ID. To make statistic more valuable you can measure time from the click till the actual running of the advertised app etc.
For now Apple doesn't provide this service themselves. not through iTunes connect or through other systems I know.

How is flurry able to detect when a user installs an ios app from a provided link?

Flurry can give you a URL that redirects to your app on the App Store, and they can tell you how many people install the app by using that URL. How do they do this?
I've found the answer on Quora, answered by the CTO of Flurry. They use various data points to tie a certain click to a certain user of the app. They claim to be about 90% accurate.
Data points they use include time of click vs time of install, device type, location of user, etc.
http://www.quora.com/Flurry/How-does-Flurry-user-acquisition-work-1

Resources