Ads refer to Creatives that are tied to a Flight. The Ad bucket enables even deeper targeting by Creative vs Flight level. It is possible to create a Creative with the API without tying it to a Flight (in which case it isn't technically an Ad).




For a full list of Kevel's Ads API endpoints, click here.

Ads/Creatives UI Page

The Ads page shows all ads for your account and enables you to filter by name, advertiser, campaign, and other filters.


Creating a new ad/creative, or editing an existing ad/creative, takes you to the following page:


Creating and Editing an Ad

To create or edit an existing ad, perform the steps listed below.

  1. Click 'New Creative' in the Creatives section on a Flight page.
  2. Fill in the Creative Details and Delivery Settings sections
  3. Save
2764 1430

You can then edit by clicking the pencil, delete by pressing the 'X', and duplicate/get ad code by pressing the three dots.

Creating with API

Please refer to our Create Ads endpoint. To first create an ad, you'll need to create a Creative using the UI or the Create Creative API endpoint. Alternatively, you could add a Creative object to the Create Ads request and create both the Creative and Ad at the same time.

CampaignIdThe Campaign's ID
CreativeOne creative object should be passed with "Creative ID".
FlightIdThe Flight's ID
IsActiveWhether ad should be eligible to serve

All other fields are optional.


    "Creative": {

To edit, use the Update Ad endpoint to update Ad details.

Creating or Editing an Ad Using an Existing Creative

When you create a new Ad in a Flight, you are simultaneously creating a new Creative. However, you can also create a new Ad using an existing Creative, i.e. using a Creative created in another Flight under the same Advertiser, or a Creative created via the API.

For example, if your Advertiser reuses the same Creative across different Flights, you can create new Ads with that existing Creative by linking it to a new Flight.

  1. In the Creatives section of the Flights page, click the "All Creatives for this Advertiser" tab. You will see non-deleted Creatives under the Advertiser that are eligible for the Flight (i.e. their AdType exists in the Flight's Channel).
  1. Click "Add to Flight".
  2. The Creative Details for that Creative will appear. You can optionally update any Creative settings here. If you do, changes to Creative Details will apply to the Creative across all Flights where it is linked. Be careful!
  3. Click "Save" when you are ready to create the Ad, i.e. link the Creative to the Flight.
  4. The Ad you just created will appear in the "Creatives In This Flight" tab, along with its Ad ID.

Note that any edits you make to the Creative Details for that Ad will also apply to the Creative across all Flights. Edits to Delivery Settings (such as Ad-level Site Targeting) will apply only to that particular Ad.

General Settings of an Ad



Most users use the Flight's default targeting settings - so edit these fields only if want to give specific ads additional control.

An Ad consists of two main aspects:

(1) Its Creative Details, such as ad size, image file, click URL. For Creative Details set-up instructions, please visit our Creatives Doc.


(2) Delivery Settings, such as distribution, frequency capping, and keyword targeting. You do not have to set these, as by default ads take the Flight's targeting settings.


Below are the Delivery Settings fields you can edit with the UI and API:



If you are using ad level targeting (start/end dates, site/zone, custom targeting and/or keywords), then it is recommended to also use ad level Distribution settings.

NameDescriptionAPI Field
Override Flight Start/End Dates If you want to set different start or end dates than the FlightIsStartEndDateOverride (boolean), StartDateISO (string), EndDateISO (string)
Distribution If you want to override how the ad is displayed. Auto-Balanced is default setting and means ad engine will balance this creative with others, so all creatives have an equal opportunity to serve. With the UI you can Override this to input its own Goal Type and Goal. With API you can also override and set this to a specific Percentage or Impressions number.Either DistributionType + Percentage or Impressions


Update GoalType and Goal instead
Frequency Capping Limits how many times a user sees an ad. Instructions hereDontAffectParentFreqCap, FreqCap, FreqCapDuration, FreqCapType
Bid PriceUse this to set an Ad-level price or "bid". When set, this value will take precedence over the Flight's price value for this Ad.Price
Site Specific Use this to target an ad to a specific site, different from the rest of the flightSiteId
Zone Specific Use this to target an ad to a specific zone, different from the rest of the flightZoneId
Custom Targeting Targets custom key/value pairs passed in the request. Instructions hereCustomTargeting
Keyword Targeting Targets specific words passed in the request. Instructions hereActiveKeywords



When ad-level frequency capping and flight-level frequency capping are both set, the ad will be capped using the most restrictive setting. For instance, if ad-level capping allows an ad to serve 1 time per 24 hours, but flight-level capping allows for 1 time per 6 hours, we will only serve the ad to a user 1 time per 6 hours.

Troubleshooting Blank or No Ads



It can take up to 5 minutes for a new campaign, flight, or creative to start serving.

A blank ad means that Kevel has chosen not to fill an ad request with a creative, because there are no active creatives eligible to serve to that placement. Eligibility is determined by:

  • The ad size
  • The site
  • The zone
  • Keywords
  • Custom targeting
  • Caps and goals of the flight

To troubleshoot it, see below:

If the campaign, flight, or creative has a status of Healthy, but you still don't see ads on your site, use this checklist to troubleshoot:

In the Campaigns Tab

  • If a newly uploaded ad is not serving, did you make a change to a flight and not save the flight or creative? Try re-saving if you aren't sure
  • Does your creative work? Check the creative preview to ensure that it does
  • If your flight has a fixed impression goal, is the goal too small for the time period (for example, 100 impressions over 2 months)? The ad engine may be spacing out impressions too infrequently
  • Does the ad originate from a third party? Check that they are consistently serving the ad on their end
  • Do you have geo-targeting or keyword targeting that may prevent you from seeing the ad?
  • If other ads are serving and the one in question is not, is it ahead of schedule for its flight goal?
  • If other ads are serving and the one in question is not, do you have a lot of other flights with more specific targeting that are getting served first?
  • Have you checked that today is within the campaign/flight start and end date?
  • Has the advertiser been deleted?

In the Inventory Tab

  • Are both the script tag and the div tag in your site's code?
  • Does the div id match the id in the ad call (for example, "azk68760")?
  • Do the ad tags you generated match the size and zone targeting (if any) of the creative?
  • Did you make sure to generate ad code from within the correct site and place it on the same site?
  • Does the site belong to the same channel as the flight's priority?

In the Reports Tab

  • Are there higher priority flights that are capturing all the impressions for the placement? Run a report, and Group By Priority to see what is serving to that placement
  • If you have very many sites, it could be difficult to see a single creative show up on a site. Run a report and Group By Creative to see if impressions are being tracked



If you have followed this list and the ad still isn't serving, please contact our Kevel Support team ([email protected]).

Working With HTML5 Ads

Kevel does not currently support uploading a zipped file containing an HTML5 ad unit. Typically, you would need to store the creative contents on your own static server, and then notify Kevel of the location of the rendered HTML5 creative (e.g., static.somesite.com/html5/abc123.html).

Once Kevel returns the pointer to the statically hosted content, you will then need to wrap the content in an iFrame and then trigger the associated trackers.

The alternative to this approach is for you to store the minified HTML, CSS & JS within a HTML Creative. You will, need to upload the creatives or host them yourself, and then modify the HTML so that location is where the references to the image are hosted.