Frequency Capping



Frequency Capping requires the use of the UserDB and involves you sending the UserKey in the user field for each request for Ad Decision Request. There is also a way to frequency cap with standard JS ad code if you aren't using the Decision API. More information is here.


Frequency Capping enables you to set the maximum number of times a given advertiser, campaign, flight, or ad can be displayed to any particularly user in a particular time period.




Set caps by hour, day, or minute. Max duration is 180 days, 168 hours, or 4400 minutes.



We also recommend reading Ad.Product's Frequency Capping Guide - Why Every Ad Server Needs It.

How Frequency Capping Works

Kevel frequency caps are based upon the user parameter in the Decision API Request. This UserKey needs to be the same in every request for that user, as this is the key Kevel uses to count impression views.

You therefore will need to be able to store on your end information about the user and their UserKey, and then pass along this ID in future requests.

If you don't want to generate IDs yourself, Kevel will randomly generate and return a GUID if the user field is blank. You can then save the GUID you get in the response, tie it to the user, and use that for future requests.



Kevel uses this UserKey ID to store and check the # of times the user has seen an ad. If the field is blank - or the UserKey isn't the same - Kevel will not be able to accurately frequency cap.



Under GDPR, frequency capping is not enabled for European Union ad viewers unless tracking consent is passed in the request. European Union viewers who do not consent will receive repeat ad views.

Frequency Capping Opt-Out

You can set frequency capping at the advertiser, campaign, flight, and ad level. However, there may be instances where you want to exempt certain ads from contributing to the frequency count.

For instance, let's say in general you have settings so that a user will see no more than 1 ad from the same advertiser per day. However, the advertiser wants to run a special campaign that targets every available impression, regardless of caps. In this case, you can opt-out the campaign from its advertiser-level frequency capping rules. Users would continue to see 1 ad a day from that advertiser's other ads, but the ads within the special campaign would have no cap.

In the API, you can opt-out campaigns, flights, and ads by setting DontAffectParentFreqCap to true.

Frequency Capping and GDPR Non-Consent Requests


  • A request is subject to GDPR regulation AND
  • The user has not consented to tracking AND
  • The ad selected by the decision engine is frequency capped

Then one of two ad serving behaviors will take place:

  • Strict Frequency Capping: The ad will not be shown to the user. No cookies will be set in the user's browser.
  • Lenient Frequency Capping (default): The ad will be shown to the user, but it will not be frequency capped. No cookies will be set in the user's browser.

Whether the decision engine uses strict or lenient frequency capping is set per network. Contact Kevel support for more details about your network.