Геотаргетинг

Из этого руководства вы узнаете, что такое геотаргетинг, а также как добавлять, получать и изменять его настройки с помощью AdWords API. Кроме того, здесь рассматриваются расширенные функции геотаргетинга, такие как местонахождение пользователей и интересующие местоположения, способы создания отчетов и анализ эффективности геотаргетинга в кампании.

Примеры кода в этом руководстве взяты из клиентской библиотеки Java. Ознакомьтесь с полным списком библиотек для других языков. Клиентскую библиотеку использовать необязательно (хотя рекомендуется). Вызовы API можно выполнять с помощью любого комплекта SOAP на том языке программирования, на котором вы предпочитаете работать.

Зачем нужен геотаргетинг

Геотаргетинг позволяет показывать объявления пользователям, находящимся в определенном географическом регионе. Допустим, вы рекламируете сеть супермаркетов. Без геотаргетинга реклама будет показываться по всему миру, и вам придется платить за клики в регионах, где нет ваших магазинов. Иначе говоря, вы будете нести расходы, которые не окупятся. Если вы настроите геотаргетинг, реклама будет демонстрироваться только там, где есть ваши супермаркеты. Кроме того, вы сможете показывать объявления пользователям, которые ищут магазины поблизости.

С помощью AdWords API можно настроить таргетинг объявлений по странам, регионам или близости к определенной точке на карте.

Подробнее о настройках геотаргетинга

Геотаргетинг на регионы

Вы можете настроить таргетинг кампании на конкретный регион (например, страну, штат, город или почтовый индекс), если для него поддерживается такая функция. Каждому местоположению присваивается уникальный идентификатор критерия.

Вы можете задать геотаргетинг в кампании с помощью CampaignCriterionService. Ниже приводится фрагмент кода для настройки таргетинга на Калифорнию (США) и Мексику.

// Create locations. The IDs can be found in the documentation or
// retrieved with the LocationCriterionService.
Location california = new Location();
california.setId(21137L);
Location mexico = new Location();
mexico.setId(2484L);

List operations = new ArrayList();
for (Criterion criterion : new Criterion[] {california, mexico}) {
  CampaignCriterionOperation operation = new CampaignCriterionOperation();
  CampaignCriterion campaignCriterion = new CampaignCriterion();
  campaignCriterion.setCampaignId(campaignId);
  campaignCriterion.setCriterion(criterion);
  operation.setOperand(campaignCriterion);
  operation.setOperator(Operator.ADD);
  operations.add(operation);
}

CampaignCriterionReturnValue result = campaignCriterionService.mutate(operations
   .toArray(new CampaignCriterionOperation[operations.size()]));

Как показано в коде, вам необходимо создать объекты Location для каждого региона, на который вы хотите настроить таргетинг, и добавить их с помощью CampaignCriteronService.mutate(). В примере 21137 – код Калифорнии, а 2484 – код Мексики.

Со временем некоторые критерии в силу различных причин могут выходить из употребления. Например, местоположение было разбито на более мелкие объекты (или, наоборот, вошло в состав более крупных), произошли геополитические изменения и т. п. В поле targetingStatus можно посмотреть статус объекта Location: ACTIVE (активно), OBSOLETE (устарело) или PHASING_OUT (ликвидируется). Подробнее читайте в нашем блоге.

Как найти коды местоположений

Как уже упоминалось выше, для настройки таргетинга на регион необходимо создать объект Location с соответствующим кодом. Идентификатор критерия для местоположения можно найти с помощью LocationCriterionService. Ниже показано, как получить идентификатор по названию местоположения.

String[] locationNames = new String[] {"Quebec"};

Selector selector = new Selector();
selector.setFields(new String[] {"Id", "LocationName", "CanonicalName", "DisplayType",
   "ParentLocations", "Reach"});

selector.setPredicates(new Predicate[] {
  // Location names must match exactly, only EQUALS and IN are
  // supported.
  new Predicate("LocationName", PredicateOperator.IN, locationNames),
  // Set the locale of the returned location names.
  new Predicate("Locale", PredicateOperator.EQUALS, new String[] {"en"})
});

// Make the get request.
LocationCriterion[] locationCriteria = locationCriterionService.get(selector);

// Display the resulting location criteria.
for (LocationCriterion locationCriterion : locationCriteria) {
 String parentString =
     getParentLocationString(locationCriterion.getLocation().getParentLocations());
 System.out.printf("The search term '%s' returned the location '%s (%d)' of type '%s' "
     + "with parent locations '%s' and reach '%d'.\n",
    locationCriterion.getSearchTerm(),
    locationCriterion.getLocation().getLocationName(),
    locationCriterion.getLocation().getId(),
    locationCriterion.getLocation().getDisplayType(), parentString,
    locationCriterion.getReach());
}

/**
  * Helper function to format a string for parent locations.
  *
  * @param parents List of parent locations.
  * @return Formatted string representing parent locations.
  */
 public static String getParentLocationString(Location[] parents) {
   StringBuilder sb = new StringBuilder();
   if (parents != null) {
     for (Location parent : parents) {
       if (sb.length() > 0) {
         sb.append(", ");
       }
       sb.append(String.format("%s (%s)", parent.getLocationName(),
           parent.getDisplayType()));
     }
   } else {
     sb.append("N/A");
   }
   return sb.toString();
 }

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

