Ad Pacing (Goals)
Set a goal on a Flight or Ad so Kevel paces delivery to it, and see how each goal type paces over a day, a month or the life of the Flight.
Overview
Ad pacing, or goals, refers to the automatic balancing of impressions for a Flight or Ad so that the campaign hits a desired metric over the course of its lifetime.
For instance, if you've negotiated a 30M impression deal with an advertiser over the month of June, Kevel's Ad Decision Engine will show the ad for 30M impressions over 30 days and throttle the campaign so that it shows the ads evenly each day, or ~1M impressions a day.
This is an automated, constantly-updating feature that helps ensure your advertisers hit their goals.
NotesKevel's pacing aims for 100% of goal. Delivery varies with traffic, and very small goals can overshoot by a large percentage.
Ad Goals are different from Ad Caps. You use Ad Goals to pace ads evenly over time. It involves complex logic and intra-day adjustments. Ad Caps, on the other hand, don't use logic. They'll just turn off an ad if it hits the cap.
Choosing a goal type
Most setups only need one of these. Find the row that matches what you sold, and follow the link for the detail.

| If you sold... | Use | Notes |
|---|---|---|
| A number of impressions by a date | Impressions | The usual choice for a guaranteed impression deal. Requires an End Date. |
| A number of clicks by a date | Clicks | Paced against recorded clicks, so delivery depends on CTR. Requires an End Date. |
| A number of conversions by a date | Conversions | Requires conversion tracking to be set up, and an End Date. In the API, also set IsTrackingConversions to true. The UI does this for you. |
| A fixed budget over a fixed period | Revenue | Requires an End Date. See Revenue goals. |
| A budget to spend per day, indefinitely | Daily Revenue | Resets at midnight. Use without an End Date. See Revenue goals. |
| A budget to spend per month | Monthly Revenue | Resets on the 1st of each month. Works without an End Date. See Revenue goals. |
| A share of available inventory, not a number | Percentage | Sets ad weight directly, with no pacing adjustments. See Percentage goal behavior. |
If you need a hard cutoff rather than even pacing, use a cap (typically with a Percentage goal) instead of a paced goal. See Ad Capping.
What you can pace against
You set Goals at the Flight level. Where ad-level goals are enabled for your network, you can override them per Ad. For more information on how to set them, see Flights.
When setting a goal through the API, GoalType takes one of the following values:
GoalType | Goal Type | Paces against |
|---|---|---|
1 | Impressions | Recorded impressions |
2 | Percentage | A share of the lottery, set directly as weight |
3 | Click | Recorded clicks |
7 | Conversion | Recorded conversions |
8 | Revenue | Total revenue earned by the End Date |
9 | Daily Revenue | Revenue earned per day |
10 | Monthly Revenue | Revenue earned per calendar month |
NoteRevenue goals are also available on Flights set to auction bidding.
Auto-Balancing
Auto-balancing is the process of dynamically reallocating a flight's goal among the ads within a flight. Ads in a flight will use the overall flight goal to determine whether or not they should continue serving. For example, given a flight with 3 ads and an impression goal of 1000 impressions, all 3 ads have an opportunity to serve throughout the lifetime of the flight. If, for example, 2 out of the 3 ads included additional targeting that limited their eligibility for selection, the 3rd ad without additional ad level targeting could pick up the slack. This avoids the potential under delivery that would otherwise occur because of those ad level targeting restrictions.
By default, every new ad you create in a flight uses auto-balancing. You can also change the ad distribution settings.
Percentage goal behavior
Percentage goals allow you to directly set the weight of the ads in a flight. The weight in a lottery priority is "how many lottery balls" in the lottery a given ad has. The more lottery balls the ad has, the more likely it will be served in a decision. Each lottery priority contains its own set of lottery balls.
Other goal types like Impressions, Clicks, Daily Revenue, etc. use adjustments in the engine to set and reset the weight of ads. These adjustments happen behind the scenes to keep the ads on target to meet their performance goals (like a certain amount of clicks) by their end date.
Percentage goals use no such adjustments. The percentage goal directly translates to the weight of the ad. This is useful if you have no performance targets, if you want to regulate the pacing of flights manually, or if you want an even distribution of flights in the lottery priority.
For example:
- Setting three flights in a lottery priority with a goal of Percentage:100 will give these flights an equal number of lottery balls in the lottery.
- Setting a single flight in a lottery priority with a goal of Percentage:50 will give the flight 50% of the lottery balls it needs to be eligible for every decision. This means that in 50% of lotteries the decision will fall through to the next priority.
- Setting two flights in a lottery priority with Percentage:100 and one flight with Percentage:200 will cause the latter flight to serve twice as often as the former flights since it has double the weight (lottery balls). This translates to the latter flight eligible for 50% of decisions in the priority and the former two eligible for 25% each.
Bear in mind that targeting, capping, etc. influence selections in a lottery priority beyond percentage goals. Therefore, percentage goals will not necessarily translate into the percentage of flights served in a priority.
Percentage goals behave somewhat differently depending on priority type:
| Priority Type | Percentage Goal Behavior |
|---|---|
| Lottery | The goal translates directly to weight (number of lottery balls) |
| Auction | A flight's percentage goal is fixed at 100%, so its ads bid in every auction. A percentage goal on an individual ad is the probability that the ad bids. |
To pace a flight in an auction priority, use a Revenue, Daily Revenue or Monthly Revenue goal.
Revenue goals
Revenue goals balance the impressions a flight or ad serves so that it earns a specific amount of revenue, either by its End Date, each day or each month.
There are three types of revenue goals:
-
Revenue goals (
GoalType8): Sets the amount of revenue a flight or ad should earn before its End Date. An End Date is required. -
Daily Revenue goals (
GoalType9): Sets the amount of revenue a flight or ad should earn per day, in the time zone of the flight (or UTC if no time zone is set). A daily goal resets at midnight. -
Monthly Revenue goals (
GoalType10): Sets the amount of revenue a flight or ad should earn per calendar month, in the time zone of the flight (or UTC if no time zone is set). A monthly goal resets at midnight on the first day of the month.
When to use each revenue goal
If your flight has a fixed budget over a fixed period, we recommend using a Revenue Goal with an End Date. (You can additionally limit how much revenue that flight should generate per day by applying a daily Budget Cap.)
You should use a Daily Revenue goal if your flight needs to serve indefinitely and you expect it to generate roughly the same amount of revenue per day. We recommend using the Daily Revenue goal type without an End Date. If you need to limit the total budget of the flight, we recommend applying a lifetime Budget Cap instead.
Use a Monthly Revenue goal if you sold a budget per month, or if you sold a daily amount but need the month's total met even when some days fall short. In that case, set the goal to the daily amount multiplied by the number of days in the month. A Daily Revenue goal treats every day on its own and never makes up a short day. With a Monthly Revenue goal, the day after a short day can earn more than the daily amount, because the shortfall is spread over the days left.
| Condition | Recommended Goal |
|---|---|
| Fixed budget | Revenue |
| Fixed time period (has an End Date) | Revenue |
| No fixed time period | Daily Revenue |
| No fixed budget | Daily Revenue |
| Budget per month | Monthly Revenue |
How revenue goals pace
This section describes goals set on a flight. Some networks pace differently, for example networks that balance each ad on its own weight. If delivery does not match what is described here, ask your Kevel account team.
Every revenue goal paces inside a cycle: the whole duration of the flight, a calendar month, or a day. Within a cycle, a short day is planned over the rest of the cycle where the goal allows it. Nothing carries over from one cycle to the next.
| Goal type | Cycle | Pacing works toward | A day that falls short | End Date |
|---|---|---|---|---|
Revenue (8) | The duration of the flight | The total across the flight | Is spread over the rest of the flight. | Required |
Daily Revenue (9) | One day | The daily amount, one day at a time | Isn't made up. The next day aims at the same daily amount. | Not required |
Monthly Revenue (10) | One calendar month | The monthly amount across the month | Is spread over the days left in the month. Nothing carries into the next month. | Not required |
Daily and Monthly cycles run from midnight to midnight in the time zone of the flight, or UTC if no time zone is set, unless the start or end date of the flight falls inside them. A new day or month starts with the full goal amount, and any shortfall from the cycle that ended is dropped. When the goal of a Daily or Monthly cycle is met, the flight stops serving until the next day or month starts. A Revenue goal has a single cycle, so once it is met the flight is finished.

