В этой статье рассказывается, как с помощью простого скрипта можно оперативно выявлять нулевые апрувы в Keitaro и уведомлять об этом команду через Telegram. Приведён реальный кейс и пошаговое описание решения.
Предыстория…
Ситуация, с которой мы столкнулись, произошла примерно через 7 дней после запуска новой ПП (партнёрской программы). Мы завели новую ПП и начали активно лить трафик — около 300 лидов в день. В какой-то момент баер сообщил, что получил нулевой апрув.
При анализе логов в Keitaro выяснилось, что постбек действительно пришёл со значением payout=0
. После обращения в ПП получили ответ, что система настроена так, что если IP или телефон не соответствуют целевому ГЕО пользователя, то апрув считается системой нулевым. Несмотря на то, что нулевой апрув был оплачен, ситуация повторялась практически каждый день.
ПП предложили установить строгую маску на номер, но при этом мы бы потеряли значительную часть апрувов. Нам было предложено, чтобы менеджер ежедневно вручную корректировал суммы, но это решение оказалось нерабочим и манагер просто забил железо-бетонный болт.

Решение: автоматизация через Telegram-бота
Чтобы не вручную искать нулевые апрувы по всем компаниям, было решено написать Telegram-бота, который будет проверять все апрувы. Если сумма апрува окажется меньше заданного порога, бот отправит сообщение в чат с баерами.
Основные шаги решения
- Настройка S2S постбека в Keitaro.
Чтобы не отслеживать вручную все компании, в Keitaro необходимо навесить S2S постбек на источник (или на конкретную кампанию). Затем следует сохранить источник с обновлением во всех нужных компаниях. Пример URL постбека:
https://ваш-сайт/index.php?campaign_name={campaign_name}&adset_name={{adset.name}}&ad_name={{ad.name}}&offer_id={offer_id}&country={country}&revenue={revenue}&sub_id={subid}
Этот URL передаёт параметры: название кампании, название адсета и объявления, ID оффера, GEO, сумму апрува и SubID.

2. Написание Telegram-бота.Для написания бота подробности по созданию и получению API токена можно искать отдельно — здесь важна сама логика обработки постбека и отправки уведомлений.
Ниже приведён пример PHP-кода, который обрабатывает данные из постбека и, при обнаружении суммы апрува меньше 4, отправляет уведомление в Telegram:
<?php ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); // Получение параметров из GET-запроса $campaign_name = $_GET['campaign_name'] ?? ''; $adset_name = $_GET['adset_name'] ?? ''; $ad_name = $_GET['ad_name'] ?? ''; $offer_id = $_GET['offer_id'] ?? ''; $country = $_GET['country'] ?? ''; $revenue = (float) ($_GET['revenue'] ?? 0); $sub_id = $_GET['sub_id'] ?? ''; // Массив мотивационных сообщений для разнообразия уведомлений $messages = [ "✅ Жизнь коротка, успей налить себе чаю!", "✅ Кто рано встаёт, тот апрувчик найдёт!", "✅ Падай семь раз, апрувь восемь!", "✅ Сегодня твой день, не забывай об этом!", "✅ Апрув — это маленькая победа над миром!", "✅ Улыбайся, пока работаешь, это пугает конкурентов!", "✅ Всё получится, даже если не сразу!", "✅ Апрув сегодня — миллионы завтра!", "✅ Не сдавайся, апрув уже близко!", "✅ Рим не за один день строился, а апрув — тем более!", "✅ Каждый апрув — это шаг к мечте!", "✅ Работаешь усердно? Апрув уже в пути!", ]; $random_message = $messages[array_rand($messages)]; // Если обязательные параметры отсутствуют, завершаем выполнение скрипта if (empty($campaign_name) || empty($sub_id)) { http_response_code(200); echo "Missing or invalid parameters"; exit; } // Если сумма апрува меньше порогового значения (например, меньше 4$), отправляем уведомление в Telegram if ($revenue < 4) { $telegram_url = "https://api.telegram.org/токен_бота/sendMessage"; $telegram_data = [ 'chat_id' => 'айди_чата', 'text' => "<b>💸 Маленький, но апрув!</b>\n\n" . "<b>🏢 Компания:</b> {$campaign_name}\n" . "<b>📊 Адсет и Объявление:</b> {$adset_name}_{$ad_name}\n" . "<b>📋 ID оффера:</b> {$offer_id}\n" . "<b>🌍 GEO:</b> {$country}\n" . "<b>💰 Сумма:</b> {$revenue}$\n" . "<b>🔖 SubID:</b> {$sub_id}\n\n" . $random_message, 'parse_mode' => 'HTML', ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $telegram_url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($telegram_data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_exec($ch); curl_close($ch); } http_response_code(200); echo "OK";
Объяснение работы скрипта
- Получение параметров: Скрипт принимает данные, передаваемые через GET-параметры (название кампании, названия адсета и объявления, ID оффера, GEO, сумма апрува и SubID).
- Проверка параметров: Если обязательные параметры (например, название кампании или SubID) отсутствуют, скрипт завершает выполнение.
- Проверка суммы апрува: Если значение
revenue
оказывается меньше 4 (это может быть нулевой апрув или слишком маленькая сумма), происходит отправка уведомления. - Отправка уведомления: Через API Telegram отправляется сообщение в указанный чат с подробной информацией о сделке и случайным мотивационным сообщением для разнообразия.

Автоматизация поиска нулевых апрувов в Keitaro с помощью Telegram-бота позволяет оперативно выявлять и реагировать на проблемные сделки. Такой подход сокращает время на ручной контроль, помогает избегать потерь и позволяет команде быстрее корректировать ситуации с апрувами.
Чтобы начать использовать данное решение:
- Настройте S2S постбек в Keitaro на нужном источнике или кампании.
- Разместите приведённый PHP-скрипт на вашем сервере (например, на поддомене).
- Настройте параметры Telegram-бота (API токен и ID чата).
Если у вас возникнут вопросы по настройке или интеграции, стучитесь в ТГ — буду рад помочь!