Offer click cap per period
How to limit the number of clicks an offer gets per hour, day, week, month or all time, and choose where clicks go after the cap.
A click cap limits how many new clicks an offer gets per hour, day, week, month or all time. After the cap, the tracker sends new clicks to the fallback offer or to another offer in the same stream. You set the cap in the offer window, in the Offer click cap («Лимит кликов оффера») block; the owner, admin, team lead and designer can edit offers.
You need an offer and a stream that contains it. The number of sales is limited by a separate setting — the daily sales cap.
What counts as a click
- A click counts if the tracker assigned this offer to it. One click takes one slot in the cap.
- Every visit through a campaign link is a new click. A repeat visit by the same visitor takes another slot, including when visitor binding is on.
- The count is shared by the offer across all streams and campaigns.
- In a stream with the Offer («Оффер») action, the slot is taken on entry through the campaign link.
- In a stream with the Landing → offer funnel («Воронка ленд→оффер») action, the moment is set by the When to choose the offer («Когда выбрать оффер») field — see When the offer is chosen. With Before the landing page is shown · shares fixed on entry («До показа лендинга · доли фиксируются на входе»), the slot is taken on entry, before the landing page is shown. With After a click on the landing page · the choice is fixed before the redirect («После клика на лендинге · выбор фиксируется перед переходом») — on the first transition from the landing page.
- The count starts from zero when the cap is set for the first time or a new count is started. Clicks the offer got earlier are not added to the counter.
In a campaign with a JS challenge, the offer of the stream chosen for the click is assigned on entry, before the browser check. The slot is taken at the same moment and stays taken whether the visitor passed the check or not. The offer of the final stream does not take a slot while the check is shown. It takes one only when the visitor failed the check and got this offer — once per click.
A second slot is not taken by:
- the visitor returning after the JS challenge;
- a transition from the landing page to the offer assigned to the click on entry;
- repeat transitions of the same click from the landing page.
A taken slot is not released:
- if the page did not open after the offer was chosen or the response ended with an error;
- if the visitor saw the landing page but did not go on to the offer — with Before the landing page is shown · shares fixed on entry;
- if the visitor went from the landing page through an
{offer:ID}link to another offer: that offer takes a slot too, and the first offer's slot stays taken; - if the click did not pass the JS challenge: the slot is taken before the browser check;
- if, with Before the landing page is shown · shares fixed on entry, the assigned offer reached its sales cap while the visitor was on the landing page: on the transition the replacement takes a slot, and the first offer's slot stays taken.
Set the cap
- Open the Offers («Офферы») section.
- Click the offer name — the Edit offer («Изменить оффер») window opens. For a new offer, click + Offer («+ Оффер»): the Create offer («Создать оффер») window has the same block.
- Select the Offer click cap checkbox — it is above the Sales cap per day («Лимит продаж в день») field. Four fields appear under the checkbox.
- Fill in the fields — they are described in the table below.
- Click Save («Сохранить»), or Create offer in the new offer window.
While the checkbox is not selected, the offer has no click cap. A media buyer does not open the offer window, so the block and the counter are not shown to them.
Block fields
| Field | What to enter | After you select the checkbox |
|---|---|---|
| Clicks per period («Кликов за период») | A whole number from 0 to 1,000,000,000. With 0 the offer gets no new clicks | 1000 |
| Period («Период») | Hour («Час»), Day («День»), Week (from Monday) («Неделя (с понедельника)»), Month («Месяц») or All time («За всё время») | Day |
| Period time zone («Часовой пояс периода») | A time zone in IANA format used to calculate the period boundaries, for example Europe/Moscow. Typed in manually, case-sensitive | UTC |
| Count start · UTC («Начало отсчёта · UTC») | The date and time from which the offer gets clicks under the cap. Entered in UTC, not in the period time zone. Until this moment comes, the offer gets no clicks | The current moment |
Under the fields there is a hint: “A shared cap for all campaigns. Before the count starts and after the cap, the stream's fallback offer is used. Changing the period, time zone or start begins a new count; changing the number keeps the counter.” («Общий лимит для всех кампаний. До начала отсчёта и после лимита используется резервный оффер потока. Смена периода, часового пояса или начала запускает новый отсчёт; смена количества сохраняет счётчик.»)
In the Edit offer window, under the hint, you see the line “Reserved in the current period: N” («Зарезервировано в текущем периоде: N») — how many slots are taken in the current period — and the Start a new count («Начать новый отсчёт») button. The number is read when the window opens: until it is received, the line shows “Loading counter…” («Загрузка счётчика…»). To refresh the number, close the window and open the offer again.
The offer list does not show the click cap: a label like 50/день (50 per day) refers to the sales cap.
How the period is calculated
Periods are calendar periods. Their boundaries are calculated by the clock of the time zone in the Period time zone field. At the start of a new period, the count starts from zero.
| Period | When the count starts from zero |
|---|---|
| Hour | At the start of every hour |
| Day | At midnight |
| Week (from Monday) | On Monday at 00:00 |
| Month | On the 1st at 00:00 |
| All time | Never: the count runs without resetting until a new count is started |
- After the cap is first saved and after a new count, the count starts from zero. The first period is incomplete: it ends at the nearest boundary.
- If the Count start · UTC field holds a moment that has not come yet, the offer gets no clicks before it: they go to a replacement, as after the cap. The first period then runs from that moment to the nearest boundary.
- If the field holds a moment in the past, clicks received before the cap was saved are still not counted.
- The count start is entered in UTC, while period boundaries are calculated in the period time zone.
Example
The settings are: Clicks per period — 500, Period — Day, Period time zone — Europe/Moscow, Count start · UTC — October 12, 09:30. In UTC+3 this is 12:30. The cap was saved before this moment.
| Time (UTC+3) | What happens |
|---|---|
| Before 12:30 on October 12 | The offer gets no clicks; they go to a replacement |
| From 12:30 to midnight on October 12 | The first period: the offer gets up to 500 clicks |
| From 00:00 on October 13 | A new period: the count starts from zero, and the offer again gets up to 500 clicks |
What happens after the cap
For each new click, the tracker chooses the offer like this:
- Chooses an offer by the stream's rotation rules — by weight or by another selection mode. An offer that has reached its sales cap is not given out at this step.
- Checks the click cap of the chosen offer. If there is a slot, the click gets this offer.
- If there are no slots, takes the offer from its Fallback offer when the cap is reached («Резервный оффер при достижении лимита») field — provided the fallback offer is added to the same stream.
- If the fallback offer has reached its sales cap or click cap, takes its own fallback offer, and so on down the chain.
- If the fallback offer is not in the stream or the chain has ended, chooses by the rotation rules among the other offers of the stream. Offers with weight
0do not take part here if the stream has an offer with a weight above zero. The exception: the chain ended on a fallback offer that reached its sales cap, and none of the offers with a weight above zero has a slot left for this click. Then the click gets an offer with weight0that has not reached its sales cap. - Checks the click cap of the new offer and repeats steps 3–5 until the click gets an offer or the offers run out.
There are no slots in three cases: the cap is reached, the count has not started yet, or the Clicks per period field is 0. The tracker treats an offer whose counter is lost or unavailable the same way — see If the counter is lost or unavailable.
Each offer is checked only once for a click. So a chain in which two offers are set as fallbacks for each other does not loop.
In the Unvisited, by weight («Непосещённые по долям») and Sequential («Последовательно») modes, the choice at step 5 continues in the same visitor history: an offer without a slot is skipped and is not counted as given out — see Paused and capped offers.
A fallback offer gets clicks only if it is added to the same stream and has the “active” («активен») status. Its weight can be 0. How to choose a fallback offer and add it to the stream — see Choose a fallback offer and Add the fallback offer to the stream.
On a transition from the landing page, the replacement is chosen in the same order. With visitor binding on, a bound offer with no free slots is replaced the same way.
If there are no free offers
When there is no replacement, the visitor gets a 404 response. The click is recorded in the statistics and does not go to another stream of the campaign.
In a funnel with After a click on the landing page · the choice is fixed before the redirect, the click cap is checked on the transition: the visitor sees the landing page, and the transition link responds with 404.
A stream with one offer returns 404 after the cap until the next period starts, and with the All time period — until the cap is raised or a new count is started. To avoid losing traffic, add a fallback offer without a cap to the stream.
Click cap and sales cap
You can set both caps for one offer. They are counted separately: the offer stops getting new clicks when either of them is reached.
| Property | Click cap | Sales cap per day |
|---|---|---|
| What is counted | Clicks assigned the offer | Conversions with the sale status |
| Period | Hour, day, week, month or all time | A day |
| Time zone | The Period time zone field | The Time zone · IANA («Часовой пояс · IANA») field |
| When the tracker learns about the event | At the moment the offer is chosen | From the network's postback |
- Both caps share one fallback offer — the Fallback offer when the cap is reached field.
- The sales cap is checked first, then the click cap. An offer not given to a click because of the sales cap does not take a slot in the click cap. The exception is a funnel with Before the landing page is shown · shares fixed on entry: if the sales cap was reached while the visitor was on the landing page, the click goes to a replacement on the transition, and the slot taken on entry stays taken.
- The sales cap is soft: sales arrive later than clicks. The click cap never gives out more slots than the set number: the slot is taken before the page is shown.
- Stream click caps are a different setting. They limit entries into a stream and are checked earlier, when the stream is chosen.
Changing the settings and a new count
| What was changed | What happens to the count |
|---|---|
| Clicks per period | The count is kept. The offer gets clicks while fewer slots are taken than the new number. If the same number or more are taken, it gets no clicks until the next period |
| Period, Period time zone or Count start · UTC | A new count begins: the count starts from zero |
| Other offer fields | The count does not change |
| The Offer click cap checkbox cleared | After saving, the offer has no click cap |
- The new count begins after you click Save.
- The previous count cannot be brought back: if you return the previous values after a change, the count starts from zero again.
- If you clear the checkbox and select it again, the fields return to the values from the Block fields table, and a new count begins after saving.
- Clicks counted before the new count stay in the reports.
- A copy of the offer created with the Copy («Копировать») button gets the same cap settings and its own count from zero.
- Visitors who opened the landing page before saving go on to the offer under the new cap settings — see Transition from the landing page after a cap change.
To start the count over without changing the period and time zone:
- Open the Edit offer window.
- Click Start a new count.
- Confirm the question “Start a new count after saving? The cap already used will stay in the report history but will not go into the new counter.” («Начать новый отсчёт после сохранения? Уже использованный лимит останется в истории отчётов, но не войдёт в новый счётчик.»)
- Click Save.
The button puts the current moment into the Count start · UTC field.
Transition from the landing page after a cap change
A transition link from a landing page is valid for 24 hours, so a visitor can go on to the offer after the cap has been changed. On the transition, the slot is taken under the cap set for the offer at the moment of the transition, not at entry through the campaign link.
| What was changed after entry | What happens on the transition |
|---|---|
| The number in the Clicks per period field | The new number applies |
| A new count was started, including one replacing a lost counter | The slot is taken in the new count |
| The cap was removed | No slot is taken |
| A cap was set | A slot is taken |
This is how a slot is taken by the offer the click gets on the transition:
- the offer is chosen on the transition — with After a click on the landing page · the choice is fixed before the redirect;
- the visitor went through an
{offer:ID}link to another offer; - the offer was given out as a replacement.
The offer assigned to the click on entry — with Before the landing page is shown · shares fixed on entry — has already taken its slot. It does not take a second slot on the transition: such a click does not go into a count started after entry, and a cap set after entry does not apply to it.
If by the time of the transition the offer is no longer “active”, has been sent to the trash, or is not in any enabled stream of an active campaign, the slot is taken under the cap settings at the moment of entry.
If the counter is lost or unavailable
The tracker does not restore the click counter on its own. Without data on taken slots, the offer is closed to new clicks.
The counter is lost
If the counter data was not preserved, the Edit offer window shows the line “Counter lost. The offer is closed until a new count.” («Счётчик утрачен. Оффер закрыт до нового отсчёта.»)
- The offer gets no new clicks. They go to the fallback offer or to another offer of the stream — in the order from What happens after the cap.
- If there is no replacement, the visitor gets a
503response. - Saving the offer without changes or a new number in the Clicks per period field does not bring the counter back.
For the offer to get clicks again, start a new count: click Start a new count, confirm and click Save.
The new count also applies to visitors who opened the landing page earlier: their transitions take slots in the new count — see Transition from the landing page after a cap change. Until a new count is started, their transition link responds with 503 if there is no replacement.
The counter is unavailable
While the tracker cannot read the counter, the offer also gets no new clicks. In a stream with the Offer action, they go to a replacement without a sales cap; if there is no such replacement, the visitor gets a 503 response. A replacement with a sales cap is also closed during this time: the sales count is stored in the same place as the click counter. In a stream with the Landing → offer funnel action, entry through the campaign link responds with 503 even if there is a replacement: the tracker cannot save the transition from the landing page. After recovery, the count continues from its previous value; no new count is needed. During this time the offer window may show the line “Counter temporarily unavailable” («Счётчик временно недоступен»).
After a restore from a backup
A tracker backup includes the counters — see What a backup contains. After a restore, the count returns to its value at the moment the backup was created; if a new period has started since then, the count starts from zero. If after the restore the offer window shows the line “Counter lost. The offer is closed until a new count.”, start a new count.
The tracker recalculates the sales count for the daily cap from the statistics on its own. The click count is not recalculated this way.
Limits
- An offer has one click cap with one period. You cannot set an hourly and a daily cap at the same time.
- The cap is shared by all streams and campaigns that have the offer. A separate cap for one campaign cannot be set.
- The Clicks per period field takes a whole number from 0 to 1,000,000,000.
- The number in the “Reserved in the current period: N” line may differ from the offer's clicks in reports: the counter counts slots taken in the current cap period, not clicks for the report period.
- The stream selection check does not take the offer click cap into account: it shows only the stream.
- When the cap is reached, the panel creates the notification “Offer … reached its click cap” («Оффер … набрал лимит кликов») — see When a notification appears. With a cap of
0, no notification is created.
Check
- Open the Offers section and click the offer name.
- In the Offer click cap block, find the line “Reserved in the current period: N” and note the number.
- Close the window and open in your browser the link of a campaign whose stream contains this offer.
- Open the offer window again. If the click got this offer, the number grew by 1.
- After the cap, click Statistics («Статистика») on the campaign page, open the Click log («Лог кликов») tab and choose the Today («Сегодня») period.
- Check the Offer («Оффер») column: new clicks show the fallback offer.
You can check the replacement on a test offer: enter 1 in the Clicks per period field. The first click gets this offer, and the next one in the same period goes to the fallback offer.
If something went wrong
If the offer window did not close after you clicked Save, the changes were not saved. Close the window: the error text is shown above the offer list. If a block field is empty or a number is out of range, the browser stops the save: the hint is shown next to the field itself, and there is no text above the offer list.
The cap is reached, but clicks do not go to the fallback offer
Check that the fallback offer is added to the same stream, has the “active” status and has not reached its own click and sales caps.
The offer gets no clicks although the cap is not reached
Possible reasons:
- the count has not started yet: the time in the Count start · UTC field is in UTC and has not come yet;
- the Clicks per period field is
0; - the counter is lost — see The counter is lost;
- the offer has reached its sales cap per day;
- the offer is paused or archived.
Counter lost. The offer is closed until a new count.
The panel shows “Counter lost. The offer is closed until a new count.”: there is no counter data, and the offer gets no new clicks. Click Start a new count, confirm and click Save. The line also appears when the counter could not be created while saving the cap.
Counter temporarily unavailable
The panel did not get the counter state. Close the window and open the offer later. If the line does not go away, check the redis card on the System status page.
invalid cap time zone
The panel shows “invalid cap time zone” («неверный часовой пояс лимита»): the value in the Period time zone field was not recognized. Enter the time zone name in IANA format, case-sensitive, for example Europe/Moscow, without spaces at the start or end. The value Local and names longer than 64 characters are not accepted.
specify the cap start date
The panel shows “specify the cap start date” («укажите дату начала лимита»): the Count start · UTC field has a year earlier than 2020 or later than 2200. Correct the date. If the year has five or more digits, the panel shows invalid json instead of this message.
click cap: 0–1000000000
The server responds “click cap: 0–1000000000” («лимит кликов: 0–1000000000»): the number of clicks is less than 0 or greater than 1,000,000,000. The form in the panel does not send such a value; the message occurs when you work through the API.
cap period: hour/day/week/month/total
The server responds “cap period: hour/day/week/month/total” («период лимита: hour/day/week/month/total»): the period is not one of the five values. The message occurs when you work through the API.
The visitor gets a 503 response
The tracker could not read the cap counter, and the stream has no other offer for the click. On a transition from the landing page, the response text is offer selection unavailable. Check the counter line in the offer window and the The counter is lost and The counter is unavailable sections.