GuardLabs · демо-стенд

Защита Performance Max от скликивания

Подход, которым мы находим источник фрода в PMax и закрываем его до того, как он снова съедает бюджет: скрипт-автоисключение, дашборд по площадкам, чек-лист настройки аккаунта.

Как это работает

Три шага от «непонятно, откуда клики» до «площадка закрыта во всех кампаниях аккаунта».

1

Скрипт находит площадки

Ads Script раз в сутки выгружает отчёт по местам показа PMax, считает CTR, клики без конверсий, тип площадки (сайт/приложение) и сравнивает с порогами.

2

Подозрительное — в исключения

Всё, что превышает пороги (аномальный CTR, приложения-игры, домены-фермы), уходит в account-level список исключений — закрывается сразу для всех кампаний, не только для одной.

3

Отчёт «было → стало»

По каждому прогону — что исключили и почему, плюс изменение средней цены клика, чтобы было видно, сработало или нет.

Google Ads Script — автоисключение площадок

Ядро подхода: запрос к group_placement_view (отчёт по площадкам/приложениям, на которых показывался Performance Max), пороги для флагов и запись в account-level список исключений.

pmax_placement_guard.jsGoogle Ads Script
/**
 * PMax Placement & App Auto-Exclusion Guard
 * 1) раз в сутки берёт отчёт по площадкам PMax
 * 2) считает CTR / клики без конверсий / тип площадки
 * 3) подозрительные -> account-level список исключений
 * 4) шлёт отчёт "было -> стало"
 */

var CONFIG = {
  LOOKBACK_DAYS: 14,
  MIN_CLICKS_TO_JUDGE: 15,
  CTR_ANOMALY_THRESHOLD: 0.25,        // 25% для КМС/PMax уже подозрительно
  ZERO_CONV_CLICK_THRESHOLD: 20,      // 20+ кликов без единой конверсии
  MOBILE_APP_AUTO_EXCLUDE: true,
  FARM_DOMAINS: ['clickfarm-network.info', 'trafficboost-demo.ru'],
  EXCLUSION_LIST_NAME: 'PMax — авто-исключения (антифрод)',
  REPORT_EMAIL: '<email для отчёта>'
};

function main() {
  var report = AdsApp.report(
    "SELECT group_placement_view.placement, group_placement_view.placement_type, " +
    "metrics.clicks, metrics.ctr, metrics.conversions " +
    "FROM group_placement_view " +
    "WHERE segments.date DURING LAST_" + CONFIG.LOOKBACK_DAYS + "_DAYS " +
    "AND campaign.advertising_channel_type = 'PERFORMANCE_MAX'"
  );

  var suspects = [];
  var rows = report.rows();
  while (rows.hasNext()) {
    var row = rows.next();
    var clicks = Number(row['metrics.clicks']);
    if (clicks < CONFIG.MIN_CLICKS_TO_JUDGE) continue;

    var ctr = Number(row['metrics.ctr']);
    var conversions = Number(row['metrics.conversions']);
    var placement = row['group_placement_view.placement'];
    var placementType = row['group_placement_view.placement_type'];

    var reasons = [];
    if (ctr >= CONFIG.CTR_ANOMALY_THRESHOLD) reasons.push('аномальный CTR ' + Math.round(ctr*100) + '%');
    if (conversions === 0 && clicks >= CONFIG.ZERO_CONV_CLICK_THRESHOLD) reasons.push(clicks + ' кликов, 0 конверсий');
    if (CONFIG.MOBILE_APP_AUTO_EXCLUDE && placementType === 'MOBILE_APPLICATION') reasons.push('мобильное приложение');
    if (CONFIG.FARM_DOMAINS.indexOf(placement) !== -1) reasons.push('домен из чёрного списка');

    if (reasons.length) suspects.push({ placement: placement, reasons: reasons, clicks: clicks });
  }

  if (suspects.length) {
    excludeAccountWide(suspects);   // account-level: закрывает площадку сразу во ВСЕХ кампаниях
    sendReport(suspects);           // письмо "было -> стало" на REPORT_EMAIL
  }
}

// excludeAccountWide / sendReport / вспомогательные функции — показываю полностью
// на созвоне и адаптирую под структуру вашего аккаунта (сколько кампаний PMax,
// какие конверсии считаются целевыми, куда слать отчёт).

Это не «поставил и забыл»: у площадок PMax своя специфика (часть трафика Google не раскрывает построчно), поэтому скрипт — только автоматическая часть. Ручная сверка через Insights (пункт 6 в чек-листе ниже) остаётся обязательной.

Дашборд по площадкам

ДЕМО-ДАННЫЕ — не аккаунт заказчика

Так выглядит отчёт после прогона скрипта: что нашли, почему флагнули, что сделали.

Площадка / приложениеТипКликиCTRКонверсииФлагСтатус
clickfarm-network.infoсайт21044%0 домен-фермаисключено
com.quiz.spinreward (игра)приложение34038%0 приложение + 0 конв.исключено
news-aggregator-demo.netсайт9529%1 аномальный CTRисключено
recipe-blog-demo.comсайт586.1%3 —оставлено
shop-review-demo.comсайт1204.2%6 —оставлено

Средняя цена клика по кампании — демо-пример

34 ₴
до исключений
11 ₴
после исключений

Условный пример на демо-цифрах: после исключения площадок-фермы и приложения аукцион перестаёт разогреваться фродовым трафиком, средняя цена клика падает. Точные цифры по вашему аккаунту увидим после первого прогона отчёта.

Чек-лист настройки аккаунта

Скрипт закрывает то, что уже прилетело. Эти шесть пунктов не дают проблеме повториться.

1
Исключения по площадкам/приложениям на уровне аккаунтаЕдиный список, который действует сразу на все кампании — площадка, закрытая один раз, не всплывёт в другой кампании.
2
Брендовые исключенияЗащита от накрутки по брендовым/around-brand запросам — чтобы конкуренты или боты не разгоняли клики по самому дешёвому и самому чувствительному сегменту трафика.
3
Настройка конверсий и ценностиЕсли Smart Bidding обучается на «мусорных» кликах без реальной ценности — он сам начинает покупать больше такого трафика. Первый шаг — почистить историю конверсий и включить value-based bidding.
4
Сигналы аудитории для PMaxАудиторные сигналы не таргетируют жёстко, но направляют алгоритм ближе к реальным покупателям — снижает долю случайного/накрученного трафика в холодном старте.
5
Отключение лишних каналов через настройки ассетовТам, где Google даёт контроль по каналам (например для отдельных типов аккаунтов) — выключить те, где чаще всего видим фрод, вместо того чтобы ловить его постфактум.
6
Регулярный контроль через InsightsЧасть трафика PMax Google не раскрывает построчно — поэтому отчёт «Где показывались объявления» в Insights проверяем руками раз в 1-2 недели, скрипт эту часть не закрывает полностью.

Адаптируем скрипт и чек-лист под ваш аккаунт

Дадим доступ на просмотр — за 1-2 дня разберём, откуда именно идёт склик в вашем случае, и подключим авто-исключения.

Демо-стенд GuardLabs — все цифры и площадки на этой странице учебные, для показа подхода. Скрипт адаптируется под структуру конкретного аккаунта (число кампаний PMax, реальные конверсии, регламент отчётов) после начала работы.