Ad Revenue Attribution FAQ and Troubleshooting

This article is about ad revenue attribution, also known as user-level ad revenue or ad revenue ROI. To learn about ad monetization analytics, see the Ad Monetization Analytics FAQ.

Ad revenue attribution links ad revenue to the campaign through which the user was converted. This gives you a complete view of your advertising ROI, with the campaign cost, in-app revenue, and ad revenue all in one row. This feature also allows you to send ad revenue back to your networks to run AdROAS campaigns.

Ad revenue attribution is usually based on user-level or impression-level ad revenue data reported by your mediation platform. Singular supports a variety of solutions for getting ad revenue attribution data.

Tip: What's the difference between ad revenue attribution and ad mon analytics?

  Ad Revenue Attribution (See FAQ)
Ad Monetization Analytics (See FAQ)

Adds ad revenue to your network and MMP reports to measure your complete marketing ROI.

Lets you to send ad revenue (via postbacks) back to media sources when connected to campaigns.

Analyzes the result of your ad monetization efforts, with metrics such as filled ad requests, bid requests/responses, and aggregated ad revenue.
Where to Find It
Setup See How do I set up ad revenue attribution? below See How do I set up ad monetization analytics?


What is ad revenue attribution?

Ad revenue attribution, also known as user-level ad revenue, ties ad revenue (usually on the user level or impression level) to the ad campaign through which the user was converted. 

Ad revenue attribution reveals your complete advertising ROI - with the campaign cost, in-app revenue, and ad revenue all in one row. 

How do I set up ad revenue attribution?

Singular is integrated with mediation platforms such as Unity LevelPlay, AppLovin, and AdMob for ad revenue attribution. Singular also supports other mediation platforms through our generic ad revenue SDK integration.

You can get ad revenue attribution data from your mediation platform by adding a code snippet to your Singular SDK integration. This also allows you to get ad revenue data for SKAdNetwork campaigns.

Getting user-level ad revenue from your mediation platform enables Singular to send attributed ad revenue back to media sources that can accept this data to run AdROAS campaigns.

See instructions and code snippets for:

You may be able to set up ad revenue attribution without using SDK code. Discuss your options with your Singular customer success manager.

  • API Integration: You can integrate with two of the mediation platforms (AppLovin MAX and Unity LevelPlay) through their APIs, without updating your Singular SDK integration. This method is not compatible with SKAdNetwork. See Instructions for AppLovin MAX and Instructions for Unity LevelPlay.
  • Soomla Integration: Singular supports a unique integration with Soomla, which is an ad revenue attribution platform. If you're working with Soomla and would like this setup, or are interested in hearing more, contact your Customer Success Manager.
  • Ad Revenue Attribution by Estimation: Singular can help you calculate the average revenue per event for the user events you set up when you integrated the Singular SDK. If you don’t have any monetization events set up, you can use “session” to calculate what is the value of each user based on their sessions. To set it up:
    1. First, make sure the user-level revenue feature is open to you. You can contact us to enable the feature.
    2. Decide which event you would like to use to calculate the ad revenue per user.
    3. In the Data Connectors page, add all the relevant monetization connectors (see Setting Up Ad Monetization Reporting for more information).
    4. After Singular pulls all the data successfully, view the data in your reports by selecting the metrics Ad Revenue and Ad ROI. 
How do I set up ad revenue attribution for SKAdNetwork campaigns?

To get ad revenue attribution information in SKAdNetwork reports:

  1. Add ad revenue attribution support to your Singular SDK integration, as described above.
  2. Configure a SKAN conversion model for your app that is an admon revenue model or combined revenue model (the combined revenue model tracks both ad revenue and in-app purchase revenue).
  3. Once users update the app to the new version, you will start seeing ad revenue information in your SKAdNetwork reports in Estimated Combined Revenue.
How do I set up multiple mediation platforms?

If you're using the SDK setup, add the different code snippets for each mediation platform. Singular will ingest data from all of them.

If you're using the User-level APIs, you need to let Singular know which apps are managed by which mediator.

I'm migrating an app from one mediator to another. What do I need to do?

If you're using the SDK setup, change the code snippets for the old mediator to the new mediator in the new app version. Singular will ingest data from both app versions.

If you're using the User-level APIs, contact Singular with your new app IDs from your mediation platform to avoid double counting your revenue.

Where can I see ad revenue attribution in Singular reports?