The search term 'Quebec' returned the location 'Quebec'(20123) of type 'Province'
with parent locations 'Canada (Country)' and reach '5070000'. The search term
'Quebec' returned the location 'Quebec City'(1002624) of type 'City' with parent
locations 'Quebec (Province), Canada (Country), ' and reach '356000'.

Теперь вы можете настроить таргетинг на провинцию Квебек с кодом местоположения 20123 и город Квебек с кодом 1002624.

С помощью LocationCriterionService вы можете получить родительские местоположения. Для этого добавьте ParentLocations в список полей селектора. В рассмотренном примере код вернул Квебек (город) и его родительское местоположение (Канада). Эта функция полезна, если вы хотите отобразить иерархический список местоположений, а также добавить или исключить местоположения при настройке таргетинга кампаний.

При работе с родительскими местоположениями не пытайтесь угадывать, какое место их displayType занимает в иерархии. Например, США делятся на штаты, а затем на города, но такая структура применяется не во всех странах.

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

Таргетинг на целевые области

Иногда требуется настроить таргетинг точнее, чем на город или страну. Например, вы можете рекламировать свои супермаркеты в пределах 10 км от их местонахождения. Для этого используется целевая область в радиусе. Для ее создания применяется такой же код, что и для целевого местоположения, только вместо объекта Location нужно создать объект Proximity.

// Create the address whose surrounding area you want to target.
Address myAddress = new Address();
address.setStreetAddress("38 avenue de l'Opéra");
address.setCityName("Paris");
address.setPostalCode("75002");
address.setCountryCode("FR");

// Use myAddress to create a Proximity object
Proximity proximity = new Proximity();
proximity.address = myAddress;
proximity.radiusDistanceUnits = ProximityDistanceUnits.KILOMETERS;
proximity.radiusInUnits = 10;

Таргетинг на области-многоугольники

Раньше таргетинг кампаний AdWords можно было настраивать на области-многоугольники. Однако этот способ больше не поддерживается, вместо него используется таргетинг на области в радиусе. Добавить область-многоугольник с помощью AdWords API больше нельзя. Вы можете встретить такие области, если получаете географические цели для существующей кампании, в которой они были заданы ранее. Удалять существующие области-многоугольники следует через API.

Как получить целевые местоположения

Чтобы получить целевые местоположения для кампании, используйте метод CampaignCriterionService.get(). Результаты можно отфильтровать по параметру CriteriaType, чтобы оставить только цели для объекта Location, а также разбить на страницы, чтобы ограничить количество полученных целей.

int offset = 0;

// Create selector.
Selector selector = new Selector();
selector.setFields(new String[] {"CampaignId", "Id", "CriteriaType", "LocationName"});
selector.setOrdering(new OrderBy[] {new OrderBy("Name", SortOrder.ASCENDING)});
selector.setPredicates(new Predicate[] {new Predicate("CriteriaType",
    PredicateOperator.EQUALS, new String[] {"LOCATION"})});
selector.setPaging(new Paging(offset, PAGE_SIZE));
CampaignCriterionPage page = null;
do {
  page = campaignCriterionService.get(selector);

  if (page.getEntries() != null) {
    // Display campaigns.
    for (CampaignCriterion campaignCriterion : page.getEntries()) {
      System.out.printf("Campaign criterion with campaign id '%s', criterion id '%s', "
          + "and type '%s' was found.\n", campaignCriterion.getCampaignId(),
        campaignCriterion.getCriterion().getId(),
        campaignCriterion.getCriterion().getCriterionType());
    }
    Thread.sleep(1000);
  } else {
    System.out.println("No campaign criteria were found.");
  }
  offset += PAGE_SIZE;
  selector.getPaging().setStartIndex(offset);
} while (offset < page.getTotalNumEntries());

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

Как изменить целевые местоположения

Чтобы изменить целевые местоположения для кампании, вам нужно получить список существующих целевых местоположений и сравнить его со списком новых целей. Затем вы можете удалить ненужные цели с помощью оператора REMOVE и добавить новые с помощью ADD. Ранее можно было перезаписать настройки геотаргетинга кампании с помощью оператора SET через AdWords API, но эта функция больше не поддерживается. Для изменения местоположений необходимо использовать сочетание операторов REMOVE и ADD.

Как исключить целевые местоположения

Вы также можете исключать области из геотаргетинга. Эта функция особенно полезна, если вам необходимо настроить таргетинг на регион и исключить один из субрегионов (например, на всю Россию, кроме Москвы). Для этого создайте критерий NegativeCampaignCriterion, указав местоположение, которое нужно исключить.

// Add a negative campaign geo target.
NegativeCampaignCriterion negativeCriterion = new NegativeCampaignCriterion();
negativeCriterion.campaignId = campaignId;
negativeCriterion.criterion = locationToExclude;

Расширенные настройки геотаргетинга

В AdWords можно показывать объявления пользователям по их физическому местонахождению или по интересующим их местоположениям. Например, вы запускаете кампанию для цветочного магазина с таргетингом только на Санкт-Петербург и ключевым словом "цветы". Пользователь, находящийся в Москве, ищет "цветы в Санкт-Петербурге": Его местонахождение – Москва, а интересующее его местоположение –Санкт-Петербург.

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

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

Анализировать эффективность геотаргетинга можно с помощью двух типов отчетов:

  1. Отчет по эффективности на основе географических данных.
  2. Отчет по эффективности критериев с фильтрацией по CriteriaType=LOCATION или PROXIMITY (чтобы посмотреть данные по эффективности для определенного местоположения).

Руководство по отчетам

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

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