Skip to main content

Deep Linking

Deep linking is a powerful technique that enhances user engagement and improves campaign performance. It allows advertisers to direct users straight to specific pages or content within an app.

How Deep Linking Works

Installed App

If a user has already installed the advertised app, the deep link URL will seamlessly navigate them to the desired in-app destination — such as:

  • A product page
  • A specific level in a game
  • A relevant content section

App Not Installed

If the user doesn't have the app installed, the deep link will utilize a fallback mechanism to guide them to the next best action defined by the advertiser — such as:

  • Redirecting to the App Store / Google Play Store
  • Opening an optimized mobile landing page

Identifying Eligible Supply

Impressions that support deep linking are flagged directly on imp.ext:

"imp": [
{
"ext": {
"deeplink": 1,
"fallback": 1
}
}
]
FieldTypeDescription
deeplinkinteger1 — the impression supports opening a deep link on click
fallbackinteger1 — the impression supports a fallback destination when the target app is missing

Both fields are always sent together with the value 1. They are never sent as 0 — their absence means the impression is not deep-link eligible.

An impression is flagged when both of the following are true:

  • it carries a banner (including MRAID) or video object — native-only impressions are not flagged;
  • the request comes from BidMachine SDK 3.2.0 or newer.

The flag applies to all delivery options described below.

note

These fields sit at the top level of imp.ext, alongside skadn, gpid and other impression extensions — they are not nested inside a deeplink object.

Delivery Options

Pass the deep link directly in the creative's click-through — the VAST ClickThrough and CompanionClickThrough elements for video, or the standard click URL for display / MRAID creatives.

No allowlisting, registration or other additional steps are required. Both of the following are supported:

  • Custom URI schemes — for example temu://, shein://, shopee://, aliexpress://, creditkarma://, walmart://, tiktok://, and any other application scheme.
  • HTTP(S)-based deep links — services such as AppsFlyer OneLink, URLGenius and comparable providers.

Use one of the options below instead if you need explicit control over the fallback destination or over primary / fallback tracking.

2. deeplinker:// scheme

Encode the deep link fields as query parameters of a deeplinker://navigate URL, and place that URL in the VAST ClickThrough and, if an end card is included, the CompanionClickThrough elements. Display / MRAID creatives use the same URL as their click-through.

deeplinker://navigate?
primaryUrl=customapp%3A%2F%2Flink&
primaryTrackingUrl=http%3A%2F%2Fpx.url.com%2FtrackPrimaryClicked&
fallbackUrl=http%3A%2F%2Fwww.url.com&
fallbackTrackingUrl=http%3A%2F%2Fpx.url.com%2FtrackFallbackClicked
Format

The protocol (deeplinker://) and host path (navigate) are mandatory, and all parameter values must be URL-encoded.

3. bid.ext fields

Pass the deep link as discrete fields on the bid extension, instead of encoding them into a URL:

"bid": [
{
"ext": {
"deeplink": "customapp://link",
"primary_tracking": "http://px.url.com/trackPrimaryClicked",
"fallback": "http://www.url.com",
"fallback_tracking": "http://px.url.com/trackFallbackClicked"
}
}
]
FieldRequiredDescription
deeplinkyesDeep link to another application potentially installed on the user device
primary_trackingnoUpon successful opening of the deep link, a GET request is sent to this URL
fallbacknoLink to a webpage if the desired app is not installed on the device
fallback_trackingnoUpon successful opening of the fallback URL, a GET request is sent to this URL

deeplink is mandatory — if it is absent, the remaining three fields are ignored and no deep link is applied to the bid.

URLs in bid.ext are passed as-is and must not be URL-encoded.

Same names, different meaning

deeplink and fallback appear on both sides of the transaction with different types:

  • on imp.ext (bid request) they are integer flags signalling eligibility;
  • on bid.ext (bid response) they are URL strings carrying the destinations.

deeplinker:// Query Parameters

Used by the deeplinker://navigate scheme described above:

ParameterDescription
primaryUrlDeep link to another application potentially installed on the user device
primaryTrackingUrlUpon successful opening of the primary URL, a GET request is sent to this URL
fallbackUrlLink to a webpage if the desired app is not installed on the device
fallbackTrackingUrlUpon successful opening of the fallback URL, a GET request is sent to this URL

:::