A flight is a collection of ads grouped under a campaign. Most targeting and delivery rules are set at the flight level.

These rules include items such as:

  • Impression goals
  • Tracking methods
  • Dates to run
  • Targeting



Refer to the Flights API documentation API documentation for more information about how to use the Flights endpoints.

campaign flights

Flights UI Page

You can access information about existing flights by clicking on the dropdown menu under Campaigns, or navigating to the Campaigns tab and selecting the campaign you would like to view.


In the Flights UI you may search for a select a specific flight by filtering flights filters like name, status, rate, etc.

Create and Edit a Flight via our UI

To create a new flight, or edit an existing flight, follow the steps listed below.

  1. Click on a specific Campaign's page.
  2. Click 'Add a Flight to this Campaign'.
  3. Enter all information for the flight and save.

There are several different options you can choose when working with flights. By clicking on the pencil icon, you can edit a flight. If you select the three dots next to the pencil icon, you can perform any of the following actions:

  • Duplicate Flight
  • Generate Ad Code
  • View Report

Β Bulk Edit Flights

You can change certain properties of one or more Flights in one go. This is useful for when you want to make the same change across many Flights, such as extending the End Date on all Flights in a Campaign.

  1. Begin by selecting one or more Flights by checking the checkboxes to the left of each row in the Flights list.
  2. Click the 'Edit N flights' button in the top right of the Flights list.
  3. Select the amendments you would like to make across all selected Flights.
  4. Click 'Save' - you will be given an opportunity to review the changes that will be made.
  5. Click 'Save' again once you have confirmed the changes.

Archive a Flight

To ensure that completed flights do not clutter your campaigns page, you can either:

  • Make sure that every flight in the campaign has expired; or
  • Archive the flight and/or campaign.

If the flight End Date is after the current date, or if the flight has no End Date, you will be able to unarchive it. To expire a flight, set the End Date to a date later than the current date.



Once a campaign is expired, click on the "Show Expired and Archived" button on the Campaigns page to view it again.



You can only unarchive flights if the flight has no End Date, or it has not yet reached its End Date.

Currently, you can only archive flights in Kevel UI (version 1.0). To archive a flight, select the campaign and choose 'Archive Flight' from the tools dropdown menu.

Additionally, you can archive a Flight via the Update Flights API endpoint.

Delete a Flight via the UI

To delete a flight:

  1. Click on the 'X' next to the flight in either the Campaign or Flights page. You will see a dialog box appear, prompting you to confirm you want to delete the flight.
  2. Select 'Delete' to delete the flight.

Duplicate a Flight via our UI

You may also wish to duplicate an existing flight so you can use the information in other campaigns.

You have multiple options when duplicating a flight:

  • You can give the flight a new name, or use "Copy of ".
  • You can duplicate the flight in the current campaign, or duplicate it in another campaign under the same advertiser.
  • You can duplicate both the creatives and ads from the parent flight, link the new ads in the duplicated flight to the parent creatives, or duplicate the flight without any ads at all.
  • You can optionally set a new start or end date for the flight.

Select your options and click "Save".


Manage Flights via our Management API

The Kevel Management API provides several endpoints for managing flights including:

To delete a flight use the Update Flights endpoint and set IsDeleted = true.

Flight Fields

Please refer to the Kevel API documentation for more info about the different Flights endpoints you can use.

WhatDescriptionAPI Field
Name The name of the flight. The max length is 100 characters.name (string)
Categories Field used for interest targeting. More information about this field can be found here. Uses UserDB.Name under Category object. Requires use of Create Flight Categories endpoint
Priority The Priority you want to give to the flight.PriorityId
Start DateThe date when you want the campaign to start. Kevel uses GMT for start/end dates.StartDateISO
End Date The date when you want the campaign to end. Only Percentage and Daily Revenue Goal Types can be set without an End Date. Kevel uses GMT for start/end dates.EndDateISO
Rate The field used to estimate the revenue you have made from your advertisers.RateType

