All Collections
Integration Guides
MMP - Mobile Measurement Platforms
AppsFlyer MMP Integration Guide - Partner Account
AppsFlyer MMP Integration Guide - Partner Account

This guide will walk you through the step-by-step process for setting up your mobile tracking with AppsFlyer as a partner account

Genny avatar
Written by Genny
Updated over a week ago

Table of Contents


Introduction

This article is intended for Everflow clients that want to:

  • Work with AppsFlyer for the first time

  • Migrate an advertiser to AppsFlyer

AppsFlyer is a Mobile Measurement Partner (MMP). Apps use an MMP for their internal attribution data around installs and in-app events, which can then be passed to Everflow through Postbacks.


Integrating with AppsFlyer

To initiate a new integration:

Your Advertiser must follow the steps outlined in AppsFlyer's Helpdesk and invite you to integrate with AppsFlyer.

To update an existing integration:

If you need to make an update to an existing integration, then send an email request to integrations@appsflyer.com. Most requests are completed within 2 business days.

Creating your Offer's Base Destination URL using an AppsFlyer Attribution Link

You will need the AppID, your AppsFlyer PID, and the cost model (CPI / CPA / etc.) from the AppsFlyer attribution link. You can then modify the URL below with those parameters, replacing the [ ] sections, and you'll properly pass all of the required AppsFlyer parameters.

https://app.appsflyer.com/[APPSFLYER_APP_ID]?pid=[APPSFLYER_PUBLISHER_ID]&clickid={transaction_id}&af_siteid={affiliate_id}&af_sub_siteid={affiliate_source_id}&idfa={idfa}&sha1_idfa={idfa_sha1}&advertising_id={google_aid}&af_cost_value={amount}&af_cost_currency={offer_currency}&af_cost_model=[CPI]
  • AppsFlyer App ID:

    • Example (Android): com.greatapp

    • Example (iOS): id1297

  • AppsFlyer Publisher ID

    • Example: chartboost_int

  • For campaign cost models other than CPI, please update value paired with the &af_cost_model= parameter to the appropriate model.

    • Example: CPA or CPC

  • If you are an existing AppsFlyer partner and currently migrating to Everflow from a different platform, make sure to add &af_additional_postback=1 to your attribution links.

For the complete list of AppsFlyer parameters, click here.
For the complete list of Everflow macros, click here.


Integrating your Install and In-App Event Postbacks

See below for an explanation of how to format install and in-app event postbacks for the Everflow platform.

  • You must send AppsFlyer your custom Everflow domain in place of YOUR_DOMAIN in the below URL

  • NID is the Network ID provided by Everflow

Global Install Postback

https://www.YOUR_DOMAIN.com/?nid=[EVERFLOW_NETWORK_ID]&transaction_
id=$$click(clickid)


Setting up Events with AppsFlyer

To set up Events for an Offer in Everflow, please see this article - [Click Here]

If you're trying to troubleshoot an issue with receiving AppsFlyer events - [Click Here]

Global In-App Event Postback

https://www.YOUR_DOMAIN.com/?adv_event_id=$$sdk(mapped-iae)&nid=
[EVERFLOW_NETWORK_ID]&transaction_id=$$click(clickid)

adv_event_id: The unique ID generated by Everflow for each Advertiser Event.

In the Event Postback above, it will automatically return the Event Tag from the AppsFlyer dashboard under adv_event_id. The AppsFlyer events are the actual in-app event names from the app.

Advanced additions for AppsFlyer attribution links

  • &af_additionalpostback=1 Used when you want to place more than than one Postback URL in AppsFlyer and have all of them fired on every Transaction ID

  • &af_installpostback=false Used when you only want to receive Postbacks for the AppsFlyer Events, and not receive Postback from the install action

Useful things to add to your Everflow postback URLS placed on AppsFlyer

  • &fraud_flag={Rejected_Value} Whenever AppsFlyer considers a conversion fraudulent it will reject the conversion, and return &fraud_flag=1 or higher numbers. Everflow will automatically reject any received conversions with a fraud_flag of 1 or higher. Fraud_flag=0 means that the conversion wasn't rejected as fraudulent.

  • &fraud_reason={Rejected_Reason} This will display the reason that AppsFlyer rejected the conversion.

  • mapped-iae is the global event macro on AppsFlyer.


AppsFlyer Event Troubleshooting

There are four parts to confirming whether an AppsFlyer integration is setup correctly.

  1. Event Creation - Events can be created at the offer level within the Payout & Revenue tab or at the advertiser level within the Events tab of an Advertiser. Offer-level events are used in this example:

  2. Base Destination URL - Below is a breakdown of the most commonly used parameters within AppsFlyer links and their corresponding Everflow macros. The goalid parameters are required in order to track events.

    https://app.appsflyer.com/id1297?af_siteid={affiliate_id}&af_sub_siteid={sub2}&pid=everflow_int&clickid={transaction_id}

    For more Everflow macros - [Click Here]

  3. AppsFlyer's In-App Event Postback - If you do not have access to this screen, please confirm via screenshot how it's set up from your client. The Partner Event Identifier will correspond with the adv_event_id that is tied to the event inside Everflow. Please follow these steps to setup the advertiser events.

  4. Everflow's Postback - This is how you can setup a global postback within AppsFlyer. You will have to choose between always using advertiser level or offer level events, or have two global postbacks placed.

    • Advertiser Level Events

      https://www.everflowtest.com/?nid=215&transaction_id=$$click(clickid)&adv_event_id=$$sdk(mapped-iae)

      ***If you are using Offer level events instead of Advertiser Events replace adv_event_id with event_id.


