How to Build a Deep Linked Universal App Campaign

UPDATE:  As of 2018, this solution for deep linking from Universal App Campaigns is no longer available. You can read one of our newer posts on how deep linking technology influences cross-platform user acquisition.


What do Facebook, Google, and Twitter all have in common? In the never ending struggle to allocate ad budgets for mobile app growth, these three channels represent the majority of the debate.  

Fortunately, Google reduced the complexity of mobile install campaigns with Universal App Campaigns on Android. These campaigns combine Search, Display, and YouTube install campaigns into one universal campaign, found only on Android. With Universal App Campaigns, just three data points are required to get up and running. You’ll get access to Google’s high quality inventory across Search, ads on the Play Store, YouTube, and the Display network. All while Google optimizes your targeting for you in under 15 minutes.

Universal App Campaigns and Branch

So, the question then becomes: how does Branch allow you to integrate and run deep linked Universal App Campaigns when those campaigns won’t accept a tracking link? Not only that, how can Branch match a click to an install and deliver deep link data with no click on a Branch link? Imagine you’re a leading eCommerce retailer and want to run install ads promoting 20% off. With Branch and Universal App Campaigns, you can get the farthest reach, a better user experience for your users, higher engagement, and automated campaign optimization; follow along to see how Branch powers it all and integrates with Universal App Campaigns.

Deep Linking Without a Link Click

First, it’s important to understand how Branch can deep link a user without ever clicking a Branch link. You only have one shot to deep link a user–the first time they open the application. Luckily, Branch’s SDK initializes right at the moment a user opens your app. From there, our server processes this request and determines if it’s a new install. If you’ve entered your Google Conversion ID and Label, we’ll ask Google’s servers if an install came from your Universal App Campaign from the device that opened the app. If Google confirms this, they’ll give us the postback URL, which we then parse. Once we parse the postback URL, we’ll see that it contains a Branch link ID, which we then convert into deep link data defined by you. After this crazy flow, we package up the deep link data tied to that link ID, and return it back down to the app. At this point (under 500 milliseconds, usually), the deep link data is returned to the SDK, and you can deep link your users.

The key portion to all of this is the postback URL you enter into Google’s dashboard when running this campaign. We ask that you append your Branch link ID (the one that contains deep link data you want to deliver through install) to the end of the postback URL:

https://branch.io?adid={adid}&lat={lat}&click_url={click_url}&link_identifier=link-216324485161234567

In that flow above, Google “confirms” an install came from a Universal App Campaign by issuing a 302 redirect to that postback URL. Remember, since we sent a request to Google from our server, their response is a 302 redirect, which means they responded to our request by providing the postback URL.

At this point in time, we still have to return deep link data back to the SDK. The last piece is to read through that postback URL, and grab the value for the key “link_identifier”. As you can see, the value ties to a Branch link ID, which our server turns into deep link data (all Branch links have unique IDs). Once we’ve converted the ID to deep link data, we return it back to the user who just tapped ‘open’ after downloading from your Universal App Campaign.

And there you have it. You can track your users on UACs, deep link them, and optimize your installs just by setting a few things up and letting Branch and Google take care of the rest.