Updated - Hotfix (September 20, 2021): Appsflyer Click Signing Compatability now available (Details)


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:

  1. Complete the AppsFlyer Partner Registration Information Form.

  2. Once you have submitted the registration form, send it to AppsFlyer. You'll receive an email from the AppsFlyer Partner Development Manager.

  3. Respond to this email with the name of the AppsFlyer client that you are onboarding.

  4. The AppsFlyer Partner Manager will then send you a follow-up email in a new thread where you will be asked to supply the following information:

    • Your company name

    • Transparent logo (PNG; ideally 200x50)

    • The recommended Everflow attribution URL template

    • Any additional values you want in the URL

    • Your Everflow Network ID (NID)

    • Postback domain for install and in-app event postbacks configurations

    *Please note: The pid value is automatically assigned and built into the URL once the integration is complete.

  5. If you have not heard from an AppsFlyer team member within 48 hours of filling out the registration form, please check your spam folder. Send an email to partners@appsflyer.com to check the status. 

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. 

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)


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)

  • Advanced Privacy setting is turned on in Appsflyer

Using Appsflyer's self serve Postback Management feature:

  1. You will need to enter the domain for your Advanced Privacy postback. To find it in Everflow, navigate to Offers > Manage > Click on the name of Offer > Conversion Method card.

  2. Under Custom Parameters, you will need to map your Everflow parameters with Appsflyer's macros.

  3. In Everflow, go to the Attribution card/tab of the offer and enable Server Side Clicks. Enter what you would normally use for the Base Destination URL and make sure it includes the Offer ID {offer_id} and Partner ID {affiliate_id}. The Advance Privacy Postback is clickless, which means it relies on these two data points to attribute the conversion correctly.

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

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 Compatability

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


NEED HELP? OUR CUSTOMER SUCCESS TEAM IS HERE FOR YOU!

We've assembled a superstar team of industry veterans that are available around the clock to make sure that your issues are resolved and questions are answered. You can reach out any time in-platform via Chat or by emailing support@everflow.io.

Did this answer your question?