Ремаркетинг и выбор целевой аудитории

С помощью ремаркетинга вы можете показывать релевантную рекламу пользователям, которые уже посещали ваш веб-сайт, открывали мобильное приложение или были внесены в корпоративную базу CRM. Объявления размещаются как в Google Поиске, так и на сайтах наших партнеров. Списки ремаркетинга можно использовать и для других типов таргетинга, например в качестве списков электронных адресов.

В этом руководстве рассматриваются следующие темы:

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

Типы аудитории в списках пользователей

Ремаркетинг и таргетинг на определенные аудитории осуществляется с помощью объекта UserList. Ниже перечислены типы аудиторий, на основе которых возможно создавать списки ремаркетинга.

Посетители сайта

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

При создании аккаунта AdWords автоматически создается тег ремаркетинга, действующий на уровне аккаунта. Этот тег доступен, даже если вы ещё не настраивали ремаркетинг. Ниже описано, как получить этот тег ремаркетинга с помощью сервиса CustomerService.

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

// Retrieve the Customer object for the session. Make sure
// that the session's clientCustomerId is set to your account's
// ID.
Customer customer = customerService.getCustomers()[0];

// Print the account level remarketing tag.
System.out.printf("Customer ID %s has remarketing tag:%n%s%n",
    customer.getCustomerId(),
    customer.getRemarketingSettings().getSnippet());

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

Проверить, правильно ли добавлены теги в код, можно с помощью инструмента Google Tag Assistant в браузере Chrome.

Далее потребуется создать список, в который будут добавляться пользователи, отвечающие условиям в теге ремаркетинга. Для создания списков и управления ими используйте сервис AdwordsUserListService. Существуют различные виды списков с разными характеристиками. Чтобы в список добавлялись все посетители любых страниц сайта, воспользуйтесь правилом ExpressionRuleUserList, как показано в примере ниже. В качестве URL посещенной страницы укажите домен сайта. Подробнее о создании списков ремаркетинга на основе правил...

// Get the user list service.
AdwordsUserListServiceInterface userListService =
    adWordsServices.get(session, AdwordsUserListServiceInterface.class);

// Use built-in parameter to create domain URL rule.
StringKey urlKey = new StringKey("url__");

StringRuleItem urlStringRuleItem = new StringRuleItem();
urlStringRuleItem.setKey(urlKey);
urlStringRuleItem.setOp(StringRuleItemStringOperator.CONTAINS);
urlStringRuleItem.setValue("example.com");

RuleItem urlRuleItem = new RuleItem();
urlRuleItem.setStringRuleItem(urlStringRuleItem);

RuleItemGroup ruleItemGroup = new RuleItemGroup();
ruleItemGroup.setItems(new RuleItem[] {urlRuleItem});

Rule rule = new Rule();
rule.setGroups(new RuleItemGroup[] {ruleItemGroup});

// Create the user list.
ExpressionRuleUserList expressionUserList = new ExpressionRuleUserList();
expressionUserList.setName("All visitors to example.com");
expressionUserList.setDescription("Any visitor to any page of example.com");
expressionUserList.setRule(rule);
expressionUserList.setMembershipLifeSpan(365L);
expressionUserList.setStatus(UserListMembershipStatus.OPEN);

// Optional: To include past users in the user list, set the
// prepopulationStatus to REQUESTED.
expressionUserList.setPrepopulationStatus(
    RuleBasedUserListPrepopulationStatus.REQUESTED);

// Create and submit the operation.
UserListOperation operation = new UserListOperation();
operation.setOperator(Operator.ADD);
operation.setOperand(expressionUserList);

UserListReturnValue result =
    userListService.mutate(new UserListOperation[] {operation});
Long userListId = result.getValue(0).getId();

В списках есть два важных атрибута: membershipLifeSpan и status. Первый из них определяет период времени (в днях), на который пользователь включается в список. Второй разрешает или запрещает добавление в список новых пользователей.

Теперь осталось только настроить таргетинг объявлений на список пользователей. Это можно сделать через API по тому же принципу, что и для других параметров таргетинга. Вот пример использования критерия CriterionUserList для таргетинга группы объявлений на список:

// Get the ad group criterion service.
AdGroupCriterionServiceInterface adGroupCriterionService =
    adWordsServices.get(session, AdGroupCriterionServiceInterface.class);

// Create user list criterion.
CriterionUserList userListCriterion = new CriterionUserList();
userListCriterion.setUserListId(userListId);

// Create biddable ad group criterion.
BiddableAdGroupCriterion biddableCriterion = new BiddableAdGroupCriterion();
biddableCriterion.setAdGroupId(adGroupId);
biddableCriterion.setCriterion(userListCriterion);