1 = Flat
2 = CPM
3 = CPC
4 = CPA View
5 = CPA Click
6 = CPA View & Click
Price The amount an advertiser is paying you, based on the rate.Price
Track Conversions The field used to track conversions (actions post click). If this is enabled, there will be a box that, if clicked, will provide the conversion tracking code.IsTrackingConversions
Goal Type The metric you sold the deal at to influence how Kevel throttles the Flight in order to hit goal by end date.GoalType

1 = Impressions
2 = Percentage
3 = Click
7 = Conversion
8 = Revenue
9 = Daily Revenue
10 = Monthly Revenue
Goal Amount The number associated with the Goal Type metric for the system to aim for.Impressions
Cap Type The hard limits specified for when a flight should or should not serve.CapType

1 = Impressions
2 = Clicks
3 = Conversions
4 = Revenue
Daily (Cap Type) The number associated with Cap Type for a daily cap.DailyCapAmount
Lifetime (Cap Type) The number associated with Cap Type for a lifetime cap.LifetimeCapAmount


Rates and prices are used to estimate the revenue you have made from your advertisers. These fields do not affect how often a flight is served, nor do they reflect actual payouts.

First, you select Rate, or how you are charging the advertiser:

Flat = Advertiser pays a flat rate for entire flight
CPM = Advertiser pays a fixed amount for every thousand impressions
CPC = Fixed amount per click
CPA (View) = Fixed amount for a view-through conversion (someone converts after seeing ad)
CPA (Click) = Fixed amount for a click-through conversion (someone converts after clicking ad)

Then, input Price, the amount an advertiser is paying you, based on the Rate.



A Rate of "CPC" and a Price of "$0.50" means that you will be paid $0.50 for every ad click. In reporting, if you drive 1K clicks for this flight, the revenue will be reported as $500.



Rate and Price are required fields in the UI, but not in the API request when creating a Flight. If you are not tracking revenue, simply set Rate = "CPM" and Price = "$0.00" in the UI.




In the API, the Goal Amount field is called impressions, even if it refers to percentage, click, or revenue

With Goal Type and Goal Amount, you define what metric you sold the deal at, and at what total amount. These fields also influence how Kevel throttles the ads, so the flight hits its goal by the end date.

For instance, if you have negotiated a 3M impression deal with an advertiser for the month of June, you will set Goal Type to "Impressions" and Goal Amount to "3,000,000".

Kevel's engine will then show the ad for 3M impressions over 30 days and throttle the campaign so that it shows the ads evenly each day, or ~100K impressions a day.



The algorithm recalculates impressions delivered daily. For example, if a weekend delivers 25K impressions, the system will then aim to deliver more than 100K impressions/day moving forward.

For Goal Type, you can choose between:

  • impressions
  • clicks
  • conversions
  • percentage (of the priority)
  • revenue (dollars)
  • daily revenue (dollars)
  • monthly revenue (dollars)

"Percentage" refers to what percent of impressions from the priority the flight should win.

