Analytics Buckets
Chunk #1
Example for how Buckets are Used for Impressions Restrictions Setting
The Impressions Restrictions setting can be configured on the configurations page.
1. Navigate to the Configurations page and open the Interstitials tab.
2. Enable the Impressions Restrictions setting.
3. Add a unit and input the following data:
 
**Source Buckets Used: Events from all buckets are used for this setting.**
- MAX Interstitial Buckets: 0, 1, and 2
- Google Interstitial Event Bucket
- Meta Interstitial Event Bucket
- All buckets contribute CPM data
- Events are sorted by timestamp
**Combining and Sorting Events**
All events from the buckets are:
- Merged into a single list
- Sorted chronologically by timestamp
This ensures that only the most recent events are used for formula application.
**Formula Parameters**
- **Min Ad Requests to Apply Formula = 3**
- **Ad Requests to Use in Formula = 4**
Selected CPMs (from latest 4 events): 5, 5, 6, 6
**Calculation Logic**
Formula:
CPM floor=(45+5+6+6)×1.1=422×1.1=5.5×1.1=6.06
**Final CPM Floor Sent = 6.06**
This setting is currently not available for Rewarded videos
* * *
## Example for how Buckets are Used for Ad Slots
The Ad slots setting can be configured on the Ads page.
1. Navigate to the Ad Slots page.
2. Add a unit and input the following data:

The Ad unit mediation here is Max and the specified Max Analytics Bucket for this example is: 0. You can jump to the configuration through the link besides the selected Max ID.
 
