Affise <-> AppsFlyer Integration

Time to read: 5 min.

topic.pngThe article covers the following topics:

To be integrated with the advertiser on Appsflyer, please sign as an Ad Integrated partner via this link:

If you currently have an integration with AppsFlyer contact their team at

To start the integration, you must send AppsFlyer both the Basic Tracking URL and the Postback URL for reporting purposes.

Basic AppsFlyer Tracking URL 

Basic AppsFlyer Tracking URL should look like:{clickid}&af_siteid={pid}&af_c_id={offer_id}

import.png No need to fill in the pid=medianame_int, that would be substituted directly by Appsflyer team.

Obligatory Tracking Link Parameters:



Request ID of each user session



ID of the Affiliate promoting the offer



ID of the offer

click__1_.pngFor more parameters to pass to the Appsflyer, please check the link.

Encryption Key 

If there is a necessity to pass the revenue indicated in Payouts in the offer to the advertiser, who uses Appsflyer, and you don’t want to reveal the actual cost value in the Appsflyer tracking URL, you can encrypt the revenue (“cost” in Appsflyer) value. In order to get in correctly you need to receive a special key from your advertiser. 

All Payouts existent in the offer are counted for this macro (both general ones and personal ones).

import.pngOnly Affise clients that perform the cost encryption integration with AppsFlyer can actually send encrypted cost data with their attribution links. These networks have the label of "encrypted click" in the following list of cost supporting ad networks.

Put Encryption key in 'Settings' section -> 'Appsflyer' -> 'Encrypted key':


Then you will be able to use special {max_income} macro, that can be attached to the Appsflyer parameter &af_cost_value= in the Tracking URL in the offer:


This marco is unavailable for using unless you have put the encryption key.

As a result the link looks like that:{clickid}&af_siteid={pid}&af_c_id={offer_id}&af_cost_model=CPI&af_cost_value={max_income}&af_cost_currency=USD

click__1_.pngMore information about Encrypted cost is here: Guide on Appsflyer's side

Global Install Postback

Global install Postback URL for iOS example:{clickid}&action_id={eventtime}&custom_field1={idfa}

 Global install Postback URL for Android example:{clickid}&action_id={eventtime}&custom_field2={android_id}

In-App Event Postback

First, you need to receive the In-App event postback is to set up goals in the 'Offer edit' page. Go to the 'Offers' section - > 'Offer edit' page - > 'Payouts' tab:


click__1_.pngFind out more about how to set up a goal here.

In-App event Postback URL for iOS example:{clickid}&action_id={eventtime}&custom_field1={idfa}&goal={event-name}

In-App event Postback URL for Android example:{clickid}&action_id={eventtime}&custom_field2={android_id}&goal={event-name}

Where &goal={event-name} is the goal you need to create in the Affise system and put it into the goal value cell.

import.png Goal value '1' in the Affise system always refers to the install event. If the goal is not specified in the Postback URL, the conversion will have goal value ‘1’ by default.

Goal Value would refer to the Appsflyer Event Identifier:


Probabilistic Attribution

By the policy conducted by Apple Inc. in 2021, it is prohibited for attribution platforms (including Appsflyer) to store information, which could help to identify the end-user. As a result it becomes impossible to pass to the advertiser this information (in particular click ID, IP, User Agent) and as a result to get it back. The ordinary process of S2S conversions tracking in Affise has always envisaged the receiving of click ID via the postback link. That’s why Affise offers a new system of conversions tracking, which is called Probabilistic Attribution.

The whole process of Probabilistic Attribution including peculiarities can be found here.

How it works on clicks level

 Your advertiser should give you a link, which is to be put in the ‘Tracking URL’ field in the offer:


You should not pass {clickid} to the Advertiser, who uses Appsflyer.

Instead there are two other mandatory macros: {pid} & {offer_id}.

How it works on conversions level

Firstly you need to get a postback link.

The sample of the postback link for Appsflyer:{postback_id}&goal={event_name}&offer_id={af_c_id}&pid={af_siteid}&country={country_code}&timestamp={attributed_touch_hour}&sub2={af_sub_siteid}&action_timestamp={event_hour}&platform={platform}

There are only 2 mandatory parameters for the Affise postback link for Probabilistic Attribution:


Offer ID


Affiliate ID

Other parameters for Appsflyer are:

action_id Unique postback ID
goal Goal number or goal value
country Country where the conversion was made. Use Alpha-2 ISO codes (FR, RU, DE, etc.)
timestamp Time of click creation. Rounded down to the nearest hour on Appsflyer's side.
Time of conversion creation. Rounded down to the nearest hour on Appsflyer's side.
sub2 Sub2 value, which helps to select a right payout in the offer
platform OS of the end user, who created the conversion. Use these values: ios/android. 

Conversions status:

1 - Approved

2 - Pending

3 - Declined

5 - Hold


Conversion revenue 

comment Comment
custom_field1 - custom_field7 Additional information about conversions


If you want to use either Click session lifespan or Minimal click session lifespan options, you need to use both parameters:

  • &timestamp= - Time of click creation in YYYY-MM-DD HH:SS format. 
  • &action_timestamp= - Time of conversion creation in YYYY-MM-DD HH:SS format. 

Both values are rounded down to the nearest hour on Appsflyer's side. It means there could be the following situation: click created at 14:00 and conversion created at 14.00, however the actual time is 14:15 and 14:55. 

Appsflyer sends postbacks in "near real-time" time frame, which means there is a delay for up to 24 hours. An example: a conversion was made at 14:30, but the postback was sent at 19.45. Time of sending is determined randomly - with similar success the conversion could be sent at 14:35 or at 22:12. It causes several limitations:

  • No opportunity to use Time to action (CTIT) report in Affise.
  • No opportunity to use CR/Click/KPI Automation with a period less than 24 hours. 

article.pngYou may also find the following articles helpful:

 If you have more questions on the Integration with AppsFlyer, feel free to contact the AppsFlyer Support Team via the AppsFlyer Help Center.

Written by Anastasia Dziaruhina 

Was this article helpful?
6 out of 10 found this helpful
Have more questions? Submit a request


Please sign in to leave a comment.