Segmentação por local

Este guia descreve a segmentação por local e o modo de usar a Google AdWords API para adicionar, recuperar e atualizar segmentações por local para suas campanhas. Ele também avalia conceitos de segmentação geográfica, como Local de presença e Área de interesse, além de como gerar relatórios e avaliar o desempenho geográfico da sua campanha.

Os exemplos de código deste guia utilizam a biblioteca Java da Google AdWords API. Consulte a lista completa de bibliotecas cliente para outras linguagens. O uso de uma biblioteca cliente, embora recomendado, é opcional. É possível usar qualquer kit de SOAP na linguagem de programação escolhida para fazer chamadas à API.

Por que a segmentação geográfica é importante?

Com a segmentação por local, você pode veicular anúncios para usuários em uma determinada região geográfica. Por exemplo, digamos que você esteja anunciando para uma cadeia de supermercados. Sem a segmentação por local, seus anúncios seriam exibidos em todas as regiões do mundo e receberiam cliques de usuários em regiões onde não há uma unidade do supermercado. Assim, haveria a geração de custos e nenhuma possibilidade de retorno do investimento. Com a segmentação por local, suas campanhas exibem anúncios apenas em regiões onde o supermercado está presente. Essa abordagem também permite que você segmente diretamente clientes que procuram localmente os supermercados.

Com a Google AdWords API, você pode segmentar seus anúncios por país, região ou proximidade ao redor de um ponto geográfico específico.

Se você precisar revisar os conceitos de segmentação por local, consulte este artigo da Central de Ajuda.

Campanhas de segmentação geográfica para uma região

É possível segmentar campanhas para uma região específica, que pode ser qualquer uma na qual o Google AdWords tem a opção de segmentação por local (por exemplo, um país, um estado, uma cidade ou a região que abrange um código postal). Cada local segmentado é identificado de forma exclusiva por um código de critério.

Você pode adicionar segmentações geográficas às suas campanhas usando CampaignCriterionService. O snippet de código a seguir mostra como segmentar suas campanhas para a Califórnia (EUA) e o México.

// 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()]));

Conforme mostrado no código, você precisa criar objetos Location para cada região que quiser segmentar e adicioná-los usando CampaignCriteronService.mutate(). No exemplo, 21137 é o código da Califórnia e 2484 o do México.

Ocasionalmente, o Google pode desativar critérios de local por diversos motivos: o local será reestruturado em áreas menores ou maiores, alterações geopolíticas etc. Consulte o campo targetingStatus de um objeto Location para determinar o status do local: ACTIVE, OBSOLETE ou PHASING_OUT. Leia esta postagem do blog para mais detalhes sobre a desativação dos locais de segmentação.

Procurar os códigos de local de uma região

Conforme mencionado acima, você precisa criar um objeto Location com um código apropriado para segmentar uma região. É possível usar LocationCriterionService para pesquisar o código de critério de um local. O exemplo de código a seguir mostra como procurar um código de critério de local pelo nome do local.

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();
 }

O exemplo de código acima gera o seguinte resultado:

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'.

Agora você pode segmentar a província de Quebec usando o código de local 20123 e a cidade de Quebec com o código 1002624.

LocationCriterionService permite recuperar o nível superior do local. Para fazer isso, adicione ParentLocations à lista de campos seletores. Por exemplo, o código anterior retornou o local "Quebec City", bem como seu local pai "Canada". Esse recurso é útil quando você quer exibir uma lista hierárquica de locais aos seus clientes ou quando quer adicionar lógica de inclusão ou de exclusão para locais ao segmentar suas campanhas.

Um ponto importante a ser lembrado ao trabalhar com locais pai é que você não deve fazer suposições sobre o displayType de um local em uma hierarquia. Por exemplo, os EUA podem ser divididos em estados e, depois, em cidades, mas isso não funciona para todos os países do mundo.

