Ad Placements and Debugging Tools

This section covers other features that are available with placements. While not a requirement for the AdInMo SDK, we highly recommend you make use of these features.

Impression Validity

To maximize your monetization it’s essential to understand what makes an impression valid. Here is a summary of what makes an impression valid:

  • Time on screen:

- Rich media - 1 second + 4 second cooldown - with cooldown being the minimum amount of time between cycling (ad switching). Through the portal you can increase the time an impression cycles before the next ad, from minimum of 4 to a maximum of 30 seconds. Slower cycles may impact monetization.
- Video ads - 2 seconds of screen time and do not have a cooldown period. The ad will be played in it’s entirety. Depending on demand, this may vary between 6 to 30 seconds in length.
  • Angle must be less than or equal to 55 degrees, the image must also be facing the camera.

  • Placement size must be at least 1.5% (coverage).

  • Occlusion - this relates to blocking the placement e.g. putting a game object in front of placement blocking it from the camera.

- Audio ads - will play a short 15 or 30 second audio ad to generate an impression. Device audio must be at 30% volume or higher for the ad to play. Audio ads have a cool off period of 5 minutes.


We recommend using the debugging tool to help optimise your placements to ensure they are generating valid impressions. For more information on the debugging tool see below.

We recommend always setting your ad placements in places players are most likely to spend time. The SDK now tracks Dwell Time as an attention metric: the time a player spends looking at a valid placement. Optimizing for Dwell Time will drive higher CPMs.

Fill rate

Fill Rate measures the percentage of paid ad impressions from AdInMo’s demand partners. Your game’s fill rate is calculated by dividing the total number of ad requests your game sends by the number of paid ads delivered on behalf of our advertisers. Fill rate, along with CPMs and ad viewability determines your monetization.

Debugging Tools

AdInMo’s debugging tools will help you optimise your placements.

  1. Within Unity Editor go to the top menu, Adinmo > Manager. A new window will open with the debugging tools. Here you can also view your game key, placements and more.

  2. Select ‘Debug Valid Impressions’ and ‘Debug Faults’ either from the popup window or from Adinmo Manager prefab inspector. If you would debug on your device, make sure to select ‘Debug on device’ as well.

This will allow the debug to show you detailed information on the size and angle of the placement relative to the camera, as well as the name of the placement, the aspect ratio and the camera ‘looking’ at it.

Validity will be determined by the green strip on top of the placement. When it turns from green to white will mean the placement has met all criteria and has been on screen for one second - a valid impression has been registered.


Occlusion Test Ignores Layers

Note this feature is only available in Unity SDK 2.0.3 and above. This feature allows you to set specific layers to be ignored by the occlusion test. An example of where this might be used is when a placement has a collision box that may result in impressions being lost. The option can be found on the AdInMo texture component of a placement. This option can be found on the adinmo texture component.


Fail Reason

Too Small - placement is failing the Placement Size check. Placement is less than 1.5% relative to the screen.
Angle to Camera - placement is failing the Angle check, angle is larger than 55 degrees.
Not Facing Camera - Placement is failing the angle check and not facing the camera
Not in Shot - Placement is not on screen. Check if the correct camera has been assigned.
Occluded - an object occludes the placement causing less than 50% of the placement to be visible. This applies to collision boxes as well.
Partially off-screen - Less than 50% of the placement is visible relative to the active camera.

Placeholder Image

On the AdinmoTexture component there is an option to disable the default placeholder. By default there is an AdInMo placeholder, this will display when no ads are being displayed. You can have your own placeholder image here by checking the disable placeholder option and adding your own to the texture.


Update Adinmo Placements to work with URP

When using a placement prefab in a URP scene, you will notice that the texture doesn’t render properly, and it will appear magenta, this is because the default shader isn’t URP compatible.


To solve this problem, you will need to replace the Default-Material with a URP compatible material:

  1. Right click in your project window and select create/material

  1. Rename it to something appropriate

  2. Select the material, click on the shader box and select Universal Render Pipeline, then an appropriate shader, usually lit or unlit

  1. Then select your prefab, expand the material list on the renderer

  1. Find your material in the popup and select it

  1. The placement should change to non magenta, indicating that it is working


Placement Fit

Through the portal, you can choose from different options how ads will fit on to your placements to maintain creative control. Loose fit will provide the most monetization options and exact fit limited to serving ads that meet the exact size of your ad placement only.

Background Setting

You can set the space around your placement through the portal to better control how it looks in-game. You can choose to do this by colour-matching or shrink the placement to fit the ad.

Android Player Settings

In Unity 2019 and above, you may find that Vulkan is selected by default. The SDK will support Vulkan as of version 2.1.1 and above with recommended Android version 9.0 and above.


Dynamic Ads

AdInMo supports the concept of dynamic ads, these are ad placements that are created programmatically rather than through the Unity editor. This allows AdInMo to support situations where a game developer programmatically creates objects in the game, our SDK supports the concept of then creating the ad unit programmatically once the object has been created. Here’s a simple example of how this works using the AdInMo Unity SDK.

 1using UnityEngine;
 2public class InstantiationExample : MonoBehaviour
 4  // Reference to the Prefab. Drag a Prefab with an AdInMo Texture component attached to it into this field in the Inspector.
 6  public GameObject myAdinmoPrefab;
 7  // This script will simply instantiate the Prefab when the game starts.
 9  void Start()
10  {
11      // Instantiate at position (0, 0, 0) and zero rotation.
12      Instantiate(myPrefab, new Vector3(0, 0, 0), Quaternion.identity);
13  }

Audio Ads

The SDK will detect the audio levels and if the master volume of the device is at 30% or more, an audio ad will play. Audio ads have a 5 minute cool off period.
Audio ads are measured using Listen Through Rates (LTR). Make sure to set the audio prefab in scenes where users are more likely to spend at least 30 seconds to get the best LTR and monetization.
To set Audio ads you need to:
  • Add the AdInMo manager prefab to your hierarchy

  • Add a canvas (you can use any existing canvas) and set a reference resolution. Preferably 1920x1080

  • Drag and drop the Audio prefab from the Adinmo>prefabs folder

  • From within the prefab itself you can move the icon around your scene to better fit your game

  • On the portal make sure to enable Audio for the game as seen below

Audio ads are set to work with Unity Default Audio as well as third party audio solutions such as FMOD. By default, the audio ad will play on full volume and will lower all other sounds when using Unity default audio until the ad ends. If you’re using FMOD or other third party audio solution, you can use these exposed methods to catch when the audio ad starts and ends and set your volume levels accordingly
1static public void SetAudioAdStartedCallback(AudioPlaybackCallback callback)
3static public void SetAudioAdFinishedCallback(AudioPlaybackCallback callback)
5public delegate void AudioPlaybackCallback()
this would be an example you can put in the class :
 3      AdinmoManager.SetAudioAdFinishedCallback(AudioAdFinishedPlaying);
 4  public void AudioAdStartedPlaying()
 5  {
 6      Debug.Log("Audio Ad started playing");
 7  }
 8  public void AudioAdFinishedPlaying()
 9  {
10      Debug.Log("Audio Ad finished playing");
11  }