Advanced Privacy

The Advanced Privacy postback mechanism described here works when all of the following are true:

  • The user device is running iOS 14.5+ (General Availability)

  • Apple has begun enforcing ATT (App Tracking Transparancy)

  • The advanced Privacy setting is turned on in AppsFlyer

In Everflow the following must be confirmed in order to track the Advance Privacy Postback:

  • "Enable Click To Conversion Time" is Disabled on the Attribution card of the Offer.

  • The Advance Privacy Postback is clickless, which means it relies on "affid" and "oid" to attribute the conversion correctly. These values must be in the Base Destination URL as well as the Advertiser Postback.

Using AppsFlyer's self serve Postback Management feature:

  1. You will need to enter the domain of your Advertiser Postback for your Advanced Privacy postback in the Appsflyer login.

  2. To find the domain in Everflow, navigate to Offers - Manage > Click on the name of Offer > Conversion Method card.

  3. Under Parameters in the Appsflyer login, you will need to map your Everflow parameters with AppsFlyer's macros.

  4. In Appsflyer, add the following Receiving Parameters and their corresponding values to the Custom Parameters section:

Receiving Parameter

Value

nid

XXX

af_media_type

*web or app

If no value is used for af_media_type, it will default to app. You can read more about this here.

For complete details, please review the following resources from AppsFlyer:


Sample Base Destination URL/Server Side Click

https://app.appsflyer.com/[APPSFLYER_APP_ID]?pid=[APPSFLYER_PUBLISHER_ID]&clickid={transaction_id}&af_siteid={affiliate_id}&af_sub_siteid={affiliate_source_id}&idfa={idfa}&sha1_idfa={idfa_sha1}&advertising_id={google_aid}&af_cost_value={amount}&af_cost_currency={offer_currency}&af_cost_model=[CPI}&af_c_id={offer_id}

Sample Postback Setups

Install

https://YOUR_DOMAIN.com/?nid=YOUR_NID&event_type=install&app_id=$$sdk(app-id-ios)&install_at=$$sdk(install-ts-hour-floor)&event_at=$$sdk(install-ts-hour-floor)&campaign=$$sdk(c)&country=$$sdk(country-code)&source=$$sdk(bundle-id)&revenue=$$sdk(orig-monetary)&currency=$$sdk(currency)&match_type=$$sdk(match-type)&af_ad=$$sdk(af_ad)&af_ad_id=$$sdk(af_ad_id)&af_ad_type=$$sdk(af_ad_type)&af_adset=$$sdk(af_adset)&af_adset_id=$$sdk(af_adset_id)&app_name=$$sdk(app-name)&attributed_touch_hour=$$sdk(click-ts-hour-floor)&attributed_touch_type=$$sdk(attributed-touch-type)&bundle_id=$$sdk(bundle-id)&af_channel=$$sdk(af_channel)&event_hour=$$sdk(install-ts-hour-floor)&install_hour=$$sdk(install-ts-hour-floor)&platform=$$sdk(platform)&postback_id=$$sdk(random-str)&af_sub_siteid=$$sdk(af_sub_siteid)&oid=$$sdk(af_c_id)&affid=$$sdk(af_siteid)

In-App Event


https://YOUR_DOMAIN.com/?nid=YOUR_NID&event_type=in-app&app_id=$$sdk(app-id-ios)&event_name=$$sdk(event-name)&event_revenue=$$sdk(orig-monetary)&event_revenue_currency=$$sdk(currency)&event_revenue_usd=$$sdk(monetary)&event_at=$$sdk(event-name)&campaign=$$sdk(c)&country=$$sdk(country-code)&source=$$sdk(bundle-id)&path=&revenue=$$sdk(orig-monetary)&currency=$$sdk(currency)&match_type=$$sdk(match-type)&af_ad=$$sdk(af_ad)&af_ad_id=$$sdk(af_ad_id)&af_ad_type=$$sdk(af_ad_type)&af_adset=$$sdk(af_adset)&af_adset_id=$$sdk(af_adset_id)&app_name=$$sdk(app-name)&attributed_touch_hour=$$sdk(click-ts-hour-floor)&attributed_touch_type=$$sdk(attributed-touch-type)&bundle_id=$$sdk(bundle-id)&af_channel=$$sdk(af_channel)&event_hour=$$sdk(timestamp-hour-floor)&event_name=$$sdk(event-name)&event_revenue=$$sdk(orig-monetary)&event_revenue_currency=$$sdk(currency)&event_revenue_usd=$$sdk(monetary)&install_hour=$$sdk(install-ts-hour-floor)&platform=$$sdk(platform)&postback_id=$$sdk(random-str)&af_sub_siteid=$$sdk(af_sub_siteid)&oid=$$sdk(af_c_id)&affid=$$sdk(af_siteid)&adv_event_id=$$sdk(mapped-iae)


AppsFlyer Click Signing Compatibility

Everflow supports the ability to send signed clicks back to AppsFlyer. Please reach out to Customer Success to have this feature enabled.


Did this answer your question?