How to log revenue to Firebase, Appsflyer, Adjust

1. IronSource (LevelPlay)

Subscribe to events (used for all ad formats: banner, interstitial, rewarded)

IronSourceEvents.onImpressionDataReadyEvent += OnImpressionDataReadyEvent;

Log revenue when the event returns:

private static void OnImpressionDataReadyEvent(IronSourceImpressionData impressionData)
{
    if (impressionData?.revenue == null) return;
    
    Firebase.Analytics.Parameter[] adParameters = {
        new Firebase.Analytics.Parameter("ad_platform", "ironSource"),
        new Firebase.Analytics.Parameter("ad_source", impressionData.adNetwork),
        new Firebase.Analytics.Parameter("ad_unit_name", impressionData.instanceName),
        new Firebase.Analytics.Parameter("ad_format", impressionData.adUnit),
        new Firebase.Analytics.Parameter("currency","USD"),
        new Firebase.Analytics.Parameter("value", impressionData.revenue.Value)
    };
    FirebaseAnalytics.LogEvent("ad_impression", adParameters);
        
//If using AppsFlyer
    var dic = new Dictionary<string, string>
    {
        { "ad_unit_name", impressionData.instanceName },
        { "ad_format", impressionData.adUnit }
    };
    
    //For SDK 6.15.0 and above. Uses the ad revenue SDK API.
    var logRevenue = new AFAdRevenueData(impressionData.adNetwork, MediationNetwork.IronSource, "USD", impressionData.revenue.Value);
        AppsFlyer.logAdRevenue(logRevenue, dic);
    
    //For SDK 6.14.2 and below. Uses the ad revenue SDK connector.
    AppsFlyerAdRevenue.logAdRevenue(impressionData.adNetwork, AppsFlyerAdRevenueMediationNetworkType.AppsFlyerAdRevenueMediationNetworkTypeIronSource, 
        impressionData.revenue.Value, "USD", dic);
        
//If using Adjust (skip this part if using AppsFlyer)
    AdjustAdRevenue adjustAdRevenue = new AdjustAdRevenue(AdjustConfig.AdjustAdRevenueSourceIronSource);
    adjustAdRevenue.setRevenue(impressionData.revenue.Value, "USD");
    adjustAdRevenue.setAdRevenueNetwork(impressionData.adNetwork);
    adjustAdRevenue.setAdRevenueUnit(impressionData.adUnit);
    adjustAdRevenue.setAdRevenuePlacement(impressionData.placement);
    Adjust.trackAdRevenue(adjustAdRevenue);
}

2. Admob

All AdMob ad formats return a micro value, so before logging, you must multiply by 0.000001 to convert to the value calculated in USD. Below is an example of logging revenue for AdMob's Collapsible Banner format. Other formats are logged similarly:

3. Max

Listen for the OnAdRevenuePaidEvent for the formats being used (ignore the formats not in use):

Perform logging of revenue when the event returns. Note: the value of the returned revenue may be -1 in case of an error. Therefore, it is necessary to have a code snippet to check if revenue > 0 before logging.

Last updated