Use best practices for mobile app inventory

This guide describes best practices for bidding on mobile app inventory, including high-engagement ads, app install ads, and re-engagement ads.

Bid on high-engagement ads

High-engagement ads (HEA) are a type of app interstitial ad inventory with increased visibility or user interaction requirements. For example, HEA inventory is suitable for placing a creative that includes a short playable demo of your advertised app before prompting the user to install the advertised app. If your pretargeting configuration lets your bidding endpoint receive bid requests for one or more supported formats, the inventory you receive in bid requests for those formats can be high-engagement ads. High-engagement ads are supported for app interstitial ads and app rewarded ads that use the VAST video creative format.

To learn more about rendering behavior for high-engagement ads, see About high-engagement ads.

Bid with VAST video creatives

Bid requests that you receive for high-engagement ad inventory for the VAST video format set the following fields:

Field Description
BidRequest.imp.ext.highengagement Set to true if your bidding endpoint has the bidProtocol field set to the OPENRTB_PROTOBUF enum value, or 1 if the bidProtocol field is set to the OPENRTB_JSON enum value.
BidRequest.imp.instl Set to true if your bidding endpoint has the bidProtocol field set to the OPENRTB_PROTOBUF enum value, or 1 if the bidProtocol field is set to the OPENRTB_JSON enum value.
BidRequest.imp.video.companionad Contains eligible sizes for the end card you can include with your video in the bid response.
BidRequest.imp.video.companiontype If your bidding endpoint has the bidProtocol field set to the OPENRTB_PROTOBUF enum value, this is set to the HTML or COMPANION_IFRAME enum value. If your bidding endpoint has the bidProtocol field set to the OPENRTB_JSON enum value, this is set to 2 or 3.
BidRequest.imp.video.maxduration Has a higher maximum duration than standard interstitial VAST video ads. You can place longer videos on high-engagement ad inventory.

Your bid response must include the following fields:

Field Description
BidResponse.seatbid.bid.crid You must set this to the creative ID of the video creative you want to place. The creative must be an approved video creative. Otherwise, your bid is ineligible to win the auction.
BidResponse.seatbid.bid.adm You must set this field to either the VAST XML or video URL linking to a VAST XML document for the video creative you want to place. If your video includes a companion ad, the companion ad specified in your video creative's VAST XML must be consistent with the BidRequest.imp.video.companionad and BidRequest.imp.video.companiontype fields from the bid request.
BidResponse.seatbid.bid.bundle You must set this field to the ID of the advertised app on the corresponding app store.
  • For Android apps, this field is a package ID found in the Play Store URL. For example, if the Play Store URL is https://play.google.com/store/apps/details?id=com.example.myawesomeapp, the package ID is com.example.myawesomeapp.
  • For iOS apps, this field is a numeric string ID for the app found in the Apple App Store URL. For example, if the Apple App Store URL is https://apps.apple.com/app/id123456789, the numeric string ID is 123456789.

Your video can optionally have an end card containing an HTML snippet that displays after the video ends. Google also displays a generated end card that is based on the app specified in the BidResponse.seatbid.bid.bundle field.

You can include end cards in your video creative by including Companion nodes in your video's VAST XML. If you want to display an end card, your bid must include a video with a companion ad matching one or more types specified in the BidRequest.imp.video.companiontype field. For additional information about end cards, see Render an end card for a mobile video ad.

Drive installs with app install ads

App install ads encourage users of a publisher's mobile app to download and install an advertised app. App install ads are supported for all app interstitial ad inventory in the following creative formats:

Identify BidRequest signals

You can bid with app install ads in response to bid requests for Android and iOS mobile app interstitial inventory. The following fields are always set for mobile app interstitial inventory:

Field Description
BidRequest.app.bundle An identifier for the publisher app. Set to a package name as seen in the Google Play store, such as com.google.android.youtube for Android apps. Set to a numeric ID as seen in the Apple App Store for iOS apps.
BidRequest.imp.instl Set to true if your bidding endpoint has the bidProtocol field set to the OPENRTB_PROTOBUF enum value, or 1 if the bidProtocol field is set to the OPENRTB_JSON enum value.
BidRequest.device.devicetype Set to the HIGHEND_PHONE or TABLET enum value if your bidding endpoint has the bidProtocol field set to the OPENRTB_PROTOBUF enum value. Set to 4 or 5 if your endpoint has the bidProtocol field set to the OPENRTB_JSON enum value.

Populate BidResponse fields

You can bid with app install ads for mobile inventory of any interstitial format that accepts the supported creative formats. Your bid response must set the following fields in order to successfully bid with an app install ad:

