Торговые кампании

С помощью торговых кампаний вы можете показывать пользователям подробную информацию о товарах ещё до клика по объявлению. Объявления из таких кампаний называются товарными. Они содержат название товара, его изображение, цену, название магазина и другую полезную информацию.

Из этой статьи вы узнаете, как настраивать торговые кампании и управлять ими через AdWords API.

Установление связи между аккаунтами Merchant Center и AdWords

Сначала необходимо связать аккаунт AdWords с аккаунтом Google Merchant Center. Для этого:

  1. Отправьте приглашение из своего аккаунта Merchant Center в аккаунт AdWords.
  2. Примите приглашение в аккаунте AdWords.

Отправка приглашения из аккаунта Merchant Center

Вы можете отправить приглашение через интерфейс Merchant Center либо обновить поле adwordsLinks своего аккаунта с помощью Content API for Shopping.

Управление приглашениями в аккаунте AdWords

Начиная с версии 201609 вы можете использовать методы getServiceLinks и mutateServiceLinks службы CustomerService, чтобы получать, принимать и отклонять приглашения на установление связи между вашим аккаунтом AdWords и другими сервисами, в том числе Merchant Center.

Чтобы получить все ссылки на свой аккаунт, достаточно просто вызвать метод getServiceLinks с предикатом для serviceType = MERCHANT_CENTER:

Java

// Get the CustomerService.
CustomerServiceInterface customerService =
    adWordsServices.get(session, CustomerServiceInterface.class);

// Create a selector that filters by service type.
Selector selector =
    new SelectorBuilder()
        .fields("ServiceType")
        .equals("ServiceType", ServiceType.MERCHANT_CENTER.getValue())
        .build();

// Get the service links.
ServiceLink[] serviceLinks = customerService.getServiceLinks(selector);

// Display the results.
if (serviceLinks != null) {
  for (ServiceLink serviceLink : serviceLinks) {
    System.out.printf(
        "Found service link with service link ID %d, type %s, name '%s', and status %s.%n",
        serviceLink.getServiceLinkId(),
        serviceLink.getServiceType(),
        serviceLink.getName(),
        serviceLink.getLinkStatus());
  }
} else {
  System.out.println("No service links found.");
}

Чтобы принять приглашение, вызовите mutateServiceLinks и передайте операцию SET, изменяющую значение поля linkStatus с PENDING на ACTIVE. Убедитесь, что вы задали значения полей serviceType и serviceLinkId в операнде.

Java

// Get the CustomerService.
CustomerServiceInterface customerService =
    adWordsServices.get(session, CustomerServiceInterface.class);

// Create the operation to set the status to ACTIVE.
ServiceLinkOperation op = new ServiceLinkOperation();
op.setOperator(Operator.SET);
ServiceLink serviceLink = new ServiceLink();
serviceLink.setServiceLinkId(serviceLinkId);
serviceLink.setServiceType(ServiceType.MERCHANT_CENTER);
serviceLink.setLinkStatus(ServiceLinkLinkStatus.ACTIVE);
op.setOperand(serviceLink);

// Update the service link.
ServiceLink[] mutatedServiceLinks =
    customerService.mutateServiceLinks(new ServiceLinkOperation[] {op});

// Display the results.
for (ServiceLink mutatedServiceLink : mutatedServiceLinks) {
  System.out.printf(
      "Service link with service link ID %d, type '%s' updated to status: %s.%n",
      mutatedServiceLink.getServiceLinkId(),
      mutatedServiceLink.getServiceType(),
      mutatedServiceLink.getLinkStatus());
}

Чтобы отклонить приглашение, вызовите mutateServiceLinks и передайте операцию REMOVE с операндом, где заданы значения полей serviceType и serviceLinkId.

Java

// Get the CustomerService.
CustomerServiceInterface customerService =
    adWordsServices.get(session, CustomerServiceInterface.class);

// Create the operation to remove the service link.
ServiceLinkOperation op = new ServiceLinkOperation();
op.setOperator(Operator.REMOVE);
ServiceLink serviceLink = new ServiceLink();
serviceLink.setServiceLinkId(serviceLinkId);
serviceLink.setServiceType(ServiceType.MERCHANT_CENTER);
op.setOperand(serviceLink);

// Remove the service link.
ServiceLink[] mutatedServiceLinks =
    customerService.mutateServiceLinks(new ServiceLinkOperation[] {op});

// Display the results.
for (ServiceLink mutatedServiceLink : mutatedServiceLinks) {
  System.out.printf(
      "Service link with service link ID %d and type '%s' was removed.%n",
      mutatedServiceLink.getServiceLinkId(), mutatedServiceLink.getServiceType());
}

Создание торговой кампании

Примечание. В этом руководстве описывается использование служб CampaignService и AdGroupCriterionService, но те же операции можно выполнить с помощью службы BatchJobService. Подробнее о ней читайте в руководстве по пакетным заданиям.

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

Однако при настройке торговой кампании есть два дополнительных этапа:

  1. Для advertisingChannelType следует задать значение SHOPPING.

  2. Необходимо создать и добавить в кампанию объект ShoppingSetting.