Pacing plans a cycle across its days. With capacity-aware pacing, which is in preview, it plans around how much traffic each day of the week brings.
Daily revenue goals
A Daily Revenue goal paces each day on its own. The goal starts again at its full amount at midnight, and the flight stops serving for the rest of the day once it has earned the daily amount. A short day is not made up: the next day aims at the same amount, because the goal is a daily amount rather than a share of the month. If you need a short day recovered later, use a Monthly Revenue goal instead.
With capacity-aware pacing, pacing keeps what it has learned about the daily traffic of the flight across midnight, and plans the day at what that day of the week can deliver. Once it has that history, it plans the day as a straight line across the hours the flight can serve.
Monthly revenue goals
A Monthly Revenue goal paces the monthly amount across the calendar month, in the time zone of the flight.
- A short day is spread over the days left in the month. Each day can spend up to what was left of the month at the start of that day, divided by the days the flight has left to serve, today included. A day with traffic to spare stops near its share, so a short day is made up gradually.
- The start and end dates of the flight can shorten a cycle. A flight that starts on September 21 has a first cycle of September 21 to 30, and the full monthly amount is due in those ten days. To avoid this, start the flight on the 1st of a month.
- Revenue already earned in the month counts toward the goal. It counts whatever the goal type was when the flight earned it. If the goal is lower than what the month has already earned, the flight stops until the next month. This can happen when you switch a flight to a Monthly Revenue goal part way through a month, or lower the goal. Switch at the start of a month, and keep enough room above the revenue earned so far for the days that remain.
- With capacity-aware pacing, the plan expects the traffic of each day of the week. Pacing expects quiet days such as weekends and does not chase them. The daily limit above still sets how much any one day can spend, so a shortfall is still made up gradually.
The start of a new day or month
When a cycle starts again, pacing starts it with the full goal and the delivery counts at zero. Delivery can be lower than usual for the first hours of a new day or month while pacing settles, and it recovers on its own. Capacity-aware pacing keeps what it has learned about the daily traffic of the flight across the start of a new day or month, and is intended to reduce this.
Changing goals near the start of a cycle
A change to a flight makes pacing rebalance at that moment. Near the start of a month, that can briefly lower the pace of the flight. To avoid this:
- Set next month's goal after midnight, not before. Midnight is in the time zone of the flight. A change made on the last day of a month applies to that month: a higher goal can be spent in the hours that are left, and a goal lower than what the month has already earned stops the flight until the next month.
- Apply it soon after midnight. The goal on the flight at midnight sets the first day's limit. A goal saved hours later paces the first hours against the old amount.
- Avoid bulk changes to Monthly Revenue flights in the hour before midnight.
- Save once, and wait. Each save triggers a rebalance, so don't save again while delivery recovers.
Changing a goal during a cycle
What a change does depends on the goal type:
- Daily Revenue. The new amount applies to the whole day, including what the flight has already earned. Lowering it below today's revenue stops the flight until midnight.
- Monthly Revenue. The increase or decrease is spread over the days left, so a large raise late in the month makes for large days. Lowering the goal below what the month has already earned stops the flight until the next month, as described above.
- Revenue, and the other lifetime goals. What the flight has already delivered still counts. Pacing aims at the new goal and dates. Lowering the goal below what has been delivered stops delivery once the change takes effect.
Daily caps
A daily budget cap on a flight applies on top of any goal type: the flight stops for the day when it reaches either limit. With a Daily Revenue goal, the goal already limits each day to the daily amount, so a daily budget cap changes delivery only when it is lower than the goal. With a Monthly Revenue goal, a daily budget cap limits how much any day can spend, including a day that makes up a shortfall. A daily cap in impressions, clicks or conversions also applies, whatever the goal amount.
Daily caps on a campaign or an advertiser also apply. They reset at midnight GMT, not in the time zone of the flight. See Time Zones.
Capacity-aware pacing (preview)
Early preview featureThis feature is currently in early preview stage. It may not be available to all Kevel customers, and details described may change before the feature is generally available.
Capacity-aware pacing plans the days of a cycle around how much traffic each day of the week brings. Without it, pacing assumes every day can take its share of what is left, and corrects after a quiet day. It helps most with a Revenue goal that spans weeks and with a Monthly Revenue goal. To use it, ask your Kevel account team to turn it on for your network, or for selected Campaigns or Flights.

