Revenue attribution overview

At a glance: Use the revenue metric to calculate KPIs (like ROI and ARPU) and define audiences for retargeting and lookalike-based campaigns. 


Attributing revenue

This article discusses revenue at a high-level:

  • Discuss revenue sources
  • How revenue analysis can boost marketing efforts
  • Technical aspects of revenue attribution

Revenue streams

There are three main sources for generating revenue.

Purchases Subscriptions Ads


Your app can offer in-app purchases. In-app purchases are not limited to the actual products that you sell. They can also include selling tickets or booking flights and hotels.

Basically, any action that involves purchasing products or services is an in-app purchase. For more information about the attribution of in-app purchases, we recommend reviewing our guide on Rich In-App Events.

Revenue attribution

Revenue attribution establishes the connection between revenue and other factors in your marketing operation. Such factors can be:

  • Ad networks through which you run campaigns
  • Campaigns that you run
  • Ad sets in campaigns
  • User attributes such as GEO location and type of device
  • Retargeting campaigns

Let's look at some examples.

Ad networks


You run campaigns with the help of ad networks and some networks generate installs. As time goes by, some users purchase products and services using your app. When they do so, and you measure the revenue from these purchases, AppsFlyer knows which user comes from which network and attributes revenue accordingly.

When you view your app's dashboard or when you generate raw data reports for in-app events, it's easy for you to see how much revenue is attributed to each network.


Following the same logic, AppsFlyer also knows which campaigns generate installs. When users purchase products or services using your app, AppsFlyer knows what campaigns to attribute revenue to. You can then see which campaigns are successful and which are not.

Visualizing revenue data

Data is displayed according to the date range filter.

There are several pages in the dashboard that offer revenue data visualization.


The overview page shows the following:

Revenue divided between organic and non-organic users reported via in-app events. This includes retargeting revenue that is double-attributed. 


Lifetime revenue per media source


Aggregated performance report

Revenue Per Event


ARPU - Average Revenue Per User


Cost - ROI


For more information, see our guide on the Dashboard Overview Page

Activity page

The activity page contains an Activity Summary table where you can see Activity Revenue and ARPDAU (active revenue per daily active user) per media source.


For more information, see our guide on the Activity Report Page

Events page

The events page shows the Events Drill Down table. You can see the accumulated revenue for each event per media source. You can also group by Event.


For more information, see our guide on the Events Report Page

Monetizing parameters

af_revenue is the only parameter that accumulates your users' revenue. Always use it with in-app events that represent actual revenue generation in your business logic.

The range of this value should be $-10,000 to $+10,000 or the equivalent original currency amount. Values outside of this range are included in raw data reports but not in aggregate reports. 

af_revenue can also bear negative revenue values if you need to record events such as canceled transactions or refunds.


AppsFlyer displays the exact revenue as sent from the SDK. It does not include any calculations for VAT or app store commissions, etc., unless these were included by the developer on the SDK side prior to it being sent to AppsFlyer.

af_currency represents the currency that is stated in af_revenue (or af_price). If af_currency is missing from the event's parameters AppsFlyer sends it with the default value "USD".

You can use af_price as a monetary parameter that is not counted as revenue (such as in an “Add to Cart” event). This parameter refers to the individual item price. The total amount of all purchases appears under the af_revenue parameter.

Technical aspects

Revenue recording and attribution in AppsFlyer bear some technical aspects.

Recording revenue data with AppsFlyer

Whenever you send in-app events such as a purchase or flight booking, you send it with its associated revenue. The sole parameter that carries revenue in in-app events is af_revenue

Recording negative revenue

You can also record negative revenue in case a user cancels a purchase or if you issue a refund. To record negative revenue, all you have to do is append the minus sign (-) to the revenue value that you pass to af_revenue


Do not format the revenue value in any way. It should not contain comma separators, currency, special characters, or text. A revenue value should be similar to 1234.56, for example. AppsFlyer provides revenue value with precision of up to five decimal places.

