Diagnostics: why a click went to “white”
Where to see the cloaking decision on a click and how to tell from the reason text what to fix.
The cloaking decision on a click is visible in three places: in the click window, in the Traffic («Трафик») log and in reports. Start with the click window in the campaign statistics. Owners and admins can see the Traffic log.
Click window: the Cloaking section
- Open the campaign in the Campaigns («Кампании») section.
- Click Statistics («Статистика»).
- Go to the Click log («Лог кликов») tab.
- Click the row of the click.
- Find the Cloaking («Клоака») section in the window that opens.
To find a click by subid, enter it in the Search subid («Искать subid») field and click Find («Найти»). The search covers the period selected to the right of the tabs.
| Row | What it shows |
|---|---|
| Result («Результат») | “passed to money” («прошёл на money») — cloaking let the visitor through; “sent to white” («завёрнут на whitepage») — sent them to “white”; “sent to JS check” («отправлен на JS-проверку») — the server checks are passed, and there is no JS check decision yet |
| Stage («Этап») | “server checks” («серверные проверки») or “JS check (behavior/fingerprint)” («JS-проверка (поведение/фингерпринт)») — the stage at which the decision was made |
| Scoring («Скоринг») | Only for the JS check stage: the score and the outcome, “human” («живой») or “bot” («бот») |
| Reasons («Причины») | The server check reason text or the JS check signal codes — see the sections below. If there are no reasons, the row isn't shown |
| Details («Детали») | An explanatory text. For the JS check — the score and the threshold, the time zone by IP and in the browser, the fingerprint check result and the browser signals |
The decision is stored for 7 days. The Status («Статус») row with the value “cloaking wasn't applied (or the record expired)” («клоака не применялась (или запись истекла)») means there is no decision for the click: the click is older than 7 days, or cloaking was turned off in the campaign at the time of the click.
If the result is still “sent to JS check” and the stage is “server checks”, there is no JS check decision for the click. This happens when the browser didn't send a response: the visitor closed the page too early, or JavaScript didn't run. Without a response, the visitor stays on the intermediate page — see JS challenge and scoring.
The same window shows the values the checks worked with:
- the Bot («Бот») row in the ID / Data («ID / Данные») section;
- the Type («Тип») and User Agent rows in the Device («Устройство») section;
- the Connection type («Тип соединения») and Country («Страна») rows in the Connection / GEO («Соединение / ГЕО») section;
- the link parameters in the Tokens («Токены») section.
Rows with an empty value aren't shown in the window.
Server check reasons
The server checks run in order, and the first one that fails goes into the Reasons row. After you fix one reason, the click may stop at the next one.
| Reason text | What it means | What to check |
|---|---|---|
| “bot/moderation by UA or connection (…)” («бот/модерация по UA или коннекту (…)») | The click is recognized as a bot. The signal code is in parentheses | The codes are explained below |
| “data center/proxy/VPN: connection_type=…” («дата-центр/прокси/VPN: connection_type=…») | The Block proxy / VPN / Tor («Блокировать прокси / VPN / Tor») checkbox is on, and the connection type is vpn, tor or proxy. A data center address is filtered out earlier, as a bot with the datacenter code | The connection type comes from the IP2Proxy database |
| “no required platform click-id: require_params=…” («нет обязательного click-id платформы: require_params=…») | The link had none of the listed parameters with a real value: the parameter didn't arrive, arrived empty or still held the macro text. In the last case, the reason ends with the note “(parameter=value — unreplaced macro, not a value)” («(параметр=значение — неподставленный макрос, не значение)») | The parameter in the ad link and the list in the Ad platform — only let through with its click-id («Платформа залива — пропускать только с её click-id») block |
| “GEO outside the list: country=…, allowed=…” («гео вне списка: страна=…, разрешены=…») | The visitor's country isn't in the list of countries from the GEO («Гео») conditions of the target streams | Where cloaking gets the countries. An empty value after страна= means the country couldn't be determined by IP |
| “device outside the list: type=…, allowed=…” («устройство вне списка: тип=…, разрешены=…») | The device type isn't selected in the Allow devices («Пропускать устройства») block | The selected types. unknown means the device couldn't be determined from the User-Agent |
Codes in parentheses for the “bot/moderation…” reason:
| Code | Signal | What to check |
|---|---|---|
ua_bot, ua_signature | The User-Agent is recognized as a bot or contains a built-in bot signature | The User Agent row in the click window |
empty_ua | The User-Agent is empty, or neither the browser nor the OS could be determined from it | The User Agent row in the click window. With an empty User-Agent, the row isn't shown |
datacenter | The IP belongs to a data center according to the IP2Proxy database. This applies even when the Block proxy / VPN / Tor checkbox is cleared | The Connection type row — hosting |
custom_list | A match with your bot list by User-Agent or IP | The lists in Settings → Bots and GEO («Настройки → Боты и гео») |
The built-in signatures and bot list rules are on the Bot detection and custom bot lists page.
JS check reasons
At the JS check stage, the Reasons row lists the codes of the triggered signals, separated by commas. Each signal adds points, and the decision is shown in the Scoring row: “human” or “bot”. A click that passed can also have codes — then the total score stayed below the threshold. The codes, points and threshold are explained on the JS challenge and scoring page.
Two codes send the visitor to “white” regardless of the score:
timezone_mismatch— the browser's time zone differs from the time zone by IP by more than an hour. Both values are in the Details row.device_fp_other_country— Device fingerprint (anti-moderation) («Фингерпринт устройства (анти-модерация)») is on, and this device has already visited from another country.
The challenge_unavailable code means that the JS check couldn't be started for the click. The visitor got the response of the final stream — see Where filtered traffic goes. In the click window, the result is “sent to white”, the stage is “server checks”, there is no Scoring row, and the Details row says “JS check unavailable (storage failure): visit sent to white without a check” («JS-проверка недоступна (сбой хранилища): визит отправлен на whitepage без проверки»).
The Traffic log
The log records click processing while the Log («Логировать») toggle is on. It is off by default.
- Open the admin panel and select Logs («Логи»).
- Go to the Traffic tab.
- Turn on the Log toggle.
- Wait up to 15 seconds — that's how long the setting takes to apply.
- Send a test click or wait for traffic.
- In the Search («Поиск») field, enter the click's subid, the visitor's IP or the word
Cloak.
Cloaking entries:
[Cloak server] Завёрнут на whitepage до челленджа. Причина: …— the server checks failed. The reason text is the same as in the click window. Before this line, the entry has headers with the IP and the requested address with its parameters. There is no subid in the entry: look for it by IP or by the wordCloak.[Cloak challenge] SubID …— the JS check decision. The lines of the entry: “Decision” («Решение») with the score and threshold, “Scoring reasons” («Причины скоринга»), “DeviceFP”, “Time zone” («Таймзона»), “Signals” («Сигналы»), “Outcome: money” («Итог: money») or “Outcome: white” («Итог: whitepage»).[Cloak challenge] JS-проверка недоступна (сбой хранилища), визит отправлен на whitepage. SubID: …— the JS check couldn't be started; in the click window, the reason ischallenge_unavailable.
Each recorded click produces one more entry: the selected stream and a User info line with the subid, IP, country, connection type, device type and bot flag. For a click filtered out by the server checks, this entry shows the final stream.
The log keeps the last 2000 entries, and it is shared by the whole installation. Look for a click right after the visit. The entry format is described on the System log, postbacks and traffic log page.
Reports: how much traffic is filtered out
In the report builder, cloaking shows up in:
| Where | Name | What it gives |
|---|---|---|
| Grouping, Data («Данные») block | Cloaking | 1 — the click passed the server checks, 0 — it was filtered out by them |
| Grouping, Device block | Bot | 1 — the click is recognized as a bot, 0 — it isn't |
| Grouping, Connection («Соединение») block | Proxy («Прокси»), Connection type | Proxy: 1 — the connection is from a data center or goes through a VPN, Tor or proxy. Connection type: hosting, vpn, tor, proxy or an empty value |
| Filter, Data part | Cloaking (passed) («Клоака (прошёл)»), Bot, Using proxy («Используя прокси») | Choose Yes («Да») or No («Нет») |
| Column | Bots («Боты») | The number of clicks recognized as bots |
To find out which traffic is filtered out, add the Cloaking grouping together with the Country, Device or Connection type grouping.
The Cloaking grouping and the Cloaking (passed) filter reflect only the server checks:
- a click that passed them but was filtered out by the JS check or got the
challenge_unavailablereason stays passed in the report — check the outcome in the click window or in the Traffic log; - in campaigns with cloaking turned off, all clicks count as passed.
Stream selection check
The Check stream («Проверить поток») button on the Streams («Потоки») tab shows which stream a visitor with the given country, device and other parameters will get, without recording a click. The Check “white” selection («Проверить выбор whitepage») checkbox shows the stream for filtered traffic. The cloaking checks themselves and the JS check aren't run in this window. The procedure is on the Stream selection check page.
Common causes of losing real traffic
The result is “passed to money”, but the visitor got “white”
Cloaking let the click through, but no target stream matched by filters, schedule or click cap, and the click got into the final stream by the regular rules. Check the conditions of the target streams with the Check stream button.
All traffic is filtered out with the “GEO outside the list” reason and an empty country
The country by IP isn't being determined. Check the status of the databases on the Tracker geo databases page.
The “no required platform click-id” reason on ad clicks
The click arrived without the parameter selected in the ad platform block, or with macro text instead of a value — for example fbclid={fbclid}: the platform didn't substitute a value into the link. In that case, the reason has the note “unreplaced macro, not a value” («неподставленный макрос, не значение»). The parameters the click arrived with are shown in the click window, in the Parameters (sub_id) («Параметры (sub_id)») and Tokens sections. Compare them with the list in the Ad platform — only let through with its click-id block.
The “bot/moderation… (datacenter)” reason with the blocking checkbox cleared
After the IP2Proxy database is loaded, data center addresses are always treated as bots. The Block proxy / VPN / Tor checkbox adds proxies, VPN and Tor to them.
The device_fp_other_country reason when you check your own link
The tracker remembers the country of a device's first visit for 30 days, and this memory is shared by all campaigns of the installation. While the record is stored, a visit from the same device from another country gets “white” in any campaign with the fingerprint turned on — see Device fingerprint.
The timezone_mismatch reason for real visitors
The time zone on the visitor's device and the time zone determined by their IP differ by more than an hour. Both values are shown in the Details row. How the comparison works is covered in the Time zone check section.
Filtered visitors get 404
The campaign has no matching stream of the Final («Замыкающий») type — see Where filtered traffic goes. Such a visit isn't recorded in the statistics, so it isn't in the click log. The reason for filtering is visible in the Traffic log, in the [Cloak server] entry.