Overview

If you are using Rewarded Ads to monetize your game you will want visibility of your Ad Impressions and Ad Revenue in deltaDNA for a variety of reasons including:

  • Reporting on Ad Consumption
  • Reporting on Ad Revenue
  • Analysis and reporting of Ad performance by Ad provider
  • Analysis and reporting of Ad performance from a player and monetization perspective
  • AB Testing Ad frequency and reward values
  • Personalizing Ad / IAP strategy by player segment

Considerations

Ideally, you should populate an adImpression event from the game client as you display Ads to the player. But, Ad Provider SDKs don’t generally provide eCPM data at the point of display, so it will need to be sent do deltaDNA separately. However, it is still worth recording the adImpression on the client to provide valuable impression data during the gameplay session, for several of the reasons mentioned above.

Most Ad providers provide other mechanisms for retrieving Ad data including revenue and it is possible to submit this as events from other sources, with the following caveats:

  • deltaDNA works with user-level data, each event you submit needs to contain a userID
  • The REST API should be used to submit Ghost events if data is not coming from the client at run-time.
  • If you are considering batching events from a server as opposed to submitting them as they happen, please ensure you do so in small smooth batches over a prolonged period rather than as large infrequent dumps. Please get in touch with [email protected] if you are considering this.
  • If you cannot provide per impression events, it is possible to submit aggregated daily totals per player, but this will never be as useful as individual impression level events.
  • If you are sending adImpression events from the client during the session, but retrieving Ad revenue from a server-based reporting API at a later date, you should send a separate adRevenue event to the REST API

Recording Ad Impressions

A dedicated adImpression event is provided for recording details of each Ad Impression as you show ads to the player. Navigate to the SETUP > Create An Event page on your DEV environment and import it from the Event Template list if it isn’t already included in your event schema.

It is preferable to use this event, rather than your own completely custom event, as any Ad eCPM information received in this event will automatically be included in deltaDNA LTV predictions and reporting tables.

The adImpression event contains the following parameters, you should populate as many of them as you can for the richest data.

  • adCompletionStatus (required) – Indicates a successful Ad view. Values should be one of the following
    > COMPLETED – if the ad is fully viewed and therefore will count as an impression for the ad network.
    > PARTIAL – If there is an option to exit the ad before generating revenue
    > INCOMPLETE – If the ad is not viewed at all (alternatively, don’t record the adImpression event in this scenario)
  • adEcpmUsd (optional) – The estimated Ecpm in USD, you should populate this value if you can.
  • adProvider (optional) – The Ad sdk that provided the Ad.
  • impressionValue (optional) – The value of this impression. This value is populated by deltaDNA, you should not populate yourself.
  • placementId (optional) – The unique identifier for the placement as integrated into the game.
  • placementName (optional) – if there is a place in the game that can show Ads from multiple networks there wouldn’t be a single placementId. This field compensates for that by providing a single name for your placement. Ideally, this would be an easily human-readable name such as ‘revive’ or ‘daily bonus’. This value is here for reporting purposes only.
  • placementType (optional) – The placementType should indicate what type of ad is shown, this is added for reporting purposes only.
    Default enumeration:
    > BANNER – a form of advertising that is located on the screen while playing a game
    > REWARDED – advertising that will give a user a reward.
    > INTERSTITIAL – advertising that will appear at different intervals while playing a game
    > OTHER – any other placement type not listed
  • platform (optional)  – The platform the player is playing on (IOS / ANDROID etc..). This will be populated automatically by the SDK
  • sdkVersion (optional)  – The deltaDNA SDK version. This will be populated automatically by the SDK

Please note: 

  • Not all Ad provider SDKs will be able to provide information for all of the parameters above. In those cases, if the parameter is optional you should omit it and its value when recording the event rather than submitting it with and NULL or empty value.
  • If a parameter is marked as required, your event will fail validation if it is not provided.
  • If the Ad provider SDK reveals additional information of interest, you may want to add additional custom parameters to support it, further enrich your analysis, reporting and segmentation options.

Recording Ad Revenue

The dedicated adRevenue event can be used to send Ad revenue data received from a provider’s Ad reporting  API to deltaDNA.

The granularity, specific fields and API details will vary depending on the Ad Provider that you use. In general, you are looking to send daily user-level ad revenue and number of impressions for each player, but there will likely be other fields that you can retrieve from the ad provider’s API, such as the placement and network.

Populate any additional parameters where you can and extend the event with additional custom parameters if there are other useful fields that are of interest. You may find yourself sending multiple events per player per day if you are grouping your report by network or placement.

The adRevenue event contains the following fields

  • adEcpmUsd (required) – The Ecpm in USD this is the revenue generated by 1000 impressions. (e.g. 17.45) You should populate this value if you can.
  • adProvider (optional) – The Ad sdk that provided the Ad.
  • impressions (required) – The number of impressions this ad revenue event relates to.
  • impressionValue (optional) – The value of this impression. This value is populated by deltaDNA, you should not populate yourself.
  • placementId (optional) – The unique identifier for the placement as integrated into the game.
  • placementName (optional) – if there is a place in the game that can show Ads from multiple networks there wouldn’t be a single placementId. This field compensates for that by providing a single name for your placement. Ideally, this would be an easily human-readable name such as ‘revive’ or ‘daily bonus’. This value is here for reporting purposes only.
  • placementType (optional) -The placementType should indicate what type of ad is shown, this is added for reporting purposes only.
    Default enumeration:
    > BANNER – a form of advertising that is located on the screen while playing a game
    > REWARDED – advertising that will give a user a reward
    > INTERSTITIAL – advertising that will appear at different intervals while playing a game
    > OTHER – any other placement type not listed

please note that you need to populate the userID on the adRevenue event with the deltaDNA userID and the eventTimestamp should contain the date that the impression was generated, not the date you retrieved the AdRevenue report.

MoPub

MoPub provides Impression-Level Revenue Data (ILRD).

The ILRD feature must be enabled for the ad responses to include impression revenue data. Please contact your MoPub account representative and ask them to enable ILRD for your account.

Populate your adImpression event in the deltaDNA SDK as you show ads to the player. The MoPub SDK can provide a publisher_revenue value that can be mapped into the adEcpmUsd parameter on your adImpression event.

Integration of MoPubs Ads and Ad Revenue is covered in this DeltaDNA Dynamic Ad Placement Tutorial

Further information on ILRD in the MoPub publisher documentation

IronSource

IronSource provide an Ad Revenue Reporting API that provides daily, user-level Ad revenue reports.

Please note :

  • Data first becomes available after 14:00 UTC on the day after an Ad Impression is generated
  • The Data is refined the following day
  • The Data will not change after 2 days
    So we advise pulling your adRevenue data from Ironsource on the 2nd day after the impression, else you will need to consider storing and sending deltas on the 2nd day.
  • You will need to send the deltaDNA userID to IronSource in order for it to appear in their report and therefore be used in the adRevenue event that you send.
    e.g.
AppLovin MAX

Applovin Max provide Impression Level User Revenue that can be accessed from their SDK at runtime as you show Ads.

Populate the AdEcpmUsd parameter on your adImpression events with the value provided * 1000

double revenue = MaxSdk.GetAdInfo(adUnitId).Revenue;

Finally

The services and data that Ad Networks and Mediators are providing is evolving rapidly. The availability of some data fields, most notably eCPM is changing fast. So please check in with your Ad provider regularly to make sure you are using their latest SDKs, APIs and getting the most from the available data.