Affise <-> AppsFlyer
Natalya Yefimenko avatar
Written by Natalya Yefimenko
Updated over a week ago

AppsFlyer Logo PNG Vector (SVG) Free Download

Before you begin

General integration

To start the integration, you need to send AppsFlyer both the tracking URL and the postback URL for reporting purposes.

AppsFlyer tracking URL

  1. On AppsFlyer, go to Configuration > Active Integrations > Attribution link.

  2. Prepare an AppsFlyer tracking URL for the integration using the mandatory parameters.

    Mandatory tracking link parameters:



A unique click identifier



A unique ID that identifies the publisher



The ID of the offer



The title of the offer

⚠️ You don't need to fill in the pid=medianame_int, the AppsFlyer team does that.

AppsFlyer 2023-07-12 at 1.55.58 PM
Configuration page for affisereaox_int 2023-07-07 at 3.57.38 PM

The AppsFlyer tracking URL example:{clickid}&af_siteid={pid}&af_c_id={offer_id}&c={offer_name}

🔎 Find more AppsFlyer parameters here and Affise macros here.

2. On Affise, insert the link into the Tracking URL field in Offers > a certain Offer > Tracking.

Edit offer _ Kofluence - Google Chrome 2022-10-06 at 11.34.25 AM

Encrypted key

There can be cases when you need to pass the revenue to your advertiser in an AppsFlyer tracking URL. You indicate this revenue in Offers > a certain offer > Payouts.

If you don't want to reveal the actual cost value, you can encrypt it in an AppsFlyer tracking URL using the af_cost_value={max_income}.

🔎 The Affise system counts all payouts in the offer: both general and personal.

To make the parameter available, do the following:

  1. Take your encryption key from AppsFlyer.

  2. In the Affise Admin panel > Settings > Appsflyer, insert this encryption key into the Encryption key field.

Appsflyer integration settings _ Kofluence - Google Chrome 2022-10-06 at 11.13.51 AM

Once you perform the cost encryption integration with AppsFlyer, you get to the list of cost-supporting ad networks.

When the cost integration is ready, update your AppsFlyer tracking URL with af_cost_value={max_income} and use it in your Affise offer.

The URL looks like this:{clickid}&af_siteid={pid}&af_c_id={offer_id}&af_cost_model=CPI&af_cost_value={max_income}&af_cost_currency=USD

🔎 Read more about the encrypted cost here.

Affise postback URL

To receive conversions on Affise, you need to get a postback link on Affise and set it up on AppsFlyer.

You can set up two types of Affise postback URLs based on your needs: global install postback and in-app event postback.

  1. On AppsFlyer, go to Profile > Postback management > Default postbacks.

  2. Set up your postback in the Install postback URL and In-app event postback URL fields.

    AppsFlyer 2023-07-11 at 8.24.37 PM

  3. Add the required fields. You need to use Affise postback parameters and AppsFlyer macros.​

    Mandatory parameters and macros are:



Publisher ID. Check both Install and In-app.



ID of the offer on Affise. Check both Install and In-app.



Click ID. Check both Install and In-app.



Affise goal value matched with AppsFlyer event name. Check In-app only.

4. Optional. Add custom fields if necessary to pass additional information.

An Affise postback link for AppsFlyer example:{af_siteid}&offer_id={af_c_id}&clickid={clickid}&goal={partner_event_id}&custom_field1={oaid}

5. Optional. If you work with iOS apps campaigns, it's necessary to do the same setup in Profile > Postback management > Advanced privacy. The only difference is that you don't need to use click ID and need more additional parameters for better click and conversion matching.

🔎 Read more about probabilistic attribution here.

In-app event postback

To receive in-app event postbacks, set up goals in Offers > a certain offer > Payouts.

Edit offer _ Kofluence - Google Chrome 2022-10-06 at 11.51.02 AM

⚠️ 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 has the goal value "1" by default.

The goal value refers to the AppsFlyer event value:


Fraud install postback

When you get postbacks from AppsFlyer, the Affise system doesn't automatically differentiate between real postbacks and fraud ones. As a result, you get all conversions registered as real ones and need to pay for them.

To solve the issue, you can set up zero payments and a separate postback to get fraud conversions declined.

To set up zero payouts, do the following:

  1. In Offers > a certain offer > Payouts, add a new payout.

  2. Set revenue and payouts as 0.

  3. Add a new goal to this payout.

    Edit offer _ Boomlet Media - Google Chrome 2022-10-11 at 4.58.25 PM

To decline conversions based on fraud postbacks, you need to set up a separate postback URL for fraud conversions:

  1. Add the comment parameter with the AppsFlyer macros {blocked-reason}, {blocked-reason-value}, {blocked-sub-reason} to define fraud data to the Affise postback URL.

  2. Add the status=3 parameter to the Affise postback URL to automatically decline fraud conversions.

  3. Add the goal that you set for zero payouts.

Fraud install postback URL example:{clickid}&custom_field1={af_siteid}&comment={blocked-reason}_{blocked-reason-value}_{blocked-sub-reason}_blockedbyAF&status=3&goal=4

Probabilistic attribution

When you work with probabilistic attribution, you can't pass the click ID value. The URLs for the integration require some other mandatory parameters and macros.

AppsFlyer probabilistic tracking URL

  1. Update an AppsFlyer tracking URL with the mandatory {pid} and {offer_id} macros.

  2. Add more parameters and macros if necessary.

The AppsFlyer tracking URL example:{pid}&af_c_id={offer_id}

User-Agent data for Chrome 110-based browsers

There is a peculiarity for setting up probabilistic attribution (both for clicks and impressions) for Android or desktop devices initiated from chromium-based browsers (Chrome, Edge, Opera, and more). Such traffic includes reduced user-agent header data. In this regard, you need to pass the information on OS version and device model together with user-agent data.

To pass the data correctly, besides the mandatory {pid} and {offer_id} macros for clicks, and {oid} and {aid} macros for impressions, use the following Affise macros:

  • {device_ua} to pass user-agent data.

  • {os_version} to pass OS version data.

  • {device_model} to pass device model data.

🔎 Find AppsFlyer parameters here.

The AppsFlyer tracking URL example:{pid}&af_c_id={offer_id}&af_ua={device_ua}&af_os_version={os_version}&af_model={device_model}

Affise probabilistic postback URL

The recommended sample of the probabilistic postback link for Appsflyer:{postback_id}&goal={partner_event_id}&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}

🔎 Find more parameters here.

If you want to use the Click&Impression session lifespan or Minimal click&Impression session lifespan options, add the timestamp and action_timestamp parameters to your postback link. More details are here.

⚠️ Appsflyer sends postbacks with a delay of up to 24 hours. For example, a conversion occurred at 14:30, but the postback came at 19.45. The time to send a postback is random.

This delay causes several limitations:

  • No opportunity to use Time to Action (CTIT) report on Affise.

  • No opportunity to use CR, Click, and KPI Automation within a period of less than 24 hours.

Please contact the Affise Customer Support team regarding all raised questions via the e-mail: [email protected].

Did this answer your question?