Smart script for PC, console, and Steam

Smart Script can generate direct click URLs that redirect users to non-mobile stores, where they can download, install, or purchase PC, CTV, or console apps.

This is a different flow from the mobile setup in OneLink Smart Script V2. The mobile flow calls generateOneLinkURL and returns a OneLink URL that leads to the app store. The CTV, PC, and console flow described here calls generateDirectClickURL and returns a direct click URL that redirects straight to the platform-specific storefront you specify.

Prerequisites

  • The platform value for each storefront you're integrating (see the supported list below).
  • The app_id and redirectURL for each platform's storefront.

Implementation steps

Create a direct click URL

To create a direct click URL, follow these steps:

  1. Download the Smart Script.

  2. Get the arguments to call the script, mapping the incoming parameters to the marketer's parameters.

  3. Initialize the Smart Script arguments and configuration objects as in the following example:

    var mediaSource = { keys: ["my_media_source"], defaultValue: "my_default_media_source" };
    
    var campaign    = { keys: ["my_campaign"],     defaultValue: "my_default_campaign" };
  4. Generate the URLs by calling the script in your web or landing page HTML, using the following method:

     var result = window.AF_SMART_SCRIPT.generateDirectClickURL({
       afParameters: afParameters,
       platform: platform.platformName,
       app_id: platform.appid,
       redirectURL: platform.redirectURL,
     })
  5. Check the return value in result. Possible return values are:

    • An outgoing Direct URL (https://engagements.appsflyer.com). For additional Direct URL examples, see the demo page below. Use the result value as needed, for example, to place it as a link under a call to action (CTA) on your website.
    • A null value. If the script returns null, implement your error-handling flow. For example, when the existing URL of the web or landing page is not changed.

    For example:

     //In  itializing Smart Script arguments
     // If a media source key is NOT FOUND on the link and NO default value is found, the script will return a null string 
     var mediaSource = {keys: ["my_media_source"], defaultValue: "my_default_media_source"};
     var campaign = {keys: ["my_campaign"], defaultValue: "my_default_campaign"};
    
     //Calling the function after embedding the code will be through a global parameter on the window object called window.AF_SMART_SCRIPT
     //Onelink URL is generated
    
     var result = window.AF_SMART_SCRIPT.generateDirectClickURL({
       afParameters:{
         mediaSource: mediaSource,
         campaign: campaign
       },
       platform: 'steam',
       app_id: '123456',
       redirectURL:'https://store.steampowered.com/app/123456/Team_Fortress_2/'
     })
    
     var result_url = "No output from script"
     if (result) {
       result_url = result.clickURL;            
     }

    See example of the conversion of an incoming URL to an outgoing direct click URL for a Steam game.

📘

Note

In order to ensure incoming URL parameters will be mapped to the generated outgoing URL, it is recommended to import the Smart Script in every website page, whether an outgoing URL is generated in the page or not.

For more information and a full example, see here.

  1. Validate the generated URL using the Direct Click URL test page, editing the input URL and confirming the output resolves to the correct platform's storefront.

Enable deterministic PC attribution

Deterministic PC attribution lets you attribute installs and events on PC destinations by carrying AppsFlyer attribution parameters through the direct click URL beyond the final landing page. When a user clicks, the Engagements API logs the click, generates a referrer ID, and redirects (HTTP 302) to your redirectURL with the referrer ID appended as a query parameter.

To enable it:

  1. Add af_generate_referrer as a custom parameter inside afParameters.afCustom, with keys: [] so the value is always forced:
   var mediaSource = {keys: ["my_media_source"], defaultValue: "my_default_media_source"};
   var campaign = {keys: ["my_campaign"], defaultValue: "my_default_campaign"};

   var af_generate_referrer = {
     paramKey: "af_generate_referrer",
     keys: [],
     defaultValue: "true"
   };

   var result = window.AF_SMART_SCRIPT.generateDirectClickURL({
     afParameters: {
       mediaSource: mediaSource,
       campaign: campaign,
       afCustom: [af_generate_referrer]
     },
     platform: 'steam',
     app_id: '123456',
     redirectURL: 'https://store.steampowered.com/app/440/Team_Fortress_2/'
   });
  1. On the landing page (where redirectURL points), read the referrer ID from the URL's query parameters.
  2. In your download or packaging pipeline, attach the referrer ID to the game package before serving it.
  3. In the game's first-launch (first open) event, send the referrer ID back to AppsFlyer.
🚧

Required: set af_generate_referrer to true

af_generate_referrer must be set to true, and redirectURL must be provided, since the referrer ID is appended to that URL. Without both, the referrer ID isn't generated.

Create a QR code with the Smart Script result

The displayQrCode method works the same way for direct click URLs as it does for mobile OneLinks. For setup steps, see Create a QR code with the Smart Script result in the mobile article.

Fire an impression

fireImpressionsLink works the same way for direct click URLs as it does for mobile OneLinks. For setup steps and the cross-platform example, see Impressions, OneLink template with cross-platform support in the mobile article.

Arguments

Argument Remarks Example

afParameters

(required)

 

 

 


mediaSource

(required)

Configuration object for media source

  • Keys: ['incoming_mediasource’' 'utm_source']
  • Override values: {twitter: 'twitter_int', orig_src: 'new_src'}
  • Default value: ['any_source']

campaign

Configuration object for campaign

  • Keys: ['incoming_campaign', 'utm_campaign']
  • Override values: {campaign_name: 'new_campaign_name'}
  • Default value: ['any_campaign_name']

channel

Configuration object for channel

  • Keys: ['incoming_channel', 'utm_channel']
  • Override values: {video: 'new_video'}
  • Default value: ['any_video']

ad

Configuration object for ad

  • Keys: ['incoming_ad', 'utm_ad']
  • Override values: {ad_name: 'new_ad_name'}
  • Default value: ['any_ad_name']
adSet

Configuration object for adset

  • Keys: ['incoming_adset', 'utm_adset']
  • Override values: {'adset_name': 'new_adset_name'}
  • Default value: ['any_adset_name']
Other (custom) query parameters
  • List of any other parameters you want to be included in the outgoing OneLink URL for attribution or deep linking, along with their configuration objects.
  • The name of the custom parameter is listed by the developer as paramKey in the configuration object.
  • paramKey: 'deep_link_sub1'
  • Keys: ['page_id']
  • Override values: {page12: 'new_page12'}
  • Default value: 'page1'
platform A string describes the platform. MUST be from this list:
  • smartcast
  • tizen
  • roku
  • webos
  • vidaa
  • playstation
  • android
  • ios
  • steam
  • quest
  • battlenet
  • nativepc
  • epic
  • switch
"steam"
app_id The app or game's unique identifier on the platform's store (for example, a Steam App ID or console Title ID). Required for each platform you integrate. "123456"
redirectURL The full destination URL for the platform's storefront listing. Required for each platform you integrate. "https://store.steampowered.com/app/123456/Team_Fortress_2/"

UTM parameter mapping

If your PC or Steam campaigns use standard UTM parameters, Smart Script maps them to AppsFlyer dimensions as follows:

UTM parameterAppsFlyer dimensionConfiguration object
utm_sourceMedia sourcemediaSource
utm_campaignCampaigncampaign
utm_channelChannelchannel
utm_adAdad
utm_adsetAd setadSet

Game landing page demo

You can find here a fully functional demo landing page which demonstrates integrating the generateDirectClickURL Smart Script code.


Did this page help you?