Статистика Telegram Ads по часам: почему её нет и как собрать

Вопрос «в какие часы льётся живое, а в какие мусор» закупщик задаёт себе постоянно, а кабинет Telegram Ads на него не отвечает. И это не потому, что вы плохо искали: часа как единицы там нет вовсе, ни в интерфейсе, ни в официальном API. Значит, собирать профиль суток придётся самому. Ниже о том, откуда берётся почасовой разрез и на каких ловушках ломается самодельный подсчёт. Всё проверено на живых кабинетах в сентябре 2026 года.
Почему в кабинете нет разреза по часам
Потому что график умеет ровно два масштаба. Справка Telegram говорит об этом прямо: статистика «able to be displayed in increments of minutes or days», то есть с шагом в минуты или в дни. Третьего значения не существует, и в самом кабинете переключатель периода тоже даёт только эти два варианта.
Минутный режим при этом живёт недолго: он показывает свежий отрезок, и сопоставить по нему вчерашнюю ночь с позавчерашней не выйдет. Дневной режим наоборот, схлопывает сутки в одну точку, и вся разница между тремя часами ночи и тремя часами дня в ней исчезает. Ровно в этом зазоре и живёт вопрос про часы.
Сторонние сервисы аналитики над Telegram Ads эту дыру тоже не закрывают: у тех, что мы проверяли, разбивка идёт по дням, неделям и месяцам. То есть дело не в том, что решение есть и вы его не нашли.
Откуда тогда берутся часы
Из пятиминутных срезов, если собирать их самому и складывать в часы. У официального API те же два интервала, что и у интерфейса: пять минут и сутки. Пятиминутная история при этом хранится долго, и это меняет дело. Мы забирали её у объявления почти годовой давности, созданного в октябре прошлого года, и она сошлась с дневной точкой без расхождений. Границу, за которой данные кончаются, нащупать не удалось: уперлись в возраст самих объявлений.
Почасовой разрез поэтому строится и вперёд, и назад: если вы начали считать сегодня, прошлые месяцы всё равно доступны. И день, когда ваш трекер лежал, перестаёт быть дырой в отчётах, его можно добрать задним числом. Подробнее про сам доступ к API и где взять ключ мы писали в отдельной статье.
Ловушка первая: нули вместо пропусков
Лента точек приходит сплошной. Если объявление шесть часов не крутилось, вы получите семьдесят две честные точки с нулями. Пропуска в данных не будет, и отличить «в этот час ничего не показывали» от «в этот час данных нет» по самой ленте невозможно.
Хуже того, текущий незакрытый час тоже добивается нулями до полного набора. В двадцать минут второго ночи за час, который идёт прямо сейчас, приезжают все двенадцать точек, и восемь из них нули просто потому, что это ещё не наступившее время. Мы на этом обожглись: вспомогательная проверка считала час закрытым по количеству точек, и была неверной. Пришлось убрать.
Ловушка вторая: серии графика разъезжаются
У графика в кабинете есть своя беда, и ловит её всякий, кто снимает цифры оттуда. Серии там приходят под безликими номерами, и их состав не зафиксирован. В августе 2026 Telegram молча добавил серию про просмотры видео, и она сдвинула все следующие вправо.
Разбор, привязанный к номеру серии, после этого показывал ноль кликов, а клики выдавал за действия. Лечится тем, что серии надо читать по подписи. Мы после этого случая так и сделали.
Что вообще даёт разрез по часам
Три вещи, ради которых это всё и затевается.
Первое: профиль суток. Видно, в какие часы стоимость целевого действия предсказуемо выше, а в какие трафик идёт дешевле. Для закупщика это прямое решение, когда включать и выключать связку. Само расписание показов в Telegram Ads есть, включается прямо в объявлении. Чего нет, так это цифр под него: какие часы выключать, кабинет не подскажет.
Второе: ловля мусора. Ночной всплеск дешёвых переходов, которые потом не превращаются ни во что, виден именно на почасовом разрезе. На дневной точке он растворяется в общем среднем.
Третье: проверка гипотез по гео. Если вы льёте на несколько стран, разница в часовых поясах превращает «средний результат по кампании» в кашу, и разобрать её можно только по часам.
Как построить профиль суток руками
Если инструмента под рукой нет, минимальный вариант считается за вечер. Берёте пятиминутные срезы за три-четыре недели, складываете их в часы по каждому дню, а потом усредняете одинаковые часы между собой. Получается двадцать четыре числа: сколько в среднем стоило целевое действие в каждый час суток.
Две оговорки, без которых профиль соврёт. Во-первых, считайте в часовом поясе аудитории, свой тут ни при чём: если льёте на несколько стран, профиль придётся строить отдельно по каждой, иначе пики размажутся. Во-вторых, на двух неделях один выброс перекашивает целый час, особенно если объявление крутилось неровно: выходные и будни ведут себя совсем по-разному.
Часы, где действие стабильно дороже среднего и выборка не пустая, придерживаем расписанием. Часы, где дешевле, добавляем бюджет. Профиль стоит перепроверять хотя бы раз в месяц, потому что аукцион меняется, а вместе с ним меняются и пики.
Честные границы
Чего у нас самих пока нет: почасового разреза по гео и автоматического применения расписания по найденным пикам. Профиль суток, карта «день на час» и разрез по папкам кабинета есть, остальное в работе.
Ещё одна оговорка стоила нам ложной тревоги. Сравнивать «до и после» по свежим данным нельзя без паузы: замер, снятый сразу после действия, показывает состояние до него. Мы так однажды насчитали несуществующую поломку автоматики, а с задержкой в несколько минут цифры сошлись полностью.
Почасовой профиль по всем кабинетам сразу мы показываем в Zaliv на отдельной странице, посмотреть можно в демо без регистрации.
Источники
- ads.telegram.org/getting-started - описание графика статистики: шаг в минутах или днях
- promoteapi.telegram.org - официальный API, откуда берутся пятиминутные срезы
- Официальный API Telegram Ads - где взять ключ и что он умеет