Sharing revenue data with ad networks

You can share revenue data with ad networks. To do so, you need to share revenue from in-app events with the ad network. You can also grant the ad network permission to configure revenue sharing by themselves.


Make sure to enable revenue sharing only for events that have af_revenue defined in their event value. Otherwise, ad networks get events with empty revenue value.

To enable revenue sharing:

  1. Choose the Integrated Partner
  2. In the Integration tab, scroll to In-App Events Postback

  3. After you map the in-app event, choose one of the options in the Send Revenue drop-down:
    • No values and no revenue
    • Values and no revenue
    • Values and revenue

It is recommended to share revenue if you want ad networks to optimize your campaigns and improve campaign results. However, sharing revenue is not mandatory.


Postback structure:

This is how the parameters are sent in case of each data sending option:

  • Values & revenue
  • Values & no revenue
  • No values & no revenue

Revenue currency

It's important to understand how AppsFlyer handles currency settings and currency conversion.

AppsFlyer handles the difference between app settings currency and in-app events currency using currency conversion.

The diagram above demonstrates the following process:

  1. In-app events are sent - different currency for each event
  2. AppsFlyer normalizes all currencies to USD
  3. AppsFlyer processes revenue data
  4. Revenue data in the dashboard is displayed in app settings currency
  5. AppsFlyer populates revenue data in raw data reports in both event and app settings currency

AppsFlyer uses Open Exchange Rates for currency conversion. The exchange rate is updated on an hourly basis. Whenever AppsFlyer performs currency conversion, it uses the exchange rate of the last hourly update.

Currency conversion


In your app settings, you set currency to GBP. A user from France purchases a product using your app. The price is quoted in EUR (€). The in-app event that you send to AppsFlyer looks like this:

Map<String, Object> eventValue = new HashMap<String, Object>();
AppsFlyerLib.getInstance().trackEvent(getApplicationContext() , AFInAppEventType.PURCHASE , eventValue);

In this case, AppsFlyer converts revenue from EUR to USD and then to GBP. Let's assume the exchange rate is €1 = $1.13. So €200 becomes $226.85. Next, AppsFlyer converts from USD to GBP. Let's assume the exchange rate is $1 = £0.78. So $226.85 becomes £176.92.

Currency display

Currency is set in the app settings. The currency that you set in the app settings, is the currency that appears in the dashboard. No matter what currency you send in-app events, the revenue in the dashboard always appears in the currency that you set in the app settings.


Let's say that you send in-app events with different currencies than the one set in the app settings, or with no currency at all. In this example, currency in the app settings is set to GBP.

You send three in-app events to AppsFlyer.

  1. Event A has revenue of 234 and GBP as currency
  2. Event B has revenue of 171 and EUR as currency
  3. Event C has revenue of 171 but no currency specified

Revenue data in the dashboard

The revenue that appears in the dashboard is the converted value from the in-app event currency to USD and then to the app settings currency.

If no currency is specified in the event, AppsFlyer defaults to USD. The dashboard displays the event and revenue as follows:

In-Apps Events Unique Users Number of Actions Revenue
A 1 1 £234
B 1 1 £149.4 - converted from EUR to USD and then to GBP.
C 1 1 £132.9 - defaults to USD as no currency is specified. Converted from USD to GBP directly.

Revenue data in raw data reports

If you set the currency to GBP in the app settings but send in-app events with different currencies, the raw data report shows revenue in both app settings currency and in-app event currency.

If you set the currency to GBP in the app settings but send in-app events without currency, the raw data report shows revenue in both app settings currency and in USD.

The in-app events raw data report displays the event and revenue as follows:

Event Event Revenue Event Revenue Currency Event Revenue GBP
A 234 GBP 234
B 171 EUR 149.4 - converted from EUR to USD and then to GBP.
C 171 USD 132.9 defaults to USD as no currency is specified. Converted from USD to GBP directly.
Was this article helpful?