If you've set up ad revenue attribution, you can see the attributed ad revenue in your regular Singular reports:

  • In the Singular platform, go to Analytics > Reports or Analytics > Pivot. Run a report with the Ad Revenue metric selected (it's a cohort metric, so you also need to select a cohort period).
  • If you're using the Singular API, query the Create Async Report endpoint and include the ad_revenue metric.

Attributed ad revenue does not appear in the ad monetization analytics report (Analytics > Ad Monetization in the web app or Ad Monetization endpoint in the API). That report only shows aggregated ad revenue data.

Note: If you've also set up an admon revenue or combined revenue conversion model for SKAdNetwork, you'll see ad revenue in SKAdNetwork reports under the metrics Estimated Ad Revenue and Estimated Combined Revenue.

How can I tell where the ad revenue attribution data is coming from in each case?

If you've set up more than one method of getting ad revenue attribution data, you may want to know where different pieces of information were pulled from.

To find out, hover over the specific cell in the Ad Revenue column in the report. A tag will appear summing up the source:

  • "Rev Source": The ad revenue data in this row was pulled from an integration. Click on the tag to see the source.
  • "Mixed": Ad revenue was pulled from multiple sources for this row. Click on the tag to see the revenue breakdown by source.

    For example:


  • "Calculation": The data is interpolated based on your SDK events (see How do I set up ad revenue attribution? - Method (III)).
What is the Unattributed Ad Revenue checkbox?

Check this checkbox to see the discrepancy (if any) between your total attributed ad revenue and the aggregate ad revenue in your Ad Monetization Analytics reporting.

If the aggregate ad revenue (for your selected dimension breakdown) is larger than the attributed ad revenue, Singular adds a row for the difference in revenue, giving the source as "Unattributed Ad Revenue."


  • Unattributed Ad Revenue is calculated every time you run the report.
  • The available breakdowns for this calculation are App, OS, Platform, and Country. If you choose any other dimensions, such as Publisher, Unattributed Ad Revenue will be N/A.
  • To see this row, you have to run a report that includes Ad Revenue with cohort period = actual. Aggregated ad revenue has no cohorts, so we can't compare cohort data to it.
How can I see Unattributed Ad Revenue using the Singular API?

When you query the Create Async Report endpoint, set display_admon_alignment to true (default is false).

What is the difference between ad revenue attribution and ad monetization analytics?

See the comparison table.

How do I test my ad revenue attribution setup?

To verify your setup, regardless of the platform or method you are using:

  1. Start by going to Settings > Data Connectors to check the status of the data connector.
  2. Download a raw data file. The raw data file includes the exact data (the device IDs) pulled from the data connector for yesterday. See the Data Connectors FAQ for more information.
  3. You can compare the ad revenue attribution data with the aggregated data in the ad monetization analytics report. However, keep in mind that there could be several reasons for discrepancies. You can see discrepancies right on the Reports page if you check the Unattributed Ad Revenue checkbox.

    To compare ad revenue data:

    • Start by running a campaign performance report on the Reports page. Select the metric Ad Revenue with Cohort Period = Actual
    • Then run a report on the Ad Monetization page, making sure to select the same time frame and same filters.
Can I see the monetization breakdown or the ad unit breakdown?

Yes, but only in user-level data. If you'd like to see it in your ETL schema or BI postbacks and export logs, it must be configured in the code snippet in the SDK.

How often is my data updated?

Your data is updated based on the setup method you chose:

  • SDK Method: Data is updated hourly.
  • API Method: Data is available up to T-2 days, where T is the current date.
  • Estimation Method: Data is available up to T-2 days, where T is the current date.


What is Unattributed Ad Revenue?
Why do I have unattributed ad revenue?

There are several possible explanations for discrepancies between attributed ad revenue and aggregated ad revenue:

  • Data is not yet available: Ad revenue data is only available for two days ago (you can't see data for yesterday).

  • Issues with the Singular SDK integration: The SDK is Singular's source for user-level data, so problems with the SDK will cause issues in attributing ad revenue.

    To check if this is the case, see if the DAU metric (Daily Active Users) is also lower than expected. If so, retest your SDK integration. For assistance, contact Singular.

  • An app was only recently migrated from a different MMP to Singular: When you migrate an app, it takes time before Singular has data on all active users. Without user-level data, we cannot attribute revenue to those users. 

    To check if this is the case, look at when you added the Singular SDK to your app. You can also look at the DAU (daily active users) metric - is it also low? Is it increasing at the same daily rate as the ad revenue? If so, you just need to wait for a few days while Singular gets the necessary data.

  • Issues with ad monetization analytics sources: If any of your ad monetization data connectors are not pulling data properly, it could cause discrepancies with your ad revenue attribution. Go to the Data Connectors page and double-check that all your ad monetization data connectors are functioning properly (no error messages). 

I'm onboarding. Why do I see a discrepancy in my reported ad revenue data?

Singular only reports revenue for attributed users. There is no historical data for users prior to adding Singular as an MMP.

I've set up an SDK event with AdMob's PLTV client-side postbacks. Why don't I see any data?

You must turn on the setting for impression-level ad revenue in your AdMob account. Read the full instructions here.