**Source Buckets Used:** This setting uses events from one MAX bucket + Google bucket + Meta bucket
- MAX Interstitial Buckets: 0, 1, or 2
- Google Interstitial Event Bucket
- Meta Interstitial Event Bucket
- 1 bucket for Max, 1 bucket for Google and 1 bucket for Meta contribute CPM data
- Events are sorted by timestamp
**Combining and Sorting Events**
All events from the buckets are:
- Merged into a single list
- Sorted chronologically by timestamp
This ensures that only the most recent events are used for formula application.
**Formula Parameters**
- **Min Ad Requests to Apply Formula = 3**
- **Ad Requests to Use in Formula = 4**
Selected CPMs (from latest 4 events): 5, 6, 5, 5
**Calculation Logic**
Formula:
CPM floor=(5+5+5+6)/4×1.1=5.775
**Final CPM Floor Sent = 5.775**
The same logic applies to **Ad slots** , using **Rewarded Video (RV) events** stored in the corresponding **RV event buckets**. The calculation follows the same formula-based behaviour as with interstitial events.
* * *
## **Managing Multiple Ad Units and Buckets for CPM Floor Calculation**
This section explains how to configure **multiple Ad Units and Ad Slots** , and how CPM floors are calculated using **event buckets** from MAX, Google, and Meta networks. It covers logic for bucket assignment, fallback flows, formula use, and nesting within Ad Slot Banks.
### **Multiple Ad Units per Configuration**
You can assign **multiple Ad Units** to the following settings:
- MAX Interstitial Ad Units
- MAX Rewarded Video Ad Units
- Ad Slots (Interstitials)
- Ad Slots (Rewarded Videos)
Each Ad Unit is configured independently and can have:
- Its own **CPM floor**
- Its own **MAX analytic bucket**
- Its own **formula calculation logic**
**Note:** Google and Meta events are always considered for CPM calculation for Ad Slots (both Interstitials and Rewarded Videos) and are **not limited by the MAX bucket selection**.
### **Bucket Assignment and CPM Storage for Max Interstitials and Rewarded Videos Ad Unit Setting**
- Each Ad Unit's events are sent only to the **MAX buckets specified** in the MAX Analytic Buckets setting.
- Example:
**CPM Floor Options per Ad Unit**
Each Ad Unit can define its CPM floor using one of the following methods:
**a. Static Value (Fallback CPM)**
- A fixed floor value you set manually.
**b. Percentile-Based CPM Floor**
- Uses historical CPM data stored on the Game Server (GS).
- Requires Use Percentile enabled.
**c. Formula-Based Calculation**
- Averages or Median CPMs from recent events across selected buckets.
- Uses defined event count and coefficient rules.
- Pulls data from:
**Only 1 bucket is used for formula calculation: The selected MAX bucket**
**Event collection must be explicitly enabled for each game; it is not enabled by default.**
### **Ad Slot Structure and Behaviour**
**Multiple Ad Units per Ad Slot**
- Ad Units are initiated **in order** (sequential fallback).
- If an ad is not filled (no Ad is uploaded), the system proceeds to the **next Ad Unit**.
- Once all Ad Units are tried, the client **restarts from the first**.
- This loop continues until:
- Each Ad Unit can have its own request limit. For example:
**Multiple Ad Slots in Ad Slot Banks**
- A single **Ad Slot Bank** can contain **multiple Ad Slots**.
- Each Ad Slot has its own **independent list of Ad Units**.
- Ad Slot Bank is selected in the **Ads Config** section.
- **Each Ad Slot** can:
**Nested Ad Slots**
- **Nesting is supported up to 4 levels**.
- Each Ad Slot can have **only one child**.
- Example:
- If Ad Slot 1 serves an ad, the next request will try Ad Slot 1.1.
- At the top level, **up to 10 Ad Slots** can run **in parallel**.
- **Ad Unit ID configs must be unique** within a single Ad Slot Bank.
**CPM Floor Options per Ad Unit in each Ad slot**
Each Ad Unit can define its CPM floor using one of the following methods:
**a. Static Value (Fallback CPM)**
- A fixed floor value you set manually.
**b. Percentile-Based CPM Floor**
- Uses historical CPM data stored on the Game Server (GS).
- Requires Use Percentile enabled.
**c. Formula-Based Calculation**
- Averages or median CPMs from recent events across selected buckets.
- Uses defined event count and coefficient rules.
- Pulls data from:
**3 buckets are used for formula calculation: The selected MAX bucket+ 1 Google bucket +1 Meta bucket**
**Impression Restriction Behaviour**
The **Impression Restriction** setting relies on events across all buckets. (All five buckets that is 3 Max buckets + 1 Google bucket +1 Meta bucket)
However, **some buckets may be empty** if:
1. Ad Units are configured to send events only to specific buckets (e.g., Bucket 1 and 2, not 0).
2. The system has just started and hasn’t collected events yet.
Buckets without events are **ignored** during restriction logic.
Only buckets containing **valid CPM events** are used in the calculation.
**Summary**
| **Feature** | **Behaviour** |
| Ad Units per Slot | Sequential fallback |
| CPM Floor Options | Static, Percentile, Formula |
| Buckets Used | MAX (selected), Google, Meta |
| Unique Constraint | Ad Unit IDs must be unique within a Bank |
| Nesting Limit | 4 levels max |
To learn more about Ad Configuration , CPM Calculation, and Analytics Buckets, refer to this Miro board: link: [https://miro.com/app/board/uXjVJY-ADCU=/](https://miro.com/app/board/uXjVJY-ADCU=/) Password: Ad\_Config\_Miro
CPM Percentile Configuration
Chunk #0
# Introduction
A new feature has been introduced to support CPM floor configurations. This feature allows setting CPM floor values based on CPM percentiles. For example, the 80th percentile represents the CPM value below which 80% of impressions fall. Floors can be configured per country or per platform, cohort, and other parameters for the configuration.
* * *
## **New CPM Percentile Configuration Section**
- A new sub-section, **CPM Percentiles** has been added under the Ads menu in the left sidebar.
Navigate to **Ads \> CPM Percentiles \> Interstitials** , and select the  **[green + sign]** to create a new entity.
### **List View and Available Filters**
All the regular filters are available for CPM Percentile configurations.

### **Standard Fields for New/Edit View**

#### **Fields Descriptions**
| **Name** | **Validations** | **Description** |
| --- | --- | --- |
| Name | - Default: Blank - Type: String - **Mandatory** : Yes | Specify the Name for the configuration |
| Priority | - Default: Blank - Type: Integer - **Mandatory** : Yes | Specify the priority of the configuration |
| Label | - Default: Blank - Type: Single-select dropdown - **Mandatory** : No | Select the relevant label from the available options. |
| Platform | - Default: None - Type: Single-select dropdown - Options: None, iOS, Android - **Mandatory** : Yes | **Usage** : Determines the platform used to retrieve CPM values from storage |
| CPM source country | - Default: None - Single-select dropdown - Options: - **Mandatory** : Yes | **Usage:** Defines base country to fetch CPM floor from storage |
| Additional countries to apply CPM | - Default: None - Two fields: - **Mandatory** : Yes | 1. Operator: Use this to define how the selected countries in the second field should be treated in the rule logic. Options: None, IN, NOT IN) 2. List of all countries excluding those already available for selection in the “CPM Source Country” field Choose one or more countries to which the CPM percentile setting should also apply (if using IN) or exclude (if using NOT IN). For the countries selected in this field, CPMs will be taken from country selected in “CPM source country” field |
| Cohort Day | - Default: Blank - Single select dropdown these options: - **Mandatory** : Yes | Selected Cohort range is used to define which cohort day should be used to find required CPM value from the storage. |
| Percentile | - Default: Blank - Single select dropdown with these options: - **Mandatory** : Yes | Selected Percentile value is used to define which Percentile value should be used to find required CPM value from the storage. |
* * *
## Static CPM Configuration for MAX Interstitial Ad Unit
The Static CPM Configuration section allows you to control the behaviour of CPM floor values based on either static settings or percentile-based logic. This section is visible when configuring MAX Interstitial Ad Units, and applies to all Bidding CPM Floor Types.
### Overview of Changes
- Static floor CPM is renamed to Fallback CPM value.
- A new configuration section, Static CPM Configuration, is introduced when the CPM floor type is set to either Static or Formula.
## How CPM Floor Values Are Determined
### When “Use Percentile” Is Enabled
If you enable the “Use Percentile” option, CPM floor values are dynamically selected based on percentile configurations. Here’s how it works:
1. Percentiles are available for Ad Slots for Interstitials / Rewarded Videos and MAX interstitials / Rewarded videos Ad Units.
2. The system identifies matching CPM percentile configurations using:
3. If multiple configurations match, the system selects the one with the highest priority.
4. The CPM value is retrieved from a backend storage system.
5. The retrieved value is sent to the client.
* * *
## Fallback Behaviour
Fallback settings ensure that a CPM floor is still sent even if a percentile-based value cannot be determined.
**Scenario 1: No Matching Configuration Found**
If no percentile config matches the user that is the user does not match to any of selected percentile config by the following parameters: **Platform, CPM Source Country, Additional Countries to apply CPM, or Cohort Day:**
- The system refers to the setting: If no matching configuration.
**Scenario 2: No Percentile Data Available**
If percentile data is unavailable (e.g., backend storage is inaccessible or lacks data):
- The system refers to the setting: If no percentile available.
* * *
### When “Use Percentile” Is Disabled
If “Use Percentile” is disabled, the system does not apply any percentile logic. Instead, the existing CPM logic is used based on either:
- A static CPM value, or
- A formula defined in the configuration.
### New Fields in Static CPM Configuration