Field Description
BidResponse.seatbid.bid.bundle You must set this field to the ID of the advertised app on the corresponding app store.
  • For Android apps, this field is a package ID found in the Play Store URL. For example, if the Play Store URL is https://play.google.com/store/apps/details?id=com.example.myawesomeapp, the package ID is com.example.myawesomeapp.
  • For iOS apps, this field is a numeric string ID for the app found in the Apple App Store URL. For example, if the Apple App Store is https://apps.apple.com/app/id123456789, the numeric string ID is 123456789.
BidResponse.seatbid.bid.ext.clickurl

You must set this field to the URL of the final destination, excluding any intermediate calls to an ad server that are unrelated to the final landing page. You must set this field to a value that is consistent with the value you provide in the BidResponse.seatbid.bid.bundle field. For example, for an Android app found in the Play Store, this might be set to https://play.google.com/store/apps/details?id=com.example.myawesomeapp&referrer=utm_source%3Dgoogle_ab%26utm_medium%3Dcpc%26utm_campaign%3Dinstall_campaign_1.

BidResponse.seatbid.bid.ext.app_promotion_type You must set this field to the INSTALLS enum value if your bidding endpoint has the bidProtocol field set to the OPENRTB_PROTOBUF enum value, or 1 if the bidProtocol field is set to the OPENRTB_JSON enum value. This field indicates that you want the specified creative rendered as an app install ad.

Use consistent clickthrough URLs

The clickthrough URL you specify in the BidResponse.seatbid.bid.ext.clickurl field must be identical to the landing page URL that is specified in your creative. For examples of creatives in supported formats that are consistent with the clickurl field, see Use consistent clickthrough URLs.

Re-engage users with re-engagement ads

Re-engagement ads target a user of a publisher's mobile app who has already downloaded and installed the advertised app, and direct the user to a specific location in the advertised app using a deep link. To learn more about deep links, see the following articles:

Re-engagement ads are supported for all app interstitial ad inventory in the following creative formats:

Identify BidRequest signals

You can bid with re-engagement ads in response to bid requests for mobile app interstitial inventory. The following fields are always set for mobile app interstitial inventory:

Field Description
BidRequest.app.bundle An identifier for the publisher app. Set to a package name as seen in the Google Play store, such as com.google.android.youtube for Android apps. Set to a numeric ID as seen in the Apple App Store for iOS apps.
BidRequest.imp.instl Set to true if your bidding endpoint has the bidProtocol field set to the OPENRTB_PROTOBUF enum value, or 1 if the bidProtocol field is set to the OPENRTB_JSON enum value.
BidRequest.device.devicetype Set to the HIGHEND_PHONE or TABLET enum value if your bidding endpoint has the bidProtocol field set to the OPENRTB_PROTOBUF enum value. Set to 4 or 5 if your endpoint has the bidProtocol field set to the OPENRTB_JSON enum value.

Populate BidResponse fields

You can bid with re-engagement ads for mobile inventory of any interstitial format that accepts the supported creative formats. Your bid response must set the following fields to successfully bid with a re-engagement ad:

Field Description
BidResponse.seatbid.bid.bundle You must set this field to the ID of the advertised app on its corresponding app store.
  • For Android apps, this is a package ID found in the Play Store URL. For example, if the Play Store URL is https://play.google.com/store/apps/details?id=com.google.android.youtube, the package ID is com.google.android.youtube.
  • For iOS apps, this is a numeric string ID for the app found in the Apple App Store URL. For example, if the Apple App Store URL is https://apps.apple.com/us/app/id123456789, the numeric string ID is 123456789.
BidResponse.seatbid.bid.ext.clickurl You must set this field to a URL deep link that opens specific content in the advertised app. Google recommends that you use Universal Links for iOS and Android App Links for Android. Custom URL schemes aren't supported. For example, if you place a re-engagement ad for the YouTube app, you could link to a specific video by setting the clickurl field to a value such as https://www.youtube.com/watch?v=a1b2c3d4e5f.
BidResponse.seatbid.bid.ext.app_promotion_type You must set this field to the ENGAGEMENT enum value if your bidding endpoint has the bidProtocol field set to the OPENRTB_PROTOBUF enum value, or 2 if the bidProtocol field is set to the OPENRTB_JSON enum value. These values indicate that you want the specified creative rendered as a re-engagement ad.
BidResponse.seatbid.bid.ext.engagementclickfailureurl You can optionally set this field to a URL that receives a ping when Google Mobile Ads SDK fails to open the app through your specified clickthrough URL. Google Mobile Ads SDK can fail to open the app when the app isn't installed or the specified clickthrough URL isn't a valid deep link.