> ## Documentation Index
> Fetch the complete documentation index at: https://help.airbridge.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Creating a Revenue Report

The Revenue Report analyzes the revenue your users generate. Based on the granularity you set, you can view revenue metrics for each interval, anchored to a specific event.

## Common Use Cases for the Revenue Report

* Compare revenue and ROAS by ad channel or campaign
* Track user revenue trends with ARPU (average revenue per user) and ARPPU (average revenue per paying user)
* Gauge ad efficiency with paying user rate (PUR)
* Estimate future revenue with predictive LTV (pLTV)

## Configure the Revenue Report

Configure the identifier, cohort, granularity, date range, Start Event, Revenue Event, metric, aggregation method, groupby, and filter to pull the data you want.

### Identifier

The **\[Identifier]** setting determines how a report counts users.

* **Device** counts users based on the [Airbridge Device ID](/en/guides/identifiers#airbridge-device-id). On Android, the Airbridge Device ID is the best available of GAID and App Set ID. On iOS, it is the best available of IDFA and IDFV. When none is available, the Airbridge SDK uses a randomly generated ID.
* **User** counts users based on the [Airbridge ID](/en/guides/identifiers#airbridge-id). The Airbridge ID is generated primarily from the user ID, or from the Airbridge Device ID when no user ID is available.

<Info>
  **Note**

  If no user ID is collected, selecting **User** returns the same result as selecting **Device**. Without a user ID, the Airbridge ID is generated from the same Airbridge Device ID that **Device** uses.
</Info>

<Note>
  **How to analyze app and web events together**

  Collect a user ID from both your app and web events, and set **\[Identifier]** to **User**. **Device** can’t match app and web events to a single user, because it identifies users by the Airbridge Device ID, which isn’t collected in web events. Even with **\[Identifier]** set to **User**, Airbridge can’t match app and web events to a single user unless a user ID is present in both.
</Note>

### Cohort

A cohort is the user group you want to analyze in the Revenue Report. Go to \[Cohort] and click 'Add' to set one up. Define cohort conditions based on which events users generated, how often, and which event types. Without a cohort, the report aggregates across all users.

### Granularity

Granularity is the time unit for aggregating revenue metrics. The Revenue Report splits your date range into intervals based on the granularity. Granularity follows your app's time zone.

| Granularity | Interval                          | Maximum ranges           |
| ----------- | --------------------------------- | ------------------------ |
| Daily       | 1 day (24 hours)                  | 181 (Day 0 to Day 180)   |
| Weekly      | 7 days from the start of the week | 53 (Week 0 to Week 52)   |
| Monthly     | 1 month                           | 37 (Month 0 to Month 36) |

The range duration and maximum number of view ranges differ by granularity, as shown in the following table. The top rows and sub-rows share the same maximum, but the top rows may display more ranges than the sub-rows depending on when you view the report, and some ranges may be shorter than the range duration.

### Date range

The date range is the time span covered by the Revenue Report. The report aggregates data from users who generated a start event within this range. The date range follows your app's time zone. Select a condition and date to set the date range. Maximum date ranges by granularity:

* Daily: 184 days
* Weekly: 12 weeks
* Monthly: 3 months

<Danger>
  **Warning**

  Due to the privacy policy, some metrics attributed to Google Ads, Meta Ads, and TikTok For Business before December 21, 2025 are counted as 0 and reported as “unattributed”. For details, refer to [FAQ - Real-time Reporting](/en/guides/actuals-report-faq#privacy-policy).
</Danger>

##### Date range condition

Three date range conditions are available:

| Condition | Reference date       | Date range covered                           |
| --------- | -------------------- | -------------------------------------------- |
| Between   | Start date, end date | From the start date to the end date          |
| Since     | Start date           | From the start date to today                 |
| Last      | Number (n)           | From n days (weeks, months) ago to yesterday |

For 'Last', you can add 'Include today', 'Include current month', or 'Offset'. Including today or the current month shifts the date range end to today or the current month. Click 'Offset' and enter a number to push the date range start back by that amount. For example, with daily granularity and 'Last 30 days', the report covers 30 days ago to 1 day ago. Turn off 'Include today' and add 'Offset 3 days' to shift the date range to 33 days ago through 4 days ago.

### Start Event and Revenue Event

The Revenue Report aggregates revenue metrics based on whether users who generated a start event also generated a revenue event.

* Start event: An event generated when a user enters your service during the configured date range
* Revenue event: An event used to determine whether a start event user generated revenue

##### Start Event

A start event is generated when a user enters your service during the configured date range. Users who didn't generate a start event are excluded from the Revenue Report. You can configure multiple start events. For example, selecting Install (App) and Deeplink Open (App) limits the analysis to users who installed the app or opened a deep link.

##### Revenue Event

A revenue event determines whether a start event user generated revenue. When a user generates a revenue event, the Revenue Report counts the resulting revenue as in scope for analysis. Standard events and custom events collected at least once can serve as revenue events.

You can select multiple revenue events. For example, selecting Order Complete (Web) and Ad Click (App) limits the analysis to revenue from users who completed an order on the web or clicked an ad in the app. The maximum number of intervals in the results varies by granularity.

<Info>
  **Note**

  A **First Order Complete (App)** metric determines whether a purchase is a user's first based on the identifier in its name, regardless of the **\[Identifier]** setting. For example, even if you set **\[Identifier]** to **User** in your report, the **First Order Complete (App) by Device ID** metric still determines first purchases by device ID.
</Info>

###### Custom Events

When you select a Custom Event as the Revenue Event, the Revenue report displays the aggregated [Event Value](/en/guides/airbridge-event-elements#value) of that Custom Event. Custom Events without an Event Value can also be selected as the Revenue Event, but their revenue metrics will be aggregated as 0. Revenue metrics include Revenue, ROAS, ARPU, and ARPPU.

### Metric and Aggregation Method

The Revenue Report aggregates revenue metrics based on the selected metric and aggregation method.

##### Metric

Metrics are the revenue indicators the Revenue Report provides.

| Metric      | Description                                                                        |
| ----------- | ---------------------------------------------------------------------------------- |
| Revenue     | Revenue from revenue events generated by start event users                         |
| User Count  | Number of users who generated a revenue event after a start event                  |
| Event Count | Number of revenue events generated by start event users                            |
| ROAS        | Ratio of revenue from start event users' revenue events to ad spend                |
| ARPU        | Average revenue per user from revenue events generated by start event users        |
| ARPPU       | Average revenue per paying user from revenue events generated by start event users |
| PUR         | Ratio of users who generated a revenue event to total start event users            |

##### Aggregation Method

The aggregation method defines how the Revenue Report aggregates metrics.

| Aggregation method | Description                                                                                                                    | Supported metrics                       | Notes                                                                                                  |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| Cumulative         | At each interval, accumulates values from the first day of the date range (Day 0) through the day being queried                | Revenue, Event Count, ROAS, ARPU, ARPPU | When Revenue is viewed as Cumulative, the value on the last day of the date range equals Total Revenue |
| Non-Cumulative     | At each interval, shows only the value for that day                                                                            | Revenue, User Count, Event Count, PUR   | -                                                                                                      |
| Cumulative Unique  | At each interval, accumulates the unique user count from the first day of the date range (Day 0) through the day being queried | User Count, PUR                         | -                                                                                                      |

<AccordionGroup>
  <Accordion title="Cumulative">
    The following shows revenue viewed in Cumulative mode.

    | **Cumulative** | **Day 0** | **Day 1** | **Day 2** | **Day 3** |
    | -------------- | --------- | --------- | --------- | --------- |
    | Revenue        | 10        | 20        | 60        | 80        |

    Day 2's revenue of 60 is the sum of revenue from Day 0 through Day 2. So revenue generated only on Day 2 is 40 (Day 2 minus Day 1).

    Switching to Non-Cumulative shows the data this way:

    | **Non-Cumulative** | **Day 0** | **Day 1** | **Day 2** | **Day 3** |
    | ------------------ | --------- | --------- | --------- | --------- |
    | Revenue            | 10        | 10        | 40        | 20        |
  </Accordion>

  <Accordion title="Non-Cumulative">
    **Example)**

    The following shows revenue viewed in Non-Cumulative mode.

    | **Non-Cumulative** | **Day 0** | **Day 1** | **Day 2** | **Day 3** |
    | ------------------ | --------- | --------- | --------- | --------- |
    | Revenue            | 10        | 20        | 60        | 80        |

    Day 2's revenue of 60 is the revenue generated on Day 2 itself. Day 3's revenue of 80 is also the revenue generated only on Day 3.

    Switching to Cumulative shows the data this way:

    | **Cumulative** | **Day 0** | **Day 1** | **Day 2** | **Day 3** |
    | -------------- | --------- | --------- | --------- | --------- |
    | Revenue        | 10        | 30        | 90        | 170       |
  </Accordion>

  <Accordion title="Cumulative Unique">
    The following shows user count viewed in Cumulative Unique mode.

    | **Cumulative Unique** | **Day 0** | **Day 1** | **Day 2** | **Day 3** |
    | --------------------- | --------- | --------- | --------- | --------- |
    | User Count            | 100       | 200       | 600       | 800       |

    Day 2's user count of 600 is the sum of unique users who generated a revenue event from Day 0 through Day 2.

    But the difference between Day 2 (600) and Day 1 (200), 400, doesn't represent all unique users who generated a revenue event on Day 2 alone. Day 2's value accumulates unique users who generated a revenue event at least once from Day 0 through Day 2.

    To see all unique users who generated a revenue event on Day 2 alone, switch the aggregation method to Non-Cumulative.
  </Accordion>
</AccordionGroup>

### Predictive LTV

Predictive LTV (pLTV) estimates how much revenue a cohort will generate in your service in the future. Predictive LTV is available only when the Start Event is **Install (App)** alone. See [Predictive LTV](/en/guides/predictive-ltv) for details.

### GroupBy

A GroupBy splits metrics by a chosen criterion. For example, selecting Channel breaks down metrics by ad channel. Select 0 to 6 GroupBys. GroupBys apply based on start events.

### Filter

A filter narrows results to specific GroupBy values. Filters use the form "A is B," where A is a GroupBy and B is the value to filter on. Only values collected at least once in Airbridge appear in B's search results. 'is' is the default condition. Available conditions:

| Condition        | Usage                | Description                               |
| ---------------- | -------------------- | ----------------------------------------- |
| is               | A is B               | Show only data where A equals B           |
| is not           | A is not B           | Show only data where A does not equal B   |
| contains         | A contains B         | Show only data where A contains B         |
| does not contain | A does not contain B | Show only data where A does not contain B |
| exists           | A exists             | Show only data with A                     |
| does not exist   | A does not exist     | Show only data without A                  |

### Sub-metric

Sub-metrics are secondary metrics automatically added when you select a metric. Available sub-metrics:

| **Sub-metric**    | **Description**                                                                                                                                                                                   |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Users             | Number of users who generated a start event. Without accepting Meta's AMM (Advanced Mobile Measurement) Terms, some Meta Ads (facebook.business) data is masked when this sub-metric is selected. |
| CAC               | Customer Acquisition Cost. Total ad spend divided by the number of users who generated a start event.                                                                                             |
| Paying Users      | Number of users who generated both a start event and a revenue event.                                                                                                                             |
| Total Revenue     | Total revenue generated by users who generated both a start event and a revenue event.                                                                                                            |
| Total Cost        | Total ad spend used to acquire start event users. Auto-selected only when ROAS is selected as the metric.                                                                                         |
| Total Event Count | Number of revenue events generated by users who generated both a start event and a revenue event. Auto-selected only when Event Count is selected as the metric.                                  |

## View the Revenue Report

Once configured, you can view the results. Results appear as a chart and a table.

### Chart

The chart shows the selected metric's values by granularity as a line graph. Click an item in the legend below the chart to show or hide it. Use the right-axis option to plot series with very different value ranges separately.

### Table

The table shows the selected metric's values by granularity.

##### Top rows and sub-rows

The table consists of top rows and sub-rows. See [Revenue Report Calculation Method](/en/guides/revenue-report-calcualtion-method) for context.

* Top rows: Show revenue metrics across the full configured date range, from the date range start date through the report query date, up to the maximum number of intervals.
* Sub-rows: Break revenue metrics down by granularity within the configured date range.

## Share the Revenue Report

Share your reports using the following features.

| **Feature**            | **Description**                                                                                                                                             |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Report Library         | When you save a report with your settings, other users with access can see it with your settings applied. Saved reports appear under **\[Report Library]**. |
| Copy Config            | Share configuration with any Airbridge user, regardless of their registered app or role.                                                                    |
| Copy Table, Copy Chart | Click 'Copy Table' or 'Copy Chart' to paste into Excel, Google Sheets, messengers, and more.                                                                |
| Export CSV             | Download Airbridge report results in your chosen format.                                                                                                    |
| Sharelink              | A URL that downloads a CSV with Airbridge report data. The data a Sharelink provides depends on the creator's app role and updates every hour.              |

### Sharelink

A Sharelink is a URL that downloads the report data as a CSV file. You can create a sharelink only after you save the report. To create one, click the share icon to the right of the report's name. Sharelink data updates hourly. For details, see [Sharing Revenue Data using Sharelinks](/en/guides/revenue-report-sharelink).

## Features and Limitations

Features and limitations of the Revenue Report.

| **Feature or limit**                                     | **Description**                                                                                                                                 |
| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| Maximum revenue events                                   | 5                                                                                                                                               |
| Maximum GroupBys                                         | 6                                                                                                                                               |
| Self-serve metric, custom metric, custom GroupBy support | Not supported                                                                                                                                   |
| Time zone                                                | Follows the app's configured time zone                                                                                                          |
| Currency                                                 | Follows the app's base currency                                                                                                                 |
| Data format                                              | Table, chart                                                                                                                                    |
| Data refresh interval                                    | 1 hour                                                                                                                                          |
| Available data                                           | App data, web data, cost data                                                                                                                   |
| Custom event support                                     | Supported                                                                                                                                       |
| Maximum rows (Airbridge dashboard)                       | 10,000 rows                                                                                                                                     |
| Maximum rows (CSV / Google Sheets)                       | 10,000 rows                                                                                                                                     |
| Data availability                                        | 5 years (from February 1, 2023)<br />\*When **\[Identifier]** is set to **User**, only data collected on or after October 1, 2023 is available. |
| Maximum date range in a single query                     | - Daily: 184 days<br />- Weekly: 12 weeks<br />- Monthly: 3 months                                                                              |

## General Features

Features common to all reports. Some features aren't available in certain reports.

| **Name**        | **Description**                                                                                           |
| --------------- | --------------------------------------------------------------------------------------------------------- |
| Refresh         | Rerun the report with the current configuration. The time since the last query appears next to the button |
| Wide controls   | Configure the report in a wider layout                                                                    |
| Search          | Search within the report results                                                                          |
| Expand/Collapse | Collapse or expand the report's configuration panel                                                       |
| Report naming   | Enter a report name. A name is required to save the report                                                |

## Notes

Keep the following in mind:

### Meta's Privacy Policy

Under Meta's privacy policy, some Meta Ads (facebook.business) data is masked in reports until you accept the AMM (Advanced Mobile Measurement) Terms. Masking applies when:

* Impressions and engaged views from a Meta Ads campaign total fewer than 1,000 within the date range
* Meta Ads data comes from channel or cost integration

Masked data is excluded from aggregations and appears as follows:

| Display       | Masking scope | Description                               |
| ------------- | ------------- | ----------------------------------------- |
| Privacy Block | All data      | Shown as Privacy Block instead of a value |
| +α, ±α        | Some data     | Appended to the value                     |

<Info>
  **Note**

  To view all Meta Ads campaign data in reports, agree to Meta's AMM Terms. For details, see [FAQ - Meta Business](/en/guides/meta-business-faq#why-is-some-data-attributed-to-meta-ads-not-displayed-properly-in-reports).
</Info>

If Meta Ads data still appears masked after you accept the terms, try these steps:

* Change or extend the date range. Only data after the acceptance date is unmasked.
* Change or remove some GroupBys and filters.

<link rel="alternate" hrefLang="en" href="https://help.airbridge.io/en/guides/understanding-the-revenue-report" />

<link rel="alternate" hrefLang="ko" href="https://help.airbridge.io/ko/guides/understanding-the-revenue-report" />
