Bulletin: User-level Ad revenue integration with ironSource

  • What's changing: Granularity of ad revenue attribution data provided by ironSource to AppsFlyer by integration API 
  • Where is it changing: Aggregate LTV data
  • Publication date: December 10, 2019
  • Who is impacted: App owners who implement ironSource ad revenue mediation in AppsFlyer 

For more information about Ad revenue attribution

Before the change

ironSource reports ad revenue to AppsFlyer using aggregate granularity. This means that revenue is reported per day broken down by geo. Appsflyer derives the effective revenue per action (eRPA) by dividing the revenue with the number of instances of a trigger event. Using this the revenue is attributed to the UA source. This method is less precise than user-level granularity 

After the change 

The AppsFlyer integration with ironSource supports user-level granularity and aggregate granularity. App owners can choose either. 

User-level granularity; IronSource reports the revenue per day at the user level. This enables superior precision when attributing the ad revenue to the original UA source. App owners are now better able to assess user LTV and campaign ROI. 

Data freshness of user-level granularity is unchanged relative to aggregate granularity. Ad revenue is pulled the day following the revenue event after 1400 UTC and includes revenue accumulated during the previous day. The revenue is updated in the daily processing on the day it is pulled. This means for example, that for an ad viewed on Day 0, the data is received on Day 1 and is only be available in the Dashboard after Day 2's processing. Data is reported under Day 0.

What you need to do to prepare for the change

The best practice is to implement user-level granularity. Aggregate granularity remains unchanged.

Migrating from aggregate granularity to user-level granularity:

When you migrate from aggregate granularity to user-level granularity the following happens:

  • ironSource stops sending aggregate level date to AppsFlyer. This does not impact historical data already in AppsFlyer. It continues to be available unchanged.
  • User-level granularity does not need in-app events.  You can continue sending these events they don't impact the user-level granularity reporting in AppsFlyer.
  • AppsFlyer records the user-level ad revenue using the event af_ad_revenue


  • Does user-level granularity pull historical data? No.  We only pull yesterday's data. 
  • Does it matter when (time of day) I migrate from aggregate granularity to user-level granularity? No. We pull the data for ads viewed say on Friday, at 14:00 UTC on Saturday. We pull according to the granularity option that is in force at 14:00 UTC.    

Potential discrepancies:

  • Ad revenue data is pulled daily at 14:00 UTC from ironSource and contains yesterday's data. ironSource may continue to update the data after we pull it. This causes a discrepancy between the AppsFlyer and ironSource data.

Before you begin:

Disable ad revenue integration with AppsFlyer integrated partners that mediate through ironSource. 


If you do not disable the integrations ad revenue displays in duplicate in the Dashboard.

To migrate from aggregate granularity to user-level granularity:

  1. In AppsFlyer, go to Configuration > Integrated partners.
  2. Select ironSource.
  3. Go to the Ad Revenue tab.
  4. Select User Level integration.
  5. Complete the fields:
    • Refresh Token.
    • Secret key.
    • App ID.
  6. Click Save Ad Revenue
    User-level ad revenue collection is now active. 

4477_Favicon_for_the_KB-01.pngSee What's New in AppsFlyer.

Was this article helpful?



Please sign in to leave a comment.