// Create operation.
AdGroupCriterionOperation operation = new AdGroupCriterionOperation();
operation.setOperand(biddableCriterion);
operation.setOperator(Operator.ADD);

AdGroupCriterionOperation[] operations =
    new AdGroupCriterionOperation[] {operation};

// Apply the criterion.
AdGroupCriterionReturnValue result = adGroupCriterionService.mutate(operations);

Как и в случае с другими критериями, объекту BiddableAdGroupCriterion можно назначать дополнительные свойства, например индивидуальные ставки.

Если вы хотите перенести настройки таргетинга на списки пользователей с уровня групп объявлений на уровень кампании, сначала нужно удалить такие списки из всех групп объявлений этой кампании, имеющих статус "Включено" или "Приостановлено". Вот как это сделать:

// Create selector for all user list criteria.
SelectorBuilder builder = new SelectorBuilder();
Selector selector = builder
    .fields(AdGroupCriterionField.Id)
    .equals(AdGroupCriterionField.AdGroupId, adGroupId)
    .equals(AdGroupCriterionField.CriteriaType, "USER_LIST")
    .build();

AdGroupCriterionServiceInterface criterionService =
    new AdWordsServices().get(session, AdGroupCriterionServiceInterface.class);

AdGroupCriterionPage page = criterionService.get(selector);

List<AdGroupCriterionOperation> operations =
    new ArrayList<AdGroupCriterionOperation>();

// Create remove operation for each user list.
for(AdGroupCriterion criterion : page.getEntries()){
  Long criterionId = criterion.getCriterion().getId();

  // Create user list criterion and specify the criterion ID to remove.
  CriterionUserList userListCriterion = new CriterionUserList();
  userListCriterion.setId(criterionId);

  // Create biddable ad group criterion.
  BiddableAdGroupCriterion biddableCriterion = new BiddableAdGroupCriterion();
  biddableCriterion.setAdGroupId(adGroupId);
  biddableCriterion.setCriterion(userListCriterion);

  // Create remove operation.
  AdGroupCriterionOperation operation = new AdGroupCriterionOperation();
  operation.setOperand(biddableCriterion);
  operation.setOperator(Operator.REMOVE);

  operations.add(operation);
}

// Remove the criteria.
AdGroupCriterionReturnValue result =
    adGroupCriterionService.mutate(
    operations.toArray(new AdGroupCriterionOperation[operations.size()]));

Обратное тоже верно: чтобы перенести настройки таргетинга на списки пользователей с уровня кампании на уровень групп объявлений, сначала нужно удалить их на уровне кампании. Это делается по тем же принципам, как в показанном выше примере кода. Обратите внимание, что criterionId не является идентификатором списка пользователей, представляемого критерием.

Таргетинг на списки пользователей можно настроить для объявлений, входящих в состав кампании, аналогичным образом:

// Get the campaign criterion service.
CampaignCriterionServiceInterface campaignCriterionService =
    adWordsServices.get(session, CampaignCriterionServiceInterface.class);

// Create user list criterion.
CriterionUserList userListCriterion = new CriterionUserList();
userListCriterion.setUserListId(userListId);

// Create campaign criterion.
CampaignCriterion campaignCriterion = new CampaignCriterion();
campaignCriterion.setCampaignId(campaignId);
campaignCriterion.setCriterion(userListCriterion);

// Create operation.
CampaignCriterionOperation operation = new CampaignCriterionOperation();
operation.setOperand(campaignCriterion);
operation.setOperator(Operator.ADD);

CampaignCriterionOperation[] operations =
    new CampaignCriterionOperation[] {operation};

// Apply the criterion.
CampaignCriterionReturnValue result = campaignCriterionService.mutate(operations);

Посетители конкретных страниц

Вы можете настроить таргетинг только на тех пользователей, которые посещали конкретные страницы сайта. Для этого используйте то же правило ExpressionRuleUserList, указав URL страницы вместо домена сайта. Подробнее об этом читайте в разделе Ремаркетинг и списки пользователей на основе правил ниже (в нем также приведен пример кода).

Посетители, выполнившие определенные действия

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

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

Те, кто совершил конверсию

Если вы ещё не настроили отслеживание конверсий, воспользуйтесь сервисом ConversionTrackerService, а затем добавьте код отслеживания на свой веб-сайт.

Объект BasicUserList представляет собой список пользователей, для которых сработал хотя бы один тег отслеживания конверсий на вашем сайте. При создании объекта BasicUserList нужно указать значение поля id в объекте ConversionTracker, который вы хотите связать со списком пользователей.