| **Name** | **Validations** | **Description** |
| Fallback CPM Value | - Default: Empty - Type: float - Mandatory | Specify a fallback floor value to be sent to Max for interstitial bidding. |
| Use Percentile | - Default: False - Type: Boolean - Mandatory if enabled | Enable to use percentile for CPM floor value. |
| CPM Percentile Configs | - Default: Blank - Multi-select Dropdown - Options: List of available configs - Mandatory if Use Percentiles is enabled | Select the relevant config from the dropdown. |
| If No Matching Configuration | - Default: Return Fallback value - Type: Dropdown - Options: Return fallback value, Return nothing - Mandatory if Use Percentiles is enabled | Select the relevant option if no matching config is available. |
| If No Percentile Available | - Default: Return Fallback value - Type: Dropdown - Options: Return fallback value, Return nothing - Mandatory if Use Percentiles is enabled | Select the relevant option if no percentile is available. |

* * *
### Usage of Percentile Config in both Static and Formula Floor Types
The Percentile configuration is designed to work with both Static and Formula CPM floor types.
**Static Floor Type + (Use Percentile = true)**
When the floor type is set to **Static** and the **Use Percentile** option is enabled:
- The system ignores the fallback static CPM and instead follows the percentile-based logic:
**Formula Floor Type + (Use Percentile = true)**
When the floor type is **Formula** , the behaviour depends on the fallback policy defined in the formula configuration:
- **If “If insufficient ad requests” = “Return Fallback Value”** :
- **If “If insufficient ad requests” = “Return nothing”** :
* * *
## Ad Slots Config Changes
### Configuring Static CPM Floors in Ad Slots
When configuring ad slots, a Static CPM Configuration section is displayed based on your selected CPM floor type.
**When Static CPM Configuration Appears**
This section is shown if:
- CPM Floor Type is set to Static or Formula, or
- CPM Floor Type is Waterfall and Level Type is Fixed
**Key Changes and Fields**
- Static floor CPM has been renamed to Fallback CPM value.
- The configuration section includes the following fields:
The behaviour of these fields is described [here](https://tripledotstudios.atlassian.net/wiki/spaces/KB/pages/4244537368/CPM+Percentile+Configuration#New-Fields-in-Static-CPM-Configuration).

* * *
### **Behaviour in Waterfall CPM Floor Type with Level Type as Multiplier**
- Static CPM configuration is not shown
- Existing multiplier logic remains unchanged
- User can still enter a CPM floor, but percentile logic is not applicable
* * *
## **Summary of Logic**
- Static CPM configuration appears for:
- Percentile logic and fallback behaviour applies consistently across all applicable types
- If Waterfall → Type = Multiplier, only multiplier logic is used (no percentile support)
* * *
Setting up Ad Units
Chunk #2
**Settings for Each Ad Unit**
- **IDs** (Dropdown from Ad Unit IDs based on platform and Ad Slot type).
- **Requests Limit Counter** (Integer, Default: 5).
- **Auto Retry & Sequential Fill** (Available for MAX and META mediation only. Not available for Google).
Refer to the [Ad Slots Ad Unit Fields Table](https://tripledotstudios.atlassian.net/wiki/spaces/KB/pages/4304109569/Setting+up+Ad+Units#Ad-Slots-Ad-Unit-Fields) for more details.
## **CPM Floor Settings**
- **CPM Floor Type:**

- **Formula** (CPM floor is calculated dynamically). See the [Ad Slots Ad Unit Fields Table](https://tripledotstudios.atlassian.net/wiki/spaces/KB/pages/4304109569/Setting+up+Ad+Units#Ad-Slots-Ad-Unit-Fields) for more details. Additionally, refer to the [Setting the CPM floor](/wiki/spaces/KB/pages/3705274372/Interstitials+Configuration#Setting-the-CPM-Floor) section for details on how the CPM floor is calculated.

## Ad Slots Ad Unit Fields
| **Field** **Description Validations** |
| **iOS Interstitial ID** | Shows Ad Unit ID configs with Platform=iOS and Ad Slot Type = Interstitial | - Type : Dropdown List - Default: Empty - Mandatory if displayed |
| **Android Interstitial ID** | Shows Ad Unit ID configs with Platform=Android and Ad Slot Type = Interstitial | - Type : Dropdown List - Default: Empty - Mandatory if displayed |
| **iOS Rewarded Videos ID** | Shows Ad Unit ID configs with Platform=iOS and Ad Slot Type = Rewarded video | - Type : Dropdown List - Default: Empty - Mandatory if displayed |
| **Android Rewarded Videos ID** | Shows Ad Unit ID configs with Platform=Android and Ad Slot Type = Rewarded video | - Type : Dropdown List - Default: Empty - Mandatory if displayed |
| **Request limit counter** | This counter controls the number of request client will make to get an Ad for specific Ad Unit. | - Type: Integer - Default: 5 - Mandatory |
| **Auto Retry** | Uncheck this box if you don’t want to retry loading ad units in case the first attempt to load the ad unit fails. If Retry is enabled, MAX will attempt the waterfall multiple times for a single Ad\_Request\_Interstitial event. This helps recover from temporary issues like timeouts or connection errors. If all retries fail, MAX returns Ad\_Request\_Fail. If Retry is disabled, MAX runs the waterfall only once and returns Ad\_Request\_Fail immediately if it fails. | - Enabled by default |
| **Sequential Fill** | Uncheck this box if you don’t want to enable sequential filling. Sequential Fill controls whether MAX should cache multiple ads in advance. Enabling it can increase overall fill rate. Please note this is a client-side setting and full configuration needs to be done on the Client. | - Enabled by default |
| **CPM Floor. CPM Floor Type** | Select the type for the CPM Floor. | - Type : Dropdown with options: Static, Formula, Waterfall - Default: Static - Mandatory |
| **Static CPM Configuration. Fallback CPM Value** | Specify a fallback floor value to be sent to the mediation platform for bidding. | - Type: Float - Default: Empty |
| **Static CPM Configuration. Use Percentiles** | Enable to use percentile for CPM floor value | - Type: Boolean - Default: false - If enabled, system displays additional section to configure CPM percentile config |
| **Static CPM Configuration. CPM Configurations** | Select from the list of predefined percentile configurations | - Type: Multi-select dropdown - Default: empty - You can delete any selected config - At least one config should be added - Available only if **Use Percentile = true** - If **Use Percentile** **= false** , setting is hidden - Display priority which is set for each config in the config name in the brackets |
| **Static CPM Configuration.If no matching configuration** | Select the return value if no matching configuration is available | - Type: Dropdown with the list of following values: - Default: Return fallback value - Available only if **Use Percentile = true** - If **Use Percentile** = false, setting is hidden |
| **Static CPM Configuration.If no percentile available** | Select the return value if percentile is not available | - Type: Dropdown with the list of following values: - Default: Return fallback value - Available only if **Use Percentile = true** - If **Use Percentile** = false, setting is hidden |
| **Formula Parameters. Formula Type** | Defines the type for calculating the formula. | Type: Dropdown with the following options: - Median - Average - Default: Median |
| **Formula Parameters.Use successful ad requests only** | Enable if you want to use only successful ad requests for calculation. | - Type: Boolean - Default: OFF - Available if CPM Floor Type = formula |
| **Formula Parameters.Min ad requests to apply formula to** | This field is used to provide minimum number of events with CPM that should be used to calculate CPM value for interstitials or rewarded videos. | - Type: Integer - Mandatory if CPM Floor Type = formula - Default: Empty - Min 1 - Max: 50 - Must be less than the value provided in the setting “Ad requests to apply formula to“ |
| **Formula Parameters.Percentage coefficient** | Specify the multiplier to minimise the Bid floor. | - Type: Float - Mandatory if CPM Floor Type = formula - Min: more than 0 - Max: 2 - Max number of characters after comma = 2 - Incase multiplier results in value with more than 2 characters after comma, GS rounds off the result using math rules. - (e.g. if we have as a result value 1,234 -\> round to 1.23 but if 1.235 -\> round to 1.24) |
| **Formula Parameters.If insufficient ad requests** | Defines the system behaviour when there is insufficient data for calculation. If “Return static value“ is selected, GS will send value from “Static floor CPM or Percentiles“. if percentile is enabled, GS will use percentiles. If percentiles are also insufficient GS will use Fallback value. If “Return nothing“ is selected, GS won’t send any value. | Dropdown with the list of options provided below: - Return fallback value - Return nothing - Default: Return fallback value |
| **Formula Parameters.Use static in case of failed requests** | Enable this in case you want to send static value instead of formula calculation when N latest events have failed. | - Type: Boolean - Default: OFF - Disabled if “Use successful ad requests only” = true |
| **Formula Parameters.Number of failed requests** | Specify a number of latest failed requests. If this number is reached, manually added static value or CPM based on percentiles will be used instead of formula calculation. | - Type: Integer - Default: empty - Disabled if “Use static in case of failed requests” = OFF - Mandatory and enabled if “Use static in case of failed requests“ = ON - Min: 1 - Max: 50 |
- **Waterfall** (CPM changes based on tiers, allowing flexibility).
| **Field Name** | **Description** | **Comments** |
| **Levels. Type** | Select the type of levels for waterfall multiplier type. | Type: Dropdown with the list of following options: - Fixed - Multiplier - Default: Fixed |
| **Levels.Type: Multiplier.CPM Floor** | Specify the CPM Floor Value based on the selected level type. | - Type = Float - Empty by default - Mandatory if Level is added and Level Type = Multiplier - Min: 0.0 |
| **Levels.Type: Fixed.Static CPM Configuration** | | |
| **Static CPM Configuration. Fallback CPM Value** | Specify a fallback floor value to be sent to the mediation platform for bidding. | - Type: Float - Default: Empty |
| **Static CPM Configuration. Use Percentiles** | Enable to use percentile for CPM floor value. Refer to this [user guide](https://tripledotstudios.atlassian.net/wiki/x/GID_-/) for more details. | - Type: Boolean - Default: false - If enabled, system displays additional section to configure CPM percentile config |
| **Static CPM Configuration. CPM Configurations** | Select from the list of predefined percentile configurations | - Type: Multi-select dropdown - Default: empty - You can delete any selected config - At least one config should be added - Available only if **Use Percentile = true** - If **Use Percentile** **= false** , setting is hidden - Display priority which is set for each config in the config name in the brackets |
| **Static CPM Configuration.If no matching configuration** | Select the return value if no matching configuration is available | - Type: Dropdown with the list of following values: - Default: Return fallback value - Available only if **Use Percentile = true** - If **Use Percentile** = false, setting is hidden - If **Return fallback** is selected → the **Fallback CPM value** will be applied. - If **Return nothing** is selected → **no CPM floor** will be used. |
| **Static CPM Configuration.If no percentile available** | Select the return value if percentile is not available | - Type: Dropdown with the list of following values: - Default: Return fallback value - Available only if **Use Percentile = true** - If **Use Percentile** = false, setting is hidden - If **Return fallback** is selected → the **Fallback CPM value** will be applied. - If **Return nothing** is selected → **no CPM floor** will be used. |