Você poderá usar LocationCriterionService de forma mais eficaz se souber mais precisamente o nome do local. A pesquisa tentará encontrar o nome fornecido. Se você quiser recuperar os códigos de local de um número grande de regiões, será melhor gravar a lista localmente em um banco de dados e criar sua própria lógica de pesquisa de locais. Você pode facilmente pesquisar os códigos de um local ou fazer o download da lista de todos os códigos da tabela de segmentações, que é atualizada periodicamente com as últimas segmentações geográficas.

Segmentar campanhas por proximidade com um local

Algumas vezes, convém segmentar incluindo ainda mais detalhes, além de uma cidade ou um país. Por exemplo, suponha que você queira anunciar seus supermercados em um raio de 10 quilômetros do local da loja. Nesses casos, use a área de segmentação por proximidade. O código para criar essa área é semelhante ao usado para adicionar um local de segmentação. O que difere é a necessidade de criar um objeto Proximity em vez de um Location.

// 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;

Segmentar campanhas para uma região demarcada por polígono

Anteriormente, o Google AdWords permitia segmentar as campanhas para uma determinada região demarcada por polígono. No entanto, as segmentações por polígono foram removidas para dar lugar às regiões por proximidade. Portanto, não é mais possível adicionar uma segmentação por polígono usando a Google AdWords API. No entanto, se você está recuperando segmentações geográficas de uma campanha existente, pode encontrar uma. Use a API para remover uma segmentação por polígono existente.

Recuperar segmentações geográficas

Você pode recuperar as segmentações geográficas de uma campanha usando o método CampaignCriterionService.get(). É possível filtrar os resultados por CriteriaType para restringi-los apenas a Location e usar paginação para limitar o número de segmentações recuperadas.

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());

Se sua campanha segmentar todos os países e regiões, você verá uma lista vazia de locais de segmentação.

Atualizar as segmentações geográficas

Para atualizar as segmentações por local de uma campanha, você precisa recuperar a lista de segmentações por local existentes e compará-la à lista de novas segmentações. Você pode então usar o operador REMOVE para remover as segmentações que não são necessárias. Use o operador ADD para adicionar as novas segmentações geográficas (que não fazem parte das campanhas existentes). Antes, a Google AdWords API permitia substituir a segmentação geográfica de uma campanha usando o operador SET. No entanto, esse comportamento não é mais possível. Você precisa usar a combinação de REMOVE + ADD ao atualizar as segmentações geográficas da sua campanha.

Excluir segmentações geográficas

Você também pode excluir uma região. Esse recurso é mais útil quando você quer segmentar uma região, mas excluir uma sub-região (por exemplo, segmentar os Estados Unidos inteiros, exceto a cidade de Nova York). Para excluir uma região, crie um NegativeCampaignCriterion, sendo que o critério é o local a ser excluído.

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

Configurações avançadas de segmentação geográfica

Com o Google AdWords, você pode especificar se deve exibir seus anúncios para usuários de acordo com o local de presença (LOP, na sigla em inglês) física deles ou com a área de interesse (AOI, na sigla em inglês). Por exemplo, digamos que você exiba uma campanha para uma floricultura, segmente apenas a cidade de Nova York e que "flores" seja uma palavra-chave da sua campanha. Considere um usuário localizado na Califórnia e que procura "flores em Nova York". Nesse caso, a Califórnia é o LOP do usuário, e Nova York é a AOI.

Você pode adicionar GeoTargetTypeSetting à sua campanha para decidir se quer exibir os anúncios aos usuários de acordo com o LOP, a AOI ou ambos.

Relatórios de desempenho geográfico

Para analisar a eficácia da segmentação geográfica nas campanhas, gere os dois tipos de relatório a seguir e veja os dados de desempenho:

  1. Relatório de desempenho geográfico.
  2. Relatório de desempenho do critério, filtrando por CriteriaType=LOCATION ou PROXIMITY para ver os dados de desempenho de uma determinada segmentação geográfica.

Consulte o guia de relatórios para mais informações.

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.