Как это сделать, показано в приведенном ниже коде.

Campaign campaign = new Campaign();
campaign.setAdvertisingChannelType(AdvertisingChannelType.SHOPPING);
// Recommendation: Set the campaign to PAUSED when creating it to stop
// the ads from immediately serving. Set to ENABLED once you've added
// targeting and the ads are ready to serve.
campaign.setStatus(CampaignStatus.PAUSED);

ShoppingSetting shoppingSetting = new ShoppingSetting();
shoppingSetting.setMerchantId(MERCHANT_ID);
shoppingSetting.setSalesCountry("GB");
shoppingSetting.setCampaignPriority(0);
shoppingSetting.setEnableLocal(true);
campaign.setSettings(new Setting[] {shoppingSetting});

Как показано в примере выше, ShoppingSetting имеет следующие свойства:

merchantId (обязательно)
Идентификатор аккаунта Merchant Center, в котором представлены ваши товары.
salesCountry (обязательно)
Обеспечивает выбор товаров из Merchant Center только с указанными целевыми странами. Обратите внимание: эти значения никак не влияют на таргетинг объявлений.
campaignPriority (необязательно, значение по умолчанию – 0)
Варианты значений: 0, 1 и 2. Определяет приоритетную кампанию, если данные из фида Merchant Center используются в нескольких кампаниях. Выбирается кампания с наивысшим приоритетом. Если у двух кампаний одинаковый приоритет, в каждом случае будет выбираться объявление с наиболее высокой ставкой.
enableLocal (необязательно, по умолчанию: false)
Если задано значение true, этот флаг активирует рекламу местного ассортимента в торговых кампаниях.

Создание объявлений и групп объявлений в торговой кампании

Чтобы показывать рекламу из торговой кампании, необходимо создать группу объявлений (объект AdGroup), содержащую хотя бы одно объявление.

В торговых кампаниях поддерживаются два типа групп объявлений:

  • SHOPPING_PRODUCT_ADS – тип группы объявлений по умолчанию для торговых кампаний. Используется для показа стандартных товарных объявлений.
  • SHOPPING_SHOWCASE_ADS – тип, который можно использовать только для показа товарных объявлений "Витрина" в результатах поиска товаров. Чтобы создать такую группу объявлений, выполните следующие действия:
    1. Полю adGroupType группы объявлений задайте значение SHOPPING_SHOWCASE_ADS.
    2. Полю biddingStrategyType объекта biddingStrategyConfiguration группы объявлений задайте значение MANUAL_CPC или ENHANCED_CPC.

Создав группу объявлений нужного типа, добавьте ProductAd или ShowcaseAd в группу объявлений.

На следующем этапе необходимо определиться с набором рекламируемых товаров и ставками.

Сегментация товаров

