Before you begin
To integrate with the advertiser on AppsFlyer, sign up as an Ad Integrated partner.
If you currently have an integration with AppsFlyer, contact their team at [email protected] .
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
On AppsFlyer, go to Configuration > Active Integrations > Attribution link.
Prepare an AppsFlyer tracking URL for the integration using the mandatory parameters.
Mandatory tracking link parameters:
clickid | {clickid} | A unique click identifier |
af_siteid | {pid} | A unique ID that identifies the publisher |
af_c_id | {offer_id} | The ID of the offer |
c | {offer_name} | The title of the offer |
⚠️ You don't need to fill in the pid=medianame_int, the AppsFlyer team does that.
The AppsFlyer tracking URL example:
http://app.appsflyer.com/com.appsflyer?pid=mediaName_int&clickid={clickid}&af_siteid={pid}&af_c_id={offer_id}&c={offer_name}
2. On Affise, insert the link into the Tracking URL field in Offers > a certain Offer > Tracking.
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:
Take your encryption key from AppsFlyer.
In the Affise Admin panel > Settings > Appsflyer, insert this encryption key into the Encryption key field.
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:
https://app.appsflyer.com/id554782625?&clickid={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.
On AppsFlyer, go to Profile > Postback management > Default postbacks.
Set up your postback in the Install postback URL and In-app event postback URL fields.
Add the required fields. You need to use Affise postback parameters and AppsFlyer macros.
Mandatory parameters and macros are:
pid | {af_siteid} | Publisher ID. Check both Install and In-app. |
offer_id | {af_c_id} | ID of the offer on Affise. Check both Install and In-app. |
clickid | {clickid} | Click ID. Check both Install and In-app. |
goal | {partner_event_id} | 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:
https://offers-rocketcompany.affise.com/postback?pid={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.
⚠️ 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:
In Offers > a certain offer > Payouts, add a new payout.
Set revenue and payouts as 0.
Add a new goal to this payout.
To decline conversions based on fraud postbacks, you need to set up a separate postback URL for fraud conversions:
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.
Add the status=3 parameter to the Affise postback URL to automatically decline fraud conversions.
Add the goal that you set for zero payouts.
Fraud install postback URL example:
http://offers.rocketcompany.affise.com/postback?clickid={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
Update an AppsFlyer tracking URL with the mandatory {pid} and {offer_id} macros.
Add more parameters and macros if necessary.
The AppsFlyer tracking URL example:
https://app.appsflyer.com/com.appsflyer?pid=mediaName_int&af_siteid={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:
https://app.appsflyer.com/com.appsflyer?pid=mediaName_int&af_siteid={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:
https://offers-rocketcompany.affise.com/probattribution?action_id={postback_id}&goal={partner_event_id}&offer_id={af_c_id}&pid={af_siteid}&country={country_code}×tamp={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].