Вот пример кода, создающего список BasicUserList для двух существующих тегов отслеживания конверсий:

AdwordsUserListServiceInterface userListService =
    adWordsServices.get(session, AdwordsUserListServiceInterface.class);

// Indicate the conversion trackers we want to associate with a new user list
UserListConversionType conversionType1 = new UserListConversionType();
conversionType1.setId(conversionTrackerId1);

UserListConversionType conversionType2 = new UserListConversionType();
conversionType2.setId(conversionTrackerId2);

// Create a basic user list associated with the two conversion trackers.
BasicUserList userList = new BasicUserList();
userList.setName("Example BasicUserList");
userList.setDescription("A list of people who have triggered conversion #1 or #2");
userList.setMembershipLifeSpan(365L);
userList.setConversionTypes(new UserListConversionType[] {conversionType1, conversionType2});
userList.setStatus(UserListMembershipStatus.OPEN);

// Create operation.
UserListOperation operation = new UserListOperation();
operation.setOperand(userList);
operation.setOperator(Operator.ADD);

UserListOperation[] operations = new UserListOperation[] {operation};

// Add user list.
UserListReturnValue result = userListService.mutate(operations);

Те, кто совершил другие действия

Вы можете создать объект BasicUserList в том числе и для пользователей, совершавших действия, которые вы не считаете конверсиями. Для этого нужно связать список с объектом ConversionTracker категории REMARKETING.

Объект ConversionTracker можно создать двумя способами. Первый вариант – с помощью сервиса ConversionTrackerService. Второй – автоматически в AdWords, одновременно с объектом BasicUserList. Вот пример второго варианта:

UserListConversionType conversionType = new UserListConversionType();
conversionType.setName("Remarketing-only conversion tracker");

// Create basic user list.
BasicUserList userList = new BasicUserList();
userList.setName("Example BasicUserList Remarketing Only");
userList.setDescription("Triggered an action not considered a conversion");
userList.setMembershipLifeSpan(365L);
userList.setConversionTypes(new UserListConversionType[] {conversionType});
userList.setStatus(UserListMembershipStatus.OPEN);

// Same as previous example
...

Обратите внимание, что объект UserListConversionType связан со списком, но атрибут id не задан. В таком случае автоматически создается объект ConversionTracker категории REMARKETING.

Вот как получить фрагмент кода для автоматически созданного объекта ConversionTracker:

// From the user list creation obtain the tracker ID.
String conversionId = userList.getConversionTypes().get(0).getId().toString();

// Create predicate and selector.
Predicate predicate = new Predicate();
predicate.setField("Id");
predicate.setOperator(PredicateOperator.IN);
predicate.setValues(new String [] {conversionId});
Selector selector = new Selector();
selector.setFields(new String[] {"Id"});
selector.setPredicates(new Predicate[] {predicate});

// Get the conversion tracker.
ConversionTrackerPage page = conversionTrackerService.get(selector);

// Print out the conversion tracker code snippet.
System.out.println(((AdWordsConversionTracker) page.getEntries()[0]).getSnippet());

Несколько списков пользователей

Вы можете создавать комбинации существующих списков пользователей с помощью объекта LogicalUserList с полями UserListLogicalRule. Правила в объекте LogicalUserList объединяются с помощью оператора AND, поэтому, чтобы попасть в список, пользователь должен соответствовать всем указанным правилам. Тем не менее операнды правил можно объединять с помощью оператора AND или OR. Другими словами, вы можете указать, должен ли пользователь соответствовать всем условиям правила или только одному из них.

Кроме того, в качестве операндов правил можно указывать другие объекты LogicalUserList, что позволяет объединять их в древовидную структуру. Поэтому с помощью объектов LogicalUserList можно определять сложные иерархии групп ремаркетинга для эффективного таргетинга. Списки можно использовать в сочетании с разными значениями полей AccessReason. Однако в случае отмены доступа объект UserList будет считаться пустым списком при анализе выполнения условий в правилах LogicalUserList.

В следующем примере показано создание списка LogicalUserList, содержащего любой из двух объектов BasicUserList:

// My basic user list of Mars customers.
BasicUserList basicMarsList = new BasicUserList();
basicMarsList.setId(...);

// My basic user list of Venus customers.
BasicUserList basicVenusList = new BasicUserList();
basicVenusList.setId(...);

LogicalUserListOperand marsListOperand = new LogicalUserListOperand();
marsListOperand.setUserList(basicMarsList);

LogicalUserListOperand venusListOperand = new LogicalUserListOperand();
venusListOperand.setUserList(basicVenusList);