Основное достоинство торговых кампаний – возможность использовать различные параметры для сегментации товаров и работать с отдельными группами товаров. На приведенной ниже схеме товары разделены по широким категориям: Electronics (Электроника) (эта категория дополнительно разделена по брендам), Toys (Игрушки) и Everything else (Все остальное) (в этой категории выделен дополнительный раздел по статусу Used (б/у).

Для торговых кампаний создается древовидная структура, на каждом уровне которой производится сегментация товаров.

Каждый узел структуры представляет конечный элемент или набор подгрупп. В первом случае узел является конечным (листом в древовидной структуре), во втором за ним следует дополнительный уровень. В каждом наборе подгрупп должна присутствовать подгруппа Other. В качестве примеров корректной структуры можно рассматривать сегментацию корневого узла, а также узлов Category: Electronics и Category: (Other).

Узлы являются объектами подкласса ProductPartition класса Criterion. Объекты ProductPartition связаны с AdGroup с помощью BiddableAdGroupCriterion либо NegativeAdGroupCriterion.

Ниже описаны варианты комбинации типов ProductPartition и AdGroupCriterion.

Тип ProductPartition Тип AdGroupCriterion Эффект
UNIT BiddableAdGroupCriterion Назначение ставки для элементов, соответствующих выбранному конечному узлу.
UNIT NegativeAdGroupCriterion Эта комбинация означает, что вы не хотите назначать ставку для этого узла в данной группе объявлений, однако в других группах объявлений и кампаниях с более низким приоритетом это можно делать.

Использование любых других комбинаций приводит к ошибке.

У объектов ProductPartition также есть значение caseValue, которое может представлять собой любой подкласс типа ProductDimension. Объекты ProductDimension используются для таких атрибутов товаров, как бренды, категории, состояние и т. д. Полное описание доступных типов ProductDimension представлено в справочной документации.

Значение caseValue для подчиненного и родительского узла должно относиться к одному подтипу ProductDimension. Значения caseValue нет только у корневого узла.

ProductPartition root = new ProductPartition();
root.setPartitionType(ProductPartitionType.SUBDIVISION);
root.setId(-1);

ProductPartition node1 = new ProductPartition();
node1.setPartitionType(ProductPartitionType.UNIT);
node1.setCaseValue(new ProductBrand(null, "Brand A"));
node1.setParentCriterionId(root.getId());

Помните, что в каждой подгруппе должно быть "пустое" значение caseValue правильного типа для всех остальных значений.

ProductPartition node2 = new ProductPartition();
node2.setPartitionType(ProductPartitionType.UNIT);
node2.setCaseValue(new ProductBrand());
node2.setParentCriterionId(root.getId());

Временные идентификаторы

Критерии получают идентификаторы только после того, как сервер обработает используемый для их создания запрос mutate. Однако неполный объект ProductPartition недействителен, поэтому в рамках одной операции с созданием новой ветки необходимо создать как минимум один подчиненный элемент.

Для назначения parentCriterionId для подчиненных узлов используйте временные идентификаторы критериев. Это уникальные локальные (не глобальные) идентификаторы, которые используются только в рамках одного запроса mutate. В качестве временного идентификатора можно использовать любое целое отрицательное число. В примере кода выше корневому узлу ProductPartition присвоен идентификатор -1.

После выполнения этого запроса всем элементам Criterion будут присвоены обычные положительные глобальные идентификаторы.

Параметры товаров

Для торговых кампаний можно использовать следующие типы ProductDimension:

ProductBiddingCategory, ProductCustomAttribute и ProductType содержат подтипы. При сегментации по одному их типов все подчиненные элементы должны относиться к тому же подтипу caseValue, что и родительский элемент.

ProductBiddingCategory и ProductType являются иерархичными параметрами, и подтипы представляют собой более низкие ступени иерархии. Категория Media (BIDDING_CATEGORY_L1) является родительской по отношению к Books (BIDDING_CATEGORY_L2). Использовать разбиение по caseValue можно только в том случае, если оно было задействовано для родительского узла.

Так, категорию Books нельзя выделить непосредственно под корневым узлом, а также в рамках группы Electronics, поскольку последняя не является родительской для Books.

Параметр ProductCustomAttribute не является иерархичным. Подтипы CUSTOM_ATTRIBUTE_0CUSTOM_ATTRIBUTE_4 соответствуют значениям custom attribute 0custom attribute 4 в Merchant Center.

Используя параметры товаров ProductChannel и ProductChannelExclusivity, можно указать канал (местный магазин, интернет-магазин или и то и другое).

Категории назначения ставок

Значения для типа ProductBiddingCategory представляют собой фиксированные идентификаторы. Вы можете получить полный набор категорий назначения ставок с помощью метода getProductBiddingCategoryData службы ConstantDataService. Настоятельно рекомендуем кешировать результаты этого вызова в связи с их большим объемом и редким обновлением.

Изменение существующих деревьев ProductPartition

Дерево всегда должно оставаться полным, поэтому, если в запросе есть операция mutate, делающая структуру недействительной, она должна сопровождаться операцией, возвращающей нормальную структуру. У всех подчиненных узлов должны быть значения caseValue одного типа, а в каждой подгруппе должен быть узел other для значений, не входящих в другие выделенные категории.

Чтобы добавить подчиненные элементы для конечного узла, необходимо удалить его и создать подгруппу с тем же значением caseValue. Разбиение на подтипы можно использовать для подчиненных узлов.

При удалении подгруппы рекурсивно удаляются все подчиненные ей элементы.

Фильтрация по параметрам товаров

Для фильтрации товаров в кампании можно использовать критерий ProductScope. В кампании может быть только один критерий ProductScope. ProductScope представляет собой контейнер для одного или нескольких параметров ProductDimension, каждый из которых является простым фильтром по одной характеристике товара. Например, если добавить подтип ProductBrand типа ProductDimension и задать для него значение Nexus, в кампании будут рекламироваться только те товары, для которых в Merchant Center указан бренд Nexus.

ProductScope productScope = new ProductScope();
productScope.setDimensions(new ProductDimension[] {new ProductBrand(null, "Nexus")});

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

Ограничения для назначения ставок

Варианты назначения ставок для группы объявлений зависят от ее типа: SHOPPING_PRODUCT_ADS (товарные объявления) или SHOPPING_SHOWCASE_ADS (объявления "Витрина"). В приведенной ниже таблице показано, какие способы назначения ставок доступны для каждого типа.

  SHOPPING_PRODUCT_ADS SHOPPING_SHOWCASE_ADS
Стратегия назначения ставок Поддерживаются только следующие типы:
  • MANUAL_CPC
  • ENHANCED_CPC
  • TARGET_ROAS
  • TARGET_SPEND
Поддерживаются только следующие типы:
  • MANUAL_CPC
  • ENHANCED_CPC
Стратегия назначения ставок на уровне группы объявлений Необязательно Обязательно
Ставки на уровне набора подгрупп товаров Обязательно Запрещено

Отчеты

Для торговых кампаний были добавлены два новых типа отчетов: Сегментация товаров и Эффективность товарных объявлений.

Подробнее о них можно узнать из руководства по отчетам.

Оставить отзыв о...

Текущей странице
Нужна помощь? Обратитесь в службу поддержки.