Implement deep links in mobile app ads

Authorized Buyers allows advertisers to direct users to an application (app), rather than a mobile web page, for users who click on their mobile ad. With deep links and an app configured to handle an approved Uniform Resource Identifier (URI), advertisers can direct users to an app store to download an app, or to a specific section of an installed app.

Authorized Buyers currently supports deep links by default. However, some iOS and Android apps are excluded.

Learn more about why an app might be excluded

Apps need to be configured to properly handle a deep link URI. Here are some reasons why an app might be excluded from deep link support:

  • Device-level intent that allows access to device capabilities (for example, tel:// file://)
  • Common errors with intents (for example, htttttp://)
  • Apps that provide non-moderated access to the public internet (for example, Chrome)

You can contact your account team for more information or for troubleshooting deep link configuration.

Link to an app from your mobile creative

Before you create links, ensure that the app supports deep links and that you have the correct URI to take users to their app.

  1. Use Firebase to add deep links to your app content. You can use the full URI path to deep-link to specific areas of the app, as opposed to just launching the app.
  2. Declare the landing page of your mobile creative as the URI in the click_through_url field in your bid response.

    To avoid potential creative disapproval issues, you should also declare the URI and/or URL that will be used in case the user does not have the advertiser's app installed on their device.

    Example

    If the advertiser is YouTube and you want to send the user to the YouTube app, declare these URIs:

    • App: youtube://
    • App download: market://details?id=com.google.android.youtube (Android) or itms://youtube/id544007664 (iOS)
    • URL: https://play.google.com/store/apps/details?id=com.google.android.youtube (Android) or https://itunes.apple.com/us/app/youtube/id544007664?mt=8 (iOS)

If the declared URI is taking the user to the app download page in either the Google Play Store or iTunes App Store, the full URI path must be declared. If only the root is declared (for example, market:// or itms://), the bid will be filtered out of the auction.

Best practices for deep links

Devices running iOS9+

Bidders should work with their app advertisers to recommend implementing universal links. If enabled, bidder can return a single URL that will deep link to the app if the app is installed, and otherwise fallback to the mobile web page.

Example

https://goo.gl/maps/16rkM3Dz8c12

Devices running Android M+

Bidders should work with their app advertisers to recommend declaring website associations.

This will have a similar result as universal links. If enabled in the app, bidders can set the click-through to deep-link to the app. It will then fallback to the mobile webpage automatically.

Read Android's developer documentation: verify Android app links

Devices running earlier operating systems and/or if universal links are not enabled

Bidders can use JavaScript in their creative to open a browser that attempts to deep-link to an app. In the JavaScript, bidders can build a timeout such that if the app does not respond, a click should bring the user to a mobile webpage.

For example:

<script type="text/javascript">
   window.onload = function() {
      // Deep link to your app goes here
      document.getElementById("l").src = "my_app://";
      setTimeout(function() {
         // Link to the App Store should go here -- only fires if deep link fails
         window.location = "https://itunes.apple.com/us/app/my.app/id123456789?ls=1&mt=8";
      }, 500);
   };
</script>

If all else fails, bidders can deep link directly to the app

If the app is installed, the user will be taken to the app via the deep link. If and only if the app is not installed, the click will not go anywhere. Therefore, bidders should only create deep links for users that they know have previously installed the app, based on data from their analytics SDK(s).

The OS version of the device can be determined in the bid request using this mapping.

// The platform of the device. Examples: Android, iPhone
optional string platform = 2;

// The brand of the device, such as Nokia, Samsung
optional string brand = 3 [default = ""];

// The model of the device, such as N70, Galaxy
optional string model = 4 [default = ""];

// Contains the OS version of the platform. For instance, for Android 2,
// major=2, minor=0. For iPhone 3.3.1, major=3 and minor=3
message OsVersion {
   optional int32 major = 1;
   optional int32 minor = 2;
   optional int32 micro = 3;
}

// The OS version; e.g., 2 for Android 2.1, or 3.3 for iOS 3.3.1
optional OsVersion os_version = 5;

Frequently asked questions

Do deep links work with any app?

Apps need to be configured to properly handle a deep link URI. Once an app is set up to allow for deep link, you may begin using the URI, following the declaration instructions above.

Learn how to add deep link to your app.

Is the URI the same for both Android and iOS versions of apps?

The format of the URI used to trigger or deep link an app is often different, depending on the mobile operating system.

Ensure that you are using the proper format for Android if the ad serves on an Android device. For example, Android: //launch?location=123456 versus iOS: //location/123456.

Does Authorized Buyers tell me in the bid request if the user has already installed an app?

Bid requests do not include information about installed apps. Linking to an app in an app store should work automatically.

However, when you deep link to specific locations in apps, you are responsible for bidding when you (1) know the user has the app installed or (2) have implemented back-up logic.

Was this helpful?

How can we improve it?

Need more help?

Try these next steps:

Search
Clear search
Close search
Google apps
Main menu
6360738325681912047
true
Search Help Center
true
true
true
true
true
71030
false
false