- What it learns. A total for each day of the week, from the flight's own recent delivery, with the latest weeks counting for more. The amount is an estimate, from the past delivery of the flight, of how much it can deliver on that day of the week. Pacing records this whether or not capacity-aware pacing is on, so a flight that is already running often has history on the first day.
- What it does with it. A quiet day is planned at what it can deliver, and the rest of the goal is spread over the other days. In the chart, the pale bars show what each day can deliver. The four weekend days are planned at 2,000 each and the other 52,000 is spread over the ten weekdays, about 5,200 each on average, which is 900 more than an even share.
- Within a day, it does not plan for busy hours. The plan is a straight line across the hours the flight can serve, and pacing keeps correcting toward it as delivery comes in. It learns how much traffic a whole day brings, not which hours are busy.
- It settles after about a week. A flight with no usable completed day, and a day of the week that pacing has not seen yet, keep the pacing used today, apart from any daily cap the flight has. If you change the time zone, day parts or day targeting of a flight, pacing starts learning again.
- Caps. The daily and lifetime caps of a flight are part of the plan. Campaign and advertiser caps are not planned for, but they are still enforced when ads serve.
- Where it does not apply. It applies to every goal type except Percentage that has an End Date, and to Daily Revenue and Monthly Revenue goals, which do not need one. Percentage goals, flights set to full speed, flights that are being taken over, goals set on an ad, and flights that run for over a year keep the pacing used today.
- It does not see other targeting. The plan reads the dates, day targeting and day parts of the flight. A date you close with any other targeting is planned as a normal day, so the flight can end short.
- It cannot create traffic. The plan aims at the smaller of the goal and what the traffic can deliver, so a goal above the inventory still falls short. With steady, plentiful traffic, expect little change.
- Ranking is unchanged. It decides how much of the goal to aim for each day, which can change how often a flight is let into an auction. Once a flight's ads are in an auction, they rank on Ad Rank, which is eCPM multiplied by relevancy score.
Goals set on an Ad
A goal that you override on an individual ad uses a different calculation from the one above. For Daily Revenue and Monthly Revenue goals, set the goal on the flight.
Setting up goals - API
The two fields are the same for every goal type: GoalType selects the metric, and a second field carries the amount. The name of that second field differs between Flights and Ads:
| Level | Endpoint | Goal type field | Goal amount field |
|---|---|---|---|
| Flight | Create Flight | GoalType | Impressions |
| Ad | Create Ads | GoalType | Goal |
CautionOn Flights the goal amount field is called
Impressionswhatever the goal type. Set it to the number of clicks, conversions, or the budget amount as appropriate. It is not limited to impression goals.
On the Flight level (API)
When Creating a Flight:
- Set
GoalTypeto the value for your metric, from the table above - Set
Impressionsto the goal amount
For example, a $5,000 budget to be spent by the flight's End Date:
{
"GoalType": 8,
"Impressions": 5000,
"EndDateISO": "2026-10-31T23:59:00Z"
}On the Ad level (API)
Ad-level goals are available when your network has Ad Goals turned on. When Creating/Editing an Ad:
- Set
GoalTypeto the value for your metric, from the table above. A non-zeroGoalTypemakes the ad override the goal of the flight. - Set
Goalto the goal amount
To return the ad to auto-balancing, set GoalType to 0 or null.
Setting up goals - UI
On the Flight level (UI)
- Create a new Flight, or open an existing one.
- In General Settings, choose the metric you want to pace against in the Goal Type dropdown. The options depend on the Priority of the flight: in an Auction priority, only Percentage and the revenue goals are available.
- Enter the goal amount in the Goal Amount field. For revenue goals, enter a whole number in the currency of your network.
- Save.

On the Ad level (UI)
Ad-level goals are available when your network has Ad Goals turned on. Ask your Kevel account team if you do not see the options below.
- Add a New Creative/Ad.
- Open Delivery Settings and set Distribution to Override.
- In the Goal Type dropdown, choose the metric you want to pace against.
- In the Goal field, enter the goal amount. For revenue goals, enter a whole number in the currency of your network.
- Save.

How pacing works under the hood
Goals are delivered by continually adjusting each ad's weight and running lotteries to decide which ads may serve or bid. If you are troubleshooting delivery, or want to understand why a particular ad won or lost, see How Pacing and Balancing Work. In an auction priority, the weight sets how often an ad is let into the auction. See Pacing and auctions.
Updated 4 days ago