UserListLogicalRule rule = new UserListLogicalRule(
    UserListLogicalRuleOperator.ANY,
    new LogicalUserListOperand[] {marsListOperand, venusListOperand});

// Create logical user list.
LogicalUserList combinationList = new LogicalUserList();
combinationList.setName("My combination list of Mars or Venus customers #"
    + System.currentTimeMillis());
combinationList.setRules(new UserListLogicalRule[] {rule});

// Create operations.
UserListOperation operation = new UserListOperation();
operation.setOperand(combinationList);
operation.setOperator(Operator.ADD);

UserListOperation[] operations = new UserListOperation[] {operation};

// Add logical user list.
UserListReturnValue result = userListService.mutate(operations);

Похожие аудитории

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

Список SimilarUserList автоматически создается для каждого UserList. При этом учитываются такие факторы, как количество посетителей в исходном списке, дата их включения в список, категории сайтов, на которых побывали такие пользователи, и т. д. Процесс занимает до четырех дней с момента создания исходного списка.

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

AdwordsUserListServiceInterface userListService =
    adWordsServices.get(session, AdwordsUserListServiceInterface.class);

UserListPage page = userListService.get(
    new SelectorBuilder()
    .fields("Id", "Name", "SeedUserListId")
    .equals("ListType", UserListType._SIMILAR)
    .build());

for (UserList userlist : page.getEntries()) {
  System.out.printf("id: %d, name: %s, seed list id: %d%n",
      userlist.getId(),
      userlist.getName(),
      ((SimilarUserList)userlist).getSeedUserListId());
}

Списки электронных адресов

Рекламодатели с крупными базами данных могут создавать списки на основе уже имеющихся адресов электронной почты своих клиентов. Эти адреса можно добавлять и удалять как массово, так и по отдельности, а также создавать на их основе объекты LogicalUserList.

Списки электронных адресов подходят для показа рекламы в Google Поиске, на YouTube и в Gmail, но не в контекстно-медийной сети.

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

В целях безопасности необходимо перед загрузкой хешировать адреса электронной почты с помощью алгоритма SHA-256. Перед хешированием выполните следующие действия:

  • Удалите начальные и конечные пробелы.

  • Убедитесь, что в адресах электронной почты нет заглавных букв.

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

private static final ImmutableList<String> EMAILS =
    ImmutableList.of("client1@example.com", "client2@example.com", " Client3@example.com ");
private static final MessageDigest digest = getSHA256MessageDigest();

// Get the UserListService.
AdwordsUserListServiceInterface userListService =
    adWordsServices.get(session, AdwordsUserListServiceInterface.class);

// Create a user list.
CrmBasedUserList userList = new CrmBasedUserList();
userList.setName("Customer relationship management list #" + System.currentTimeMillis());
userList.setDescription("A list of customers that originated from email addresses");

// See limit here: https://support.google.com/adwords/answer/6276125#requirements.
userList.setMembershipLifeSpan(30L);

// Create operation.
UserListOperation operation = new UserListOperation();
operation.setOperand(userList);
operation.setOperator(Operator.ADD);

// Add user list.
UserListReturnValue result = userListService.mutate(new UserListOperation[] { operation });

// Display user list.
UserList userListAdded = result.getValue(0);
System.out.printf("User list with name '%s' and ID %d was added.%n",
    userListAdded.getName(), userListAdded.getId());

// Get user list ID.
Long userListId = userListAdded.getId();

// Create operation to add members to the user list based on email addresses.
MutateMembersOperation mutateMembersOperation = new MutateMembersOperation();
MutateMembersOperand operand = new MutateMembersOperand();
operand.setUserListId(userListId);

// You can optionally provide this field.
operand.setDataType(MutateMembersOperandDataType.EMAIL_SHA256);

// Hash normalized email addresses based on SHA-256 hashing algorithm.
List<String> emailHashes = new ArrayList<>(EMAILS.size());
for (String email : EMAILS) {
  String normalizedEmail = toNormalizedEmail(email);
  emailHashes.add(toSHA256String(normalizedEmail));
}

// Add email address hashes.
operand.setMembers(emailHashes.toArray(new String[emailHashes.size()]));
mutateMembersOperation.setOperand(operand);
mutateMembersOperation.setOperator(Operator.ADD);

// Add members to the user list based on email addresses.
MutateMembersReturnValue mutateMembersResult =
    userListService.mutateMembers(new MutateMembersOperation[] { mutateMembersOperation });

// Display results.
// Reminder: it may take several hours for the list to be populated with members.
for (UserList userListResult : mutateMembersResult.getUserLists()) {
  System.out.printf("%d email addresses were uploaded to user list with name '%s' and ID %d "
      + "and are scheduled for review.%n",
      EMAILS.size(), userListResult.getName(), userListResult.getId());
}

