Last updated: 12/11/2024
As an Advertiser, you can use the Reporting API to retrieve reporting data for your ads that are served in the Offerwall.
Before you begin: You must authenticate with the API, following the steps here.
The Reporting API can be used to request performance data for your ad sets and multi-reward events, including metrics such as revenue, impressions, and conversions. All available advertiser reporting metrics are listed in the chart below.
We recommend advertisers to start with the following base query to retrieve performance metrics:
query {
adSet(id: "00000000-0000-0000-0000-000000000000") {
insights(timeRange: {from: "YYYY-MM-DDT00:00:00Z", until: "YYYY-MM-DDT00:00:00Z"}) {
timestamps
reports {
impressions
}
}
}
}
Advertiser Metric | Description |
---|---|
amount | Bid for this event |
averageBid | Total Spend divided by Total Conversions |
callToActionClicks | The number of times users clicked the call-to-action, if a call-to-action is present |
clickToConversionTime | Click to conversion time data segmented in several different ways. Note: CTCT metrics are only reported in the 1st UTC hour of every day. When using a granularity of HOURLY , only the hour representing 00:00:00 UTC - 00:59:59 UTC will have a value other than 0. |
conversions | Number of conversions for the ad objective |
csConversions | Number of Customer Service conversions for the ad objective |
csSpend | Total Customer Support amount spent |
ecpi | Total Spend divided by Total Engagements |
engagementInstalls | The number of installs inferred from engagements |
impressions | The number of times the ad was clicked on in the offerwall. Note: This metric more accurately represents clicks , not impressions . We will be renaming this metric soon. |
offerwallAverageRank | The (weighted) average offerwall position the ad was served in. The value is ascending from 1, with 1 representing the top spot in the offerwall. A value of 0 means the offer was not displayed in the offerwall for the selected time period |
offerwallImpressions | The number of times the ad appeared in the offerwall. Note: An ad can appear in the offerwall and not be viewed by a user (i.e. user has not scrolled far enough to see the ad). We recommend Advertisers to use offerwallTrueImpressions below. |
offerwallTrueImpressions | The number of times the ad was viewed by a user in the offerwall. Each view registers as a true impression. |
returnOnAdSpend | Return on ad spend data for users who installed on each day. Note: Return on ad spend metrics are only reported in the 1st UTC hour of every day. |
dayXRoas | Total return on ad spend X days from install. This is calculated as day_X_roas_revenue divided by day_X_roas_spend . If day_X_roas_revenue is 0, this field will also be 0. Available for X = 0, 1, 2, 3, 4, 5, 6, 7, 14, 30, 60, 90 . |
dayXRoasAdRevenue | Total user ad revenue X days from install. Available for X = 0, 1, 2, 3, 4, 5, 6, 7, 14, 30, 60, 90 . |
dayXRoasEngagements | Total user engagements X days from install. Available for X = 0, 1, 2, 3, 4, 5, 6, 7, 14, 30, 60, 90 . |
dayXRoasIapRevenue | Total user IAP revenue X days from install. Available for X = 0, 1, 2, 3, 4, 5, 6, 7, 14, 30, 60, 90 . |
dayXRoasRevenue | Total user revenue X days from install. This is calculated as day_X_roas_iap_revenue plus day_X_roas_ad_revenue . Available for X = 0, 1, 2, 3, 4, 5, 6, 7, 14, 30, 60, 90 . |
dayXRoasSpend | Total advertiser spend X days from install. Available for X = 0, 1, 2, 3, 4, 5, 6, 7, 14, 30, 60, 90 . |
spend | Total amount spent |
Additional Advertiser Metrics available in the Dashboard
By adding segment fields to your queries, the API can return performance data broken down by event, publisher app, country, etc. The Reporting API supports segmentation under the following breakdowns:
{
adSet(id: "00000000-0000-0000-0000-000000000000") {
insights(timeRange: {from: "2024-08-01T00:00:00Z", until: "2024-08-01T11:59:59Z"}, timeIncrement: DAILY) {
timestamps
reports {
country
attributionSource
language
conversions
}
}
}
}
{
advertiser{
id
campaigns(first: 2){
nodes{
insights{
reports{
impressions
platform
}
}
}
}
}
}
query {
adSet(id: "00000000-0000-0000-0000-000000000000") {
ads {
id
insights(timePreset: TODAY) {
reports {
app {
bundleId
}
impressions
conversions
spend
}
}
}
}
}
query {
advertiser {
adSets(first: 50, configuredStatus: ACTIVE) {
edges {
node {
id
insights(timeRange: {from: "2024-11-15T00:00:00Z", until: "2024-11-16T00:00:00Z"}) {
timestamps
reports {
conversions
spend
}
}
}
}
}
}
}
{
adSet(id: "00000000-0000-0000-0000-000000000000") {
id
insights(timeRange: {from: "2024-11-15T00:00:00Z", until: "2024-11-15T11:59:59Z"}, timeIncrement: DAILY) {
timestamps
reports {
conversions
returnOnAdSpend {
day0Roas
}
multiRewardEngagementEvent {
eventName
}
}
}
}
}
By adding filters to your queries, the API will return performance metrics from the specified sources only. The Reporting API supports the following filtering capabilities:
This limits results to a single adSet
query {
adSet(id: "00000000-0000-0000-0000-000000000000") {
insights(timeRange: {from: "2024-08-06T00:00:00Z", until: "2024-08-07T00:00:00Z"}) {
timestamps
reports {
impressions
conversions
spend
offerwallAverageRank
}
}
}
}
This limits results to the first or last x Ad Sets
query {
advertiser {
adSets(first: 2) {
edges {
node {
insights(timePreset:TODAY) {
reports {
conversions
}
}
}
}
}
}
}
This limits results to the specified publisher app IDs
query {
adSet(id: "00000000-0000-0000-0000-000000000000") {
insights(filter:{appIds: ["00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000"]}) {
timestamps
reports {
conversions
}
}
}
}
This limits results to the ad sets/campaigns with the specified status
Options: ACTIVE, ARCHIVED, or PAUSED
query {
advertiser {
adSets(first: 2, configuredStatus: ACTIVE) {
edges {
node {
insights(timePreset:TODAY) {
reports {
conversions
}
}
}
}
}
}
}
This limits results to the specified countries
query {
adSet(id: "00000000-0000-0000-0000-000000000000") {
insights(filter:{countries: [JP, US]}) {
timestamps
reports {
conversions
}
}
}
}
This limits results to a preset timeframe. This is a relative time range and results will vary based on when the query is run.
Options: LAST_30D, LAST_WEEK, TODAY, YESTERDAY.
Note: To define the level of data aggregation, include timeIncrement, which can take values DAILY, HOURLY, MONTHLY. timeIncrement is an optional parameter and defaults to ALL
query {
adSet(id: "00000000-0000-0000-0000-000000000000") {
insights(timePreset:LAST_30D, timeIncrement: DAILY) {
reports {
impressions
}
}
}
}
This limits results to the absolute time range specified.
The maximum range is 3 months and the earliest date supported is 2 years in the past.
Note: To define the level of data aggregation, include timeIncrement, which can take values DAILY, HOURLY, MONTHLY. timeIncrement is an optional parameter and defaults to ALL
query {
adSet(id: "00000000-0000-0000-0000-000000000000") {
insights(timeRange: {from: "2024-11-15T00:00:00Z", until: "2024-11-17T00:00:00Z"}, timeIncrement: DAILY) {
reports {
impressions
}
}
}
}