For example, if you have an advertiser who wants to take over the site, you could use the Sponsorship Priority (#1, the highest), create a flight, and set the Goal Type to "Percentage" and Goal Amount to 100%. This means the advertiser will win 100% of impressions on the site.



The maximum Goal Amount is 2147483647.



If you set up different flights targeting the same priority AND they have a combined percentage goal over 100%, Kevel will decide a winner using a lottery based on the relative percentage goal amount.

For instance: if Flight A is at 100%; and Flight B is also at 100%. Kevel splits them evenly.



Percentage goals can be above 100% in order to serve flights proportionally to each other. For example, you could set one at 100% and one at 150%. The second one will show 60% of the time (150%/250%).



If you set a percentage goal for a creative in a flight, the creative will serve that percentage of requests to the flight. If you set a percentage goal for a flight, the flight will serve that percentage of requests to the priority.




Do not set a CapType of 0 if you are not using it. Make sure it's null.



Caps may over-serve by 2% in normal trafficβ€” this can happen due to natural traffic variations.

Caps are hard limits for when a flight should or should not serve.

You set them at the Daily and/or Lifetime value and can cap by Impressions, Clicks, Conversions, or Revenue.

For example, you have an advertiser who doesn't want more than 1M impressions a day. In which case, you set Cap Type = "Impressions" and Daily = "1,000,000".



Unlike Goals, Caps do not regulate the frequency of impressions to meet a goal over time. They are simple limits, shutting off a flight as soon as it reaches its goal.

Caps are especially useful when you want to use both Percentage Goals and Impression Caps.

For example, an advertiser may purchase a campaign that serves to 100 percent of your priority's traffic, but must not serve more than 200,000 impressions in total, or 20,000/day. In this case, you would set:

Goal Type = "1"
Goal Amount = "100"
Cap Type = "1"
Lifetime = "200000"
Daily = "20000"



Caps can be used with or without an End Date.



For Revenue (or Budget) caps, the amount is in dollars.

Additional Cap Behavior

When a cap is set on a flight, the ad balancer will periodically check to see how much progress has been made towards the cap. It will then project when the cap is expected to be reached. Unlike a goal, the balancer will NOT change how often an ad serves. However, the closer an ad is to meeting its cap, the more often the balancer will check. For example, in the final projected minute before an ad reaches its cap, the balancer will check the ad's status about once per second before shutting off the ad.

Because the balancer projects when a cap will be reached, unexpected traffic can skew the projection and cause the ad to overserve. Scenarios where served impressions etc. can exceed the cap are:

  • Another flight in the same priority or higher priority stops serving. This redirects impressions to the capped flight. Unless the capped flight is approaching its cap and the balancer is checking very frequently, the surge of traffic can send the flight past its cap.
  • The cap is set too low for the flight's normal traffic. In this case, it is possible for a flight to exceed its cap before the balancer checks the cap for the first time.

To prevent flights from exceeding their caps:

  • Be aware of when flights that consume large amounts of traffic stop serving, either through a scheduled end time or when they are disabled by ad ops. If necessary, add additional targeting to the capped flight so it is not overwhelmed with impressions.
  • Never set a cap that can be met in less than one hour of normal traffic.


The Creatives tab lists the creatives/ads associated with the Flight.


Targeting Fields

The Create Flights endpoint has a deeper breakdown of the API fields for Flight targeting. The sections below go into a high-level detail about the targeting options at a Flight level as available in the Kevel UI.

Behavioral Targeting

Behavioral targeting enables two features: Interest/Behavioral Targeting and Excluding Ads Based on Behavior. Clicking these options will not do anything unless you have UserDB enabled and are sending persistent IDs in the user object in the Decision API Request.


Keyword Targeting

Keyword targeting enables you to serve ads to placements that contain matching keywords passed in the request. See here for more information.


With the Create Flight endpoint, you may send these keywords via the keywords parameter.

Custom Targeting

Custom targeting is a powerful targeting tool that enables you to target (1) custom fields you pass in the request, or (2) reserved keys. Learn more here.


With the Create Flight endpoint, you may send these queries via the CustomTargeting parameter.

Frequency Capping

Frequency capping stops showing ads to users based on how many ads they have already seen. Learn more here.


With the Create Flight endpoint, you may send Frequency Caps using the parameters of FreqCap, FreqCapDuration, FreqCapType, and DontAffectParentFreqCap.

Site/Zone Targeting

This option enables you to target by Sites and/or Zones you have created.


Geo Targeting

Geo-targeting enables you to target users based on their current location. You can include or exclude locations based on Country, Region, or Metro/DMA Code (the latter for the United States only). Learn more here.


With the Create Flight endpoint, you may send these properties via the geotargeting object.

Day Parting

Hour / day parting enables you to show ads only during certain hours of the day, or certain days of the week. For more information about day parting, please refer to the day parting technical documentation, which can be found here.



Distribution is a way of determining ad delivery within a flight. For more information on distribution, please see the technical distribution technical documentation, which can be found here.