Цели кампаний
Что именно меняется
Цель создаётся в Метрике. Команда report.py --goals выбирает цели только для
отчёта. Команда campaign_write.py strategy --goal задаёт PriorityGoals
кампании. Условия ретаргетинга — отдельная настройка: см. RETARGETING.md.
Перед правкой получи настройки и доступные кампании цели:
python3 scripts/campaigns.py --account example --campaign 123 --no-cache --json
python3 scripts/report.py --account example --campaign 123 --list-goalsДоступный список часто содержит мусор: автоматические события, промежуточные
клики, устаревшие цели и дубли. Наличие цели или большое число её достижений
не доказывает ценность для бизнеса. Сначала выдели согласованные результаты
(например, подтверждённую заявку или оплату); микродействия включай только
при понятной связи с результатом и осознанном выборе пользователя.
Не подставляй весь ответ --list-goals в настройки или отчёт.
Сопоставь названия и ID с выбором пользователя. В настройках проверь
BiddingStrategy обеих площадок, PriorityGoals, CounterIds, атрибуцию и
PackageBiddingStrategy. Для пакетной стратегии цели меняются у пакета и
затрагивают связанные кампании; эта команда пакет не редактирует и кампанию
не отвязывает. См. описание пакетных стратегий.
Если нужной цели ещё нет в Метрике, сначала настрой её там. Если она не видна Директу, проверь счётчик и доступ рекламодателя. При необходимости добавь счётчик, сохранив остальные, затем повторно получи доступные цели:
python3 scripts/campaign_write.py counters --account example --campaign 123 \
--add --counter 87654321Как стратегия использует цели
| Настройка | Где указываются цели и суммы |
|---|---|
AVERAGE_CPA / PAY_FOR_CONVERSION |
Одна цель в GoalId, цена — в AverageCpa / Cpa внутри стратегии |
AVERAGE_CPA_MULTIPLE_GOALS / PAY_FOR_CONVERSION_MULTIPLE_GOALS |
Не менее двух разных целей в PriorityGoals; Value каждой — её целевая цена конверсии |
WB_MAXIMUM_CONVERSION_RATE |
Конкретная цель в GoalId; для оптимизации по ключевым целям — GoalId=13 и список PriorityGoals с ценностями |
MAX_PROFIT |
В PriorityGoals.Value передаётся маржа с конверсии |
AVERAGE_CRR / PAY_FOR_CONVERSION_CRR |
Сохраняй параметры стратегии, включая GoalId; для ценности из Метрики используется IsMetrikaSourceOfValue=YES |
Особые значения: 12 — вовлечённые сессии; 13 в
WbMaximumConversionRate.GoalId — оптимизация по ключевым целям. Для 13
в списке должна быть хотя бы одна цель, отличная от вовлечённых сессий.
Не добавляй 13 отдельным --goal и не используй его как ID цели отчёта.
«Все ключевые цели» означает только текущий список PriorityGoals, а не все
доступные цели Метрики. Но и этот список может быть засорён: до выбора 13
проверь каждый его элемент. Если состав нужно очистить, подготовь полную замену
списка; добавление новой полезной цели само по себе не убирает старые мусорные.
Описание: параметры ЕПК.
Несколько --goal сами по себе не переводят AVERAGE_CPA в режим нескольких
целей и не меняют конкретный GoalId в WB_MAXIMUM_CONVERSION_RATE.
Ценность, маржа и целевая цена — разные суммы. При смене режима согласуй их смысл
и значения; не переноси прежнюю ценность в новую цену автоматически.
Правила полей: изменение ЕПК.
Добавить цель, сохранив остальные
Если действующая стратегия уже использует ключевые цели:
python3 scripts/campaign_write.py strategy --account example --campaign 123 \
--add-goals --goal 222395727=500Можно повторить --goal несколько раз. --add-goals читает текущий список,
сохраняет неназванные цели, суммы и источники ценности. Совпавший ID обновляет
сумму без дубликата; источник сохраняется, если не передан --goal-from-metrika.
Этот флаг включает источник из Метрики для названной цели и применим только
к стратегиям с долей рекламных расходов. Для перехода обратно к фиксированной
ценности передай полный список без --add-goals и без --goal-from-metrika
для нужной цели.
Без --add-goals перечисленные --goal заменяют весь список. Так можно
явно изменить состав или убрать отдельную цель, перечислив все оставшиеся.
Без --goal список не меняется. Очистку всех целей команда не поддерживает.
Причина: Campaigns.update принимает полный PriorityGoals.Items, у каждого
элемента обязателен Operation=SET; операции добавления элемента в API нет.
Скилл собирает полный список, проверяет его размер и останавливает запись,
если цели или стратегия изменились после исходного чтения.
Предел — 30 целей; для двух стратегий *_MULTIPLE_GOALS минимум проверяется
по итоговому списку. См. изменение текстовой кампании.
Перейти с одной цели на несколько
Пример: кампания показывается только на поиске, выбрана оплата за клики, согласованы цены 700 и 500 и недельный бюджет 10000 в валюте кабинета:
python3 scripts/campaign_write.py strategy --account example --campaign 123 \
--search-strategy AVERAGE_CPA_MULTIPLE_GOALS \
--search-param WeeklySpendLimit=10000 \
--goal 222395726=700 --goal 222395727=500Здесь перечислен полный итоговый список. Старые AverageCpa и одиночный
GoalId не передаются в структуру новой стратегии. Для оплаты за конверсии
используется PAY_FOR_CONVERSION_MULTIPLE_GOALS. При активных сетях проверь
совместимость и нужные параметры второй площадки; не включай и не выключай её
ради примера. Сохрани согласованные бюджет, его период и остальные ограничения.
Если нужна оптимизация по ценностям без целевых цен конверсии, вариант другой:
python3 scripts/campaign_write.py strategy --account example --campaign 123 \
--search-strategy WB_MAXIMUM_CONVERSION_RATE \
--search-param GoalId=13 --search-param WeeklySpendLimit=10000 \
--goal 222395726=700 --goal 222395727=500При передаче параметров *_MULTIPLE_GOALS или MAX_PROFIT API требует также
PriorityGoals, даже если меняется только бюджет. Передай текущий полный
список, сохранив суммы и --goal-from-metrika там, где он применим.
Все примеры показывают план. Для порученного изменения добавь --apply и
проверь повторное чтение. Суммы в аргументах — в валюте кабинета; умножение
на миллион выполняет команда. Порядок записи и проверки — CHANGES.md.