apresentação tdc 2010 eric gomes - octavarium - ad words
DESCRIPTION
Automação de Campanhas de Links Patrocinados com a API do Google AdWordsTRANSCRIPT
Automação de Campanhasde Links Patrocinados com a API do Google AdWords
Internet
Acesso residencial
crescimento em número de internautas e tempo de uso
Internet
Banda Larga no Brasil
crescimento de 30,4% entre 2008 e 2009
Publicidade Online
Internet permanece sendo a mídia que mais cresce
Investimentos em publicidade no meio Internet no Q1 de 2010
crescimento de 33% em relação a 2009
R$ 238 milhões
R$ 319 milhões
2009 2010
Publicidade Online
Grandes portais brasileirosExemplos: UOL , Terra e iG
Publicidade Online
Banners no UOL
Publicidade Online
Banners no Terra
Publicidade Online
Banners
no iG
Publicidade do Google
AdWords para anunciantes
AdSense para proprietários de sites
Rede de Pesquisa
SERP – Search Engines Results Pages
Segmentação por palavras-chave
Rede de Pesquisa
Parceiros
de Pesquisa
CPC
Custo por Clique
PPC
Pay per Click
Rede de Pesquisa
Parceiros
de Pesquisa
Rede de Display
Serviços agregados
Rede de Display
Contexto
da página
Segmentação
por canais
CPC ou
CPM
Custo por Mil
Google AdWords
Painel self-service do AdWords
Google AdWords
TDC 2010 no AdWords
Google AdWords
Estrutura AdWords
Gerentes : Contas : Campanhas : Grupos de Anúncios
Anúncios, Palavras-Chave e Canais
API do AdWords
Application Programming Interface
Desenvolvimento de software integrado ao Google AdWords
Maior agilidade em campanhas grandes e complexas
De acordo com as regras de negócio do anunciante
Exemplos
integração com estoque de produtos de lojas virtuais
balanceamento do orçamento entre campanhas de publicidade
atualização de horários para exibição de anúncios
API do AdWords
Web Services SOAP 1.1
Simple Object Access Protocol
XML e HTTP
https://adwords.google.com/api/adwords/cm/
https://adwords-sandbox.google.com/api/adwords/cm/
Bibliotecas-cliente em Java, PHP, Python, .NET, Perl e Ruby
Versões v13 (2008/2009), v200906, v200909 e v201003
API do AdWords
Versões v2009 09 e v2010 03
API do AdWords
Nível de Campanhas e Grupos de Anúncios
Web Service Entidade
AdGroupService Grupos de Anúncios
AdGroupAdService Grupos de Anúncios e Anúncios
AdGroupCriterionService Grupos, Palavras-Chave e Canais
Web Service Entidade
CampaignService Campanhas
CampaignTargetService Segmentações de Campanhas
CampaignCriterionService Campanhas, Palavras-Chave e Canais
Web Services e Classes
Classes de Campanhas
Web Services e Classes
Classes de Grupos de Anúncios
Operações
get e mutate
• get
• utilizada para leitura
• recebe filtro através de seletor na entrada
• devolve lista de objetos desejados como saída
• mutate
• utilizada para criação, atualização e remoção
• recebe lista de operações na entrada
• devolve objetos alterados como saída
Operação get
Exemplo getAllCampaigns
// Get the CampaignService.
CampaignServiceInterface campaignService =user.getService(AdWordsService.V201003.CAMPAIGN_SERVICE);
// Create selector.CampaignSelector selector = new CampaignSelector();
// Get all campaigns.
CampaignPage page = campaignService.get(selector);
// Display campaigns.if (page.getEntries() != null) {
for (Campaign campaign : page.getEntries()) {System.out.println("Campaign with name \"" + campaign.getName() + "\" and id \""
+ campaign.getId() + "\" was found.");}
} else {System.out.println("No campaigns were found.");
}
Operação mutate
Exemplo updateCampaign
// Get the CampaignService.CampaignServiceInterface campaignService = user.getService(AdWordsService.V201003.CAMPAIGN_SERVICE);
long campaignId = Long.parseLong(“51898803");
// Create campaign with updated budget.Campaign campaign = new Campaign();campaign.setId(campaignId);
// Create budget.Budget budget = new Budget();budget.setDeliveryMethod(BudgetBudgetDeliveryMethod.ACCELERATED);campaign.setBudget(budget);
// Create operations.CampaignOperation operation = new CampaignOperation();operation.setOperand(campaign);operation.setOperator(Operator.SET);
CampaignOperation[] operations = new CampaignOperation[] {operation};
// Update campaign.
CampaignReturnValue result = campaignService.mutate(operations);
// Display campaigns.if (result != null && result.getValue() != null) {
for (Campaign campaignResult : result.getValue()) {System.out.println("Campaign with name \"" + campaignResult.getName() + "\", id \""
+ campaignResult.getId() + "\", and budget delivery method \""+ campaignResult.getBudget().getDeliveryMethod() + "\" was updated.");
}} else {
System.out.println("No campaigns were updated.");}
CampaignService
• Leitura: CampaignPage get (CampaignSelector selector)
• Criação, atualização, remoção:
CampaignReturnValue mutate (CampaignOperation[] operations)
Operador Descrição
ADD Usado para adições
REMOVE Usado para remoções.
SET Usado para atualizações
Classe Campaign
Status
ACTIVE
DELETED
PAUSED
ServingStatus
SERVING
NONE
ENDED
PENDING
SUSPENDED
BudgetDeliveryMethod
STANDARD
ACCELERATED
Grupos de Anúncios
Exemplo getAllAdGroups
// Get the AdGroupService.AdGroupServiceInterface adGroupService =
user.getService(AdWordsService.V201003.ADGROUP_SERVICE);
long campaignId = Long.parseLong("51898803");
// Create selector.AdGroupSelector selector = new AdGroupSelector();selector.setCampaignIds(new long[] {campaignId});
// Get all ad groups.AdGroupPage page = adGroupService.get(selector);
// Display ad groups.if (page.getEntries() != null) {
for (AdGroup adGroup : page.getEntries()) {System.out.println("Ad group with name \"" + adGroup.getName()
+ "\" and id \"" + adGroup.getId() + "\" was found.");}
} else {System.out.println("No ad groups were found.");
}
Grupos de Anúncios
Exemplo updateAdGroup
// Get the AdGroupService.AdGroupServiceInterface adGroupService = user.getService(AdWordsService.V201003.ADGROUP_SERVICE);
long adGroupId = Long.parseLong(“1940071923");
// Create ad group with updated status.AdGroup adGroup = new AdGroup();adGroup.setId(adGroupId);adGroup.setStatus(AdGroupStatus.PAUSED);
// Create operations.AdGroupOperation operation = new AdGroupOperation();operation.setOperand(adGroup);operation.setOperator(Operator.SET);
AdGroupOperation[] operations = new AdGroupOperation[]{operation};
// Update ad group.AdGroupReturnValue result = adGroupService.mutate(operations);
// Display ad groups.if (result != null && result.getValue() != null) {
for (AdGroup adGroupResult : result.getValue()) {System.out.println("Ad group with name \"" + adGroupResult.getName() + "\", id \""
+ adGroupResult.getId() + "\", and status \"" + adGroupResult.getStatus()+ "\" was updated.");
}} else {
System.out.println("No ad groups were updated.");}
Palavras-Chave
Exemplo getAllActiveAdGroupCriteria
// Get the AdGroupCriterionService.AdGroupCriterionServiceInterface adGroupCriterionService =
user.getService(AdWordsService.V201003.ADGROUP_CRITERION_SERVICE);
long adGroupId = Long.parseLong("1940071923");
// Create selector.AdGroupCriterionSelector selector = new AdGroupCriterionSelector();selector.setUserStatuses(new UserStatus[] {UserStatus.ACTIVE});
// Create id filter.AdGroupCriterionIdFilter idFilter = new AdGroupCriterionIdFilter();idFilter.setAdGroupId(adGroupId);selector.setIdFilters(new AdGroupCriterionIdFilter[] {idFilter});
// Get all active ad group criteria.AdGroupCriterionPage page = adGroupCriterionService.get(selector);
// Display ad group criteria.if (page.getEntries() != null && page.getEntries().length > 0) {
for (AdGroupCriterion adGroupCriterion : page.getEntries()) {if (adGroupCriterion instanceof BiddableAdGroupCriterion) {
BiddableAdGroupCriterion biddableAdGroupCriterion =(BiddableAdGroupCriterion) adGroupCriterion;
System.out.println("Ad group criterion with ad group id \""+ biddableAdGroupCriterion.getAdGroupId() + "\", criterion id \""+ biddableAdGroupCriterion.getCriterion().getId() + "\", type \""+ biddableAdGroupCriterion.getCriterion().getCriterionType()+ "\", and user status \"" + biddableAdGroupCriterion.getUserStatus()+ "\" was found.");
}}
} else {System.out.println("No ad group criteria were found.");
}
Palavras-Chave
Exemplo updateAdGroupCriterion
// Get the AdGroupCriterionService.AdGroupCriterionServiceInterface adGroupCriterionService = user.getService(AdWordsService.V201003.ADGROUP_CRITERION_SERVICE);
long adGroupId = Long.parseLong("1940071923");
long criterionId = Long.parseLong("19326830763");
// Create ad group criterion with updated bid.Criterion criterion = new Criterion();criterion.setId(criterionId);
BiddableAdGroupCriterion biddableAdGroupCriterion = new BiddableAdGroupCriterion();biddableAdGroupCriterion.setAdGroupId(adGroupId);biddableAdGroupCriterion.setCriterion(criterion);
// Create bids.ManualCPCAdGroupCriterionBids bids = new ManualCPCAdGroupCriterionBids();bids.setMaxCpc(new Bid(new Money(null, 1000000L)));biddableAdGroupCriterion.setBids(bids);
// Create operations.AdGroupCriterionOperation operation = new AdGroupCriterionOperation();operation.setOperand(biddableAdGroupCriterion);operation.setOperator(Operator.SET);
AdGroupCriterionOperation[] operations = new AdGroupCriterionOperation[] {operation};
// Update ad group criteria.AdGroupCriterionReturnValue result = adGroupCriterionService.mutate(operations);
// Display ad group criteria.if (result != null && result.getValue() != null) {for (AdGroupCriterion adGroupCriterionResult : result.getValue()) {if (adGroupCriterionResult instanceof BiddableAdGroupCriterion) {
biddableAdGroupCriterion = (BiddableAdGroupCriterion) adGroupCriterionResult;System.out.println("Ad group criterion with ad group id \""
+ biddableAdGroupCriterion.getAdGroupId() + "\", criterion id \""+ biddableAdGroupCriterion.getCriterion().getId() + "\", type \""+ biddableAdGroupCriterion.getCriterion().getCriterionType() + "\", and bid \""+ ((ManualCPCAdGroupCriterionBids) biddableAdGroupCriterion.getBids())
.getMaxCpc().getAmount().getMicroAmount() + "\" was updated.");}
}} else {System.out.println("No ad group criteria were updated.");
}
Cabeçalhos SOAP
• Cabeçalhos de solicitação
• authToken: token de autenticação do gerente da MCC (API ClientLogin do Google)
• developerToken: string de 22 caracteres do desenvolvedor
• applicationToken: string de 22 caracteres do aplicativo
• userAgent: string arbitrária da solicitação
• clientCustomerId (opcional): id do cliente
• clientEmail (opcional): email do cliente
• Cabeçalhos de resposta
• requestId: string da solicitação
• operations: número de operações realizadas
• responseTime: tempo decorrido em milissegundos
API Errors
BudgetError.Reason
MONEY_AMOUNT_IN_WRONG_CURRENCY
MONEY_AMOUNT_LESS_THAN_CURRENCY_MINIMUM_CPC
MONEY_AMOUNT_LESS_THAN_MAXIMUM_AD_GROUP_CPM
MONEY_AMOUNT_LESS_THAN_MAXIMUM_SITE_CPM
MONEY_AMOUNT_LESS_THAN_MINIMUM_AD_GROUP_CPC
MONEY_AMOUNT_LESS_THAN_MINIMUM_CRITERIA_CPC
MONEY_AMOUNT_TOO_LARGE
NEGATIVE_MONEY_AMOUNT
NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT
Custo da API
U$ 0,25 a cada 1 mil unidades
Request (operator) Per-item cost
AdGroupAdService
get 1 per AdGroupAd
mutate (ADD) 40 per AdGroupAd
mutate (REMOVE) 1 per AdGroupAd
mutate (SET) 1 per AdGroupAd
AdGroupCriterionService
get 1 per AdGroupCriterion
mutate (ADD) 15 per AdGroupCriterion
mutate (REMOVE) 1 per AdGroupCriterion
mutate (SET) 3 per AdGroupCriterion
AdGroupService
get 1 per AdGroup
mutate (ADD) 1 per AdGroup
mutate (SET) 5 per AdGroup
CampaignService
get 1 per Campaign
mutate (ADD) 1 per Campaign
mutate (SET) 1 per Campaign
Blog AdWords API
Artigos de Ajuda
Fórum de Discussões
Contato
• Eric [email protected]@ericgomes
• Octavarium Tecnologiawww.octavarium.com.br@octavarium_tec