/**
 * Hash a string using SHA-256 hashing algorithm.
 *
 * @param str the string to hash.
 * @return the SHA-256 hash string representation.
 * @throws UnsupportedEncodingException If UTF-8 charset is not supported.
 */
private static String toSHA256String(String str) throws UnsupportedEncodingException {
  byte[] hash = digest.digest(str.getBytes("UTF-8"));
  StringBuilder result = new StringBuilder();
  for (byte b : hash) {
    result.append(String.format("%02x", b));
  }

  return result.toString();
}

/**
 * Removes leading and trailing whitespace and converts all characters to lower case.
 *
 * @param email the email address to normalize.
 * @return a normalized copy of the string.
 */
private static String toNormalizedEmail(String email) {
  return email.trim().toLowerCase();
}

/** Returns SHA-256 hashing algorithm. */
private static MessageDigest getSHA256MessageDigest() {
  try {
    return MessageDigest.getInstance("SHA-256");
  } catch (NoSuchAlgorithmException e) {
    throw new RuntimeException("Missing SHA-256 algorithm implementation.", e);
  }
}

Ниже описано, какие списки электронных адресов можно применять в настройках таргетинга в зависимости от типа кампании.

Кампании типа "Только поисковая сеть"
CrmBasedUserList. Объявления будут показываться в поисковой сети.
Кампании типа "Только контекстно-медийная сеть"
CrmBasedUserList и связанный с ним SimilarUserList. Объявления будут показываться в Gmail только при наличии в кампании креативов с рекламными сообщениями Gmail.
Кампании типа "Поисковая сеть и оптимизированная контекстно-медийная сеть"
CrmBasedUserList. Объявления будут показываться в поисковой сети, а также в Gmail (только при наличии в кампании креативов с рекламными сообщениями Gmail).
Видеокампании
CrmBasedUserList и связанный с ним SimilarUserList. Объявления будут показываться на YouTube только при наличии в кампании рекламы TrueView In-Stream.

Важные примечания

  • В API применяется лимит на количество адресов электронной почты в каждом запросе на изменение.

  • Лимит для объекта MembershipLifeSpan может отличаться от лимита для других списков пользователей.

  • На внесение пользователей в список может потребоваться несколько часов.

  • Адреса электронной почты должны быть связаны с аккаунтом Google.

  • Для таргетинга в Gmail можно использовать только адреса в домене gmail.com.

  • Если в списке меньше 1000 пользователей, в целях конфиденциальности будет указываться размер списка, равный нулю. Более крупные числа будут округляться до второй значащей цифры.

  • Чтобы обеспечить показ рекламы, добавьте в список не менее 5000 адресов.

  • При использовании объекта LogicalUserList список CrmBasedUserList можно объединить только с другим списком того же типа. К получившемуся в результате списку будут применены все правила, действующие в отношении CrmBasedUserList.

Настройки таргетинга для ремаркетинга

Если вы добавили список пользователей в качестве критерия таргетинга для группы объявлений или кампании, то он будет использоваться для показа объявлений. Впрочем, не исключено, что таргетинг будет действовать не вполне так, как вы задумали. Чтобы проверить настройки таргетинга, вызовите метод getSettings объектов TargetingSetting для групп объявлений или кампаний, использующих список.

Выбрать схему применения разных критериев таргетинга можно при помощи массива объектов TargetingSettingDetail. Каждому типу критериев в массиве назначается способ Bid only (только назначение ставок) или Target and bid (таргетинг и ставки).

В случае Bid only критерий, для которого была назначена эта схема, не будет применяться для ограничения трафика, и вы сможете задать разные настройки для разных пользователей в списках. В случае Target and bid трафик для группы объявлений будет ограничен только пользователями, которые добавлены в список.

По умолчанию для списков ремаркетинга используется вариант Target and bid. Если вы добавляете списки ремаркетинга в основную кампанию для поисковой сети, выберите в настройках таргетинга схему Bid only. Если вы создаете копию кампании со списками ремаркетинга для объявлений в поисковой сети, выберите в настройках схему Target and bid.

Ниже приведен пример из клиентской библиотеки Java, в котором для критерия группы объявлений TargetingSettingDetail выбрана схема Bid only.

AdGroup adGroup = ... // fetch the ad group relevant for this case

List<Setting> settings = Lists.newArrayList();
List<TargetingSettingDetail> details = Lists.newArrayList();
TargetingSetting targetingSetting = null;
if (adGroup.getSettings() != null) {
  // Find the existing TargetingSetting if it exists, and keep
  // track of all other settings.
  for (Setting setting : adGroup.getSettings()) {
    if (setting instanceof TargetingSetting) {
      targetingSetting = (TargetingSetting) setting;
    } else {
      settings.add(setting);
    }
  }

  if (targetingSetting != null) {
    // Copy all the existing TargetingSettingDetails except the one for
    // USER_INTEREST_AND_LIST.
    for (TargetingSettingDetail settingDetail : targetingSetting.getDetails()) {
      if (!CriterionTypeGroup.USER_INTEREST_AND_LIST.equals(
              settingDetail.getCriterionTypeGroup())) {
        details.add(settingDetail);
      }
    }
  }
}

if (targetingSetting == null) {
  targetingSetting = new TargetingSetting();
}

// Create a new USER_INTEREST_AND_LIST targeting setting detail and add
// it to the details list.
TargetingSettingDetail userListsSetting = new TargetingSettingDetail();
userListsSetting.setCriterionTypeGroup(CriterionTypeGroup.USER_INTEREST_AND_LIST);

// true = "Bid only"; false = "Target and bid"
userListsSetting.setTargetAll(true);
details.add(userListsSetting);

targetingSetting.setDetails(details.toArray(new TargetingSettingDetail[details.size()]));

// Add the new TargetingSetting for USER_INTEREST_AND_LIST to the settings list.
settings.add(targetingSetting);

adGroup.setSettings(settings.toArray(new Setting[settings.size()]));

Аналогичным образом можно назначить параметр Bid only или Target and bid для кампании. Для этого используйте методы getSettings и setSettings объекта Campaign, а не AdGroup.

Отчеты по эффективности

Поля отчетов по эффективности для списков и интересов пользователей задаются в объекте AUDIENCE_PERFORMANCE_REPORT. Вы можете получить, например, статистику по параметрам Conversions (конверсии) и CostPerConversion (цена за конверсию), чтобы определить, могут ли пользователи из списка совершить ещё больше конверсий, а затем изменить соответственно модификаторы ставок. Кроме того, вы можете получить список пользователей по каждому клику, добавив поле UserListId в отчет по эффективности для кликов. Подробнее о работе с отчетами читайте в этом руководстве.

Ремаркетинг и списки пользователей на основе правил

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

В этом разделе рассматриваются примеры создания списков ExpressionRuleUserList и DateSpecificRuleUserList, которые работают на основе правил.

Для списков ремаркетинга нельзя использовать конфиденциальную информацию о посетителях. Также при создании ремаркетинговой кампании и размещении на сайте соответствующего тега необходимо соблюдать наши правила в отношении рекламы на основе интересов.

Встроенные параметры тега ремаркетинга

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

StringKey urlKey = new StringKey("url__");

StringRuleItem urlStringRuleItem1 = new StringRuleItem();
urlStringRuleItem1.setKey(urlKey);
urlStringRuleItem1.setOp(StringRuleItemStringOperator.CONTAINS);
urlStringRuleItem1.setValue("example.com/section1/");

RuleItem urlRuleItem1 = new RuleItem();
urlRuleItem1.setStringRuleItem(urlStringRuleItem1);

StringRuleItem urlStringRuleItem2 = new StringRuleItem();
urlStringRuleItem2.setKey(urlKey);
urlStringRuleItem2.setOp(StringRuleItemStringOperator.CONTAINS);
urlStringRuleItem2.setValue("example.com/section2/");

RuleItem urlRuleItem2 = new RuleItem();
urlRuleItem2.setStringRuleItem(urlStringRuleItem2);

// Combine the two rule items into a RuleItemGroup so AdWords will AND their
// rules together. To instead OR the rules together, each RuleItem should be
// placed in its own RuleItemGroup.
RuleItemGroup ruleItemGroup = new RuleItemGroup();
ruleItemGroup.setItems(new RuleItem[] {urlRuleItem1, urlRuleItem2});

Rule rule = new Rule();
rule.setGroups(new RuleItemGroup[] {ruleItemGroup});

// Create the user list.
ExpressionRuleUserList expressionUserList = new ExpressionRuleUserList();
expressionUserList.setName("Sections 1 and 2"));
expressionUserList.setDescription("Visitors to section1 or section2");
expressionUserList.setRule(rule);

Специальные параметры тега ремаркетинга

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

Пример

Допустим, у вас есть сайт и вы настроили несколько специальных параметров тега ремаркетинга, чтобы собирать следующие атрибуты:

  • ecomm_pagetype – категория страницы (например, страница оплаты, корзины и т. п.);
  • cartsize – количество товаров в корзине пользователя;
  • checkoutdate – дата совершения оплаты (этот параметр применяется, если пользователь сделал покупку).

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

Вот как можно описать эти две группы пользователей:

  1. Пользователи, которые посетили страницу оформления заказа и добавили в корзину более одного товара.
  2. Пользователи, которые совершили покупки в ноябре или декабре.

Вы хотите, чтобы для пользователей, попадающих в любую из этих групп, ставка в определенных кампаниях или группах объявлений увеличивалась на 25%.

Обзор объектов

Для начала рассмотрим структуру списка пользователей на основе правил. В AdWords API он представлен как объект RuleBasedUserList. На диаграмме ниже показано, как будет выглядеть такой список в нашем случае.

Структура списка пользователей на основе правил

Первая группа RuleItemGroup

Начнем с создания первой группы RuleItemGroup (слева), которая состоит из двух объектов RuleItem:

  1. Пользователи, которые посетили страницу оплаты.
  2. Пользователи, которые добавили в корзину более одного товара.

В первом объекте применяется параметр ecomm_pagetype со строковыми значениями, поэтому для него нужно создать элемент StringRuleItem.

StringRuleItem checkoutStringRuleItem = new StringRuleItem(
    new StringKey("ecomm_pagetype"), StringRuleItemStringOperator.EQUALS, "checkout");
RuleItem checkoutRuleItem = new RuleItem();
checkoutRuleItem.setStringRuleItem(checkoutStringRuleItem);

Во втором объекте применяется параметр cartsize с числовыми значениями, поэтому для него необходим элемент NumberRuleItem.

NumberRuleItem cartSizeNumberRuleItem = new NumberRuleItem(
    new NumberKey("cartsize"), NumberRuleItemNumberOperator.GREATER_THAN, 1.0);
RuleItem cartSizeRuleItem = new RuleItem();
cartSizeRuleItem.setNumberRuleItem(cartSizeNumberRuleItem);

Объединим два объекта RuleItems в группу RuleItemGroup. По умолчанию AdWords применит оператор AND для всех правил.

RuleItemGroup checkoutMultipleItemGroup = new RuleItemGroup();
checkoutMultipleItemGroup.setItems(new RuleItem[] {checkoutRuleItem, cartSizeRuleItem});

Вторая группа RuleItemGroup

Группа RuleItemGroup справа состоит из двух объектов RuleItem:

  1. Пользователи, которые совершили покупку после 31 октября.
  2. Пользователи, которые совершили покупку до 1 января.

В обоих правилах используется параметр checkoutdate со значениями в формате дат, поэтому для них необходимо создать элементы DateRuleItem.

// Create the RuleItem for the start date.
DateRuleItem startDateDateRuleItem = new DateRuleItem(
    new DateKey("checkoutdate"),
    DateRuleItemDateOperator.AFTER, "20141031");
RuleItem startDateRuleItem = new RuleItem();
startDateRuleItem.setDateRuleItem(startDateDateRuleItem);

// Create the RuleItem for the end date.
DateRuleItem endDateDateRuleItem = new DateRuleItem(
    new DateKey("checkoutdate"),
    DateRuleItemDateOperator.BEFORE, "20150101");
RuleItem endDateRuleItem = new RuleItem();
endDateRuleItem.setDateRuleItem(endDateDateRuleItem);

Как и для группы слева, объедините эти два объекта RuleItem в один объект RuleItemGroup с помощью логического условия И.

RuleItemGroup checkedOutNovDecItemGroup = new RuleItemGroup();
checkedOutNovDecItemGroup.setItems(new RuleItem[] {startDateRuleItem, endDateRuleItem});

Создание списка пользователей

Теперь просто объединим описанные выше группы правил, чтобы создать новый список.

// Create the user list.
ExpressionRuleUserList expressionUserList = new ExpressionRuleUserList();
expressionUserList.setName("My expression rule user list");
expressionUserList.setDescription("Users who checked out in November or December "
    + "OR visited the checkout page with more than one item in their cart");

// OR the RuleItemGroups together into a Rule.
Rule rule = new Rule();
rule.setGroups(new RuleItemGroup[] {checkoutMultipleItemGroup, checkedOutNovDecItemGroup});
expressionUserList.setRule(rule);

// Set other optional attributes of the user list.
...

// Create an operation to ADD the user list.
UserListOperation operation = new UserListOperation();
operation.setOperator(Operator.ADD);
operation.setOperand(expressionUserList);

// Submit the operation.
UserListReturnValue result =
    adwordsUserListService.mutate(new UserListOperation[] {operation});

Ограничение по диапазону дат

