100% Tracking Accuracy on iOS 9

Whenever we’re asked how install tracking works, the first distinction that needs to be made is whether we’re talking about install tracking / attribution for paid media campaigns vs. other organic forms of app promotion (email, social, etc.). In the case of the former, Tapstream is typically able to collect a unique device identifier (IDFA, GAID) that allows us with 100% certainty to know if a user came from a specific paid ad campaign. In the case of non-paid channels, it gets a little more complicated…

At a high level, tracking is done through tracking links in conjuction with an SDK installed in a target application. When I market my app, I use Tapstream tracking links in my marketing. When a user taps on a tracking link a bunch of data is sent to Tapstream and the user is typically redirected to the app store. Once the app is installed and opened, the SDK inside the application sends the same data points to Tapstream and we look for a match. If one is found we can say with varying levels of certainty that this particular user came for this particular marketing campaign (Tapstream link).

Up until (and including) iOS 8, whenever a user tapped on a Tapstream tracking link in an email client, web browser, Twitter client, Facebook app, etc.. Tapstream would collect a handful of data points (IP address, device type, device model, OS type, OS version, Timestamp, etc). Once the app was installed the SDK would send along the same data points to Tapstream to look for a matching campaign click. This is known as device fingerprinting and while this method works quite well in the vast majority of cases, it’s not 100% accurate. It’s not hard to imagine a scenario where a bunch of iPhone users on the same IP address are installing the same app, game, social app, etc. nearly at the same time. In edge cases like this, signals can get crossed.

This has all changed with iOS 9, thanks to the new SFSafariViewController.

SFSafariViewController is a new technology available (part of the Safari Services Framework) that makes it dead simple for app developers to implement a web browser inside of their applications. It allows users to tap on web links inside an app without being bounced over to the full version of mobile Safari, effectively leaving the current application. What’s most interesting about the new ‘mini browser’ is that it shares cookie data with the mobile Safari. This is important. What I didn’t mention above is that when a user taps on a Tapstream tracking link, we also drop a first party cookie into Safari.

Ok, so how does tracking work on iOS 9?

Now when a user installs an application with the Tapstream SDK, we create an instance of the SFSafariViewController inside the app (which is hidden from the user and doesn’t impact the user experience at all). We use the SFSafariViewController to hit a Tapstream API endpoint and we send along cookie data (if available) along with a unique identifier. We can then determine a conversion based on matching the cookie sent by the app to the cookie placed when a link was tapped. This effectively makes conversion tracking on iOS 9, 100% accurate.

All Tapstream customers can take advantage of this new cookie based tracking but for now it is opt in. To participate, you’ll need to upgrade to the latest version of the Tapstream SDK (found here) and opt in according to the docs here: https://tapstream.com/developer/ios/integration/#cookie-matching