# Frequency Capping

Frequency capping is a feature that allows you to limit the number of impressions presented in your app over time. This can be useful to optimize user experience vs. revenue.

* Per default, no frequency capping is applied on any of your placements.
* You can configure frequency capping settings in our [Dashboard](https://dashboard.gravite.net/) in the section “Settings / Placements”.
* We encourage the use of server-side frequency capping settings as opposed to hard-coded frequency capping inside your app because it allows for more flexibility (you can change the capping without publishing your app again and without your own backend).

In the beginning, you need to click “Add Placement” in order to create the placements that you create inside your app and for which you want to configure frequency caps (you do not need to add placements where you don’t want to use frequency capping). Once your placement is created, you can change its frequency capping settings.

### Fullscreen / Rewarded Video

**App settings applied**

Default: “All applicable”. Please leave this default unless your account manager advises you to do it differently.

**Interstitial Frequency capping**

All of the following capping settings can be set in parallel, and they are applied in parallel. Example: show not more than 1 impression per session, not more than 2 per hour, and not more than 5 per day. And leave at least 30 minutes of time between 2 impressions.

* 'Impressions per Session'
  * The maximum amount of (ad spaces and) impressions during one user session.
  * A session starts when the app is opened and ends when the user quits the app or moves it into the background.
* 'Impressions per Hour'
  * The maximum amount of (ad spaces and) impressions during one hour.
  * The app does not need to be active for this one hour, the hourly cap is valid across any amount of sessions during the hour.
* 'Impressions per Day'
  * The maximum amount of (ad spaces and) impressions during 24 hours.
  * The app does not need to be active for these 24 hours - the cap is valid across any amount of sessions during 24 hours
* 'Min. Delay'
  * minimum waiting time between two impressions (therefore, it is not relevant for the 1st impression of a session).

### Native

AATKit doesn’t handle frequency capping automatically for native ads. However, `NativeAdPlacement` provides an API for checking if the frequency capping has been reached for this placement.

{% tabs %}
{% tab title="Java" %}
```java
boolean isFrequencyCapReached = nativeAdPlacement.isFrequencyCapReached();
```
{% endtab %}

{% tab title="Kotlin" %}
```kotlin
val isFrequencyCapReached = nativeAdPlacement.isFrequencyCapReached();
```
{% endtab %}
{% endtabs %}

`isFrequencyCapReached()` checks for frequency capping parameters based on the placement configurations on the Gravite dashboard and returns true if the frequency capping has been reached. You can configure the native ad placement frequency capping parameters on the Gravite dashboard just like the fullscreen and rewarded video placements. If reached, you may decide not to present the next native ad right now.

### Banner

For banners, the frequency capping is limited to adjusting the refresh time between banner ads. The refresh time can be between 30s - 600s.