Чтобы задать такое ограничение, подойдет рассмотренный выше список ExpressionRuleUserList. Но если вы захотите охватить только пользователей, которые посещали сайт в период с 1 октября по 31 декабря и при этом удовлетворяют определенному правилу, примените список DateSpecificRuleUserList.

Чтобы создать объект DateSpecificUserList, выполните те же действия, что и для ExpressionRuleUserList, а также задайте даты начала и окончания: startDate и endDate.

DateSpecificRuleUserList dateRuleUserList = new DateSpecificRuleUserList();
dateRuleUserList.setStartDate(startDate.toString("20141001"));
dateRuleUserList.setEndDate(endDate.toString("20141231"));

// Set optional attributes of the user list, such as membershipLifeSpan or
// integration code.
...

// Use the same rule defined above.
dateRuleUserList.setRule(rule);

Готово! В список будут добавляться все пользователи, которые соответствуют тем же правилам, что и в предыдущем списке, но только в том случае, если они посещали сайт в период со startDate по endDate включительно. Чтобы узнать об открытых датах и других возможностях, ознакомьтесь с руководством по списку DateSpecificRuleUserList.

Включение в список пользователей из прошлых списков

В версии 201702 (и более поздних) в список, основанный на правилах, можно добавить пользователей из прошлого списка. Для этого задайте полю prepopulationStatus объекта списка значение REQUESTED. Вы можете следить за ходом выполнения этой асинхронной операции, периодически проверяя статус этого поля.

Изменение ставок для пользователей в списке

Итак, вы создали список пользователей и настроили тег ремаркетинга на сайте. Теперь нужно настроить таргетинг кампаний или групп объявлений на пользователей из этого списка, увеличив для них ставки на 25%.

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

// Specify the ad group IDs.
List<Long> adGroupIds = Lists.newArrayList(
    // ad group ID 1,
    // ad group ID 2,
    // ...
    );

// Create a CriterionUserList that points to the user list created above.
CriterionUserList criterionUserList = new CriterionUserList();
criterionUserList.setUserListId(dateRuleUserList.getId());

List<AdGroupCriterionOperation> operations = Lists.newArrayList();
for(Long adGroupId : adGroupIds) {
  // Create a BiddableAdGroupCriterion for the CriterionUserList and set
  // its bid modifier to 1.25. Instead of specifying a bid modifier, you
  // could set the BiddableAdGroupCriterion's bidding strategy configuration
  // to a configuration with specific bids.
  BiddableAdGroupCriterion biddableCriterion = new BiddableAdGroupCriterion();
  biddableCriterion.setAdGroupId(adGroupId);
  biddableCriterion.setCriterion(criterionUserList);
  biddableCriterion.setBidModifier(1.25);

  // Create an operation to ADD the BiddableAdGroupCriterion.
  AdGroupCriterionOperation operation = new AdGroupCriterionOperation();
  operation.setOperand(biddableCriterion);
  operation.setOperator(Operator.ADD);
  operations.add(operation);
}

// Submit the operations.
AdGroupCriterionReturnValue result = adGroupCriterionService.mutate(
    operations.toArray(new AdGroupCriterionOperation[operations.size()]));

Изменить ставки для кампании можно аналогичным образом:

// Specify the campaign ID.
Long campaignId = // ID of campaign

// Create a CriterionUserList that points to the user list created above.
CriterionUserList criterionUserList = new CriterionUserList();
criterionUserList.setUserListId(dateRuleUserList.getId());

CampaignCriterion campaignCriterion = new CampaignCriterion();
campaignCriterion.setCampaignId(campaignId);
campaignCriterion.setCriterion(criterionUserList);
campaignCriterion.setBidModifier(1.25);

CampaignCriterionOperation operation = new CampaignCriterionOperation();
operation.setOperand(campaignCriterion);
operation.setOperator(Operator.ADD);
operations.add(operation);

// Submit the operations.
CampaignCriterionReturnValue result = CampaignCriterionService.mutate(
    new AdGroupCriterionOperation[] {operation});

Дополнительные возможности списков пользователей

Чтобы сделать настройки таргетинга ещё более точными, сочетайте списки пользователей на основе правил с другими списками. Например, если у вас есть BasicUserList с таргетингом на конкретный тип конверсии и RuleBasedUserList с таргетингом на специальные параметры, вы можете объединить условия двух списков с помощью объекта LogicalUserList. Пример того, как это сделать, приведен выше.

Добавление тега ремаркетинга на сайт

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

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

Примеры кода

Примеры кода для добавления списка на основе правил доступны в папке Remarketing перечисленных ниже клиентских библиотек

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

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