39
Automação de Campanhas de Links Patrocinados com a API do Google AdWords

Apresentação tdc 2010 eric gomes - octavarium - ad words

Embed Size (px)

DESCRIPTION

Automação de Campanhas de Links Patrocinados com a API do Google AdWords

Citation preview

Page 1: Apresentação tdc 2010   eric gomes - octavarium - ad words

Automação de Campanhasde Links Patrocinados com a API do Google AdWords

Page 2: Apresentação tdc 2010   eric gomes - octavarium - ad words

Internet

Acesso residencial

crescimento em número de internautas e tempo de uso

Page 3: Apresentação tdc 2010   eric gomes - octavarium - ad words

Internet

Banda Larga no Brasil

crescimento de 30,4% entre 2008 e 2009

Page 4: Apresentação tdc 2010   eric gomes - octavarium - ad words

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

Page 5: Apresentação tdc 2010   eric gomes - octavarium - ad words

Publicidade Online

Grandes portais brasileirosExemplos: UOL , Terra e iG

Page 6: Apresentação tdc 2010   eric gomes - octavarium - ad words

Publicidade Online

Banners no UOL

Page 7: Apresentação tdc 2010   eric gomes - octavarium - ad words

Publicidade Online

Banners no Terra

Page 8: Apresentação tdc 2010   eric gomes - octavarium - ad words

Publicidade Online

Banners

no iG

Page 9: Apresentação tdc 2010   eric gomes - octavarium - ad words

Publicidade do Google

AdWords para anunciantes

AdSense para proprietários de sites

Page 10: Apresentação tdc 2010   eric gomes - octavarium - ad words

Rede de Pesquisa

SERP – Search Engines Results Pages

Segmentação por palavras-chave

Page 11: Apresentação tdc 2010   eric gomes - octavarium - ad words

Rede de Pesquisa

Parceiros

de Pesquisa

CPC

Custo por Clique

PPC

Pay per Click

Page 12: Apresentação tdc 2010   eric gomes - octavarium - ad words

Rede de Pesquisa

Parceiros

de Pesquisa

Page 13: Apresentação tdc 2010   eric gomes - octavarium - ad words

Rede de Display

Serviços agregados

Page 14: Apresentação tdc 2010   eric gomes - octavarium - ad words

Rede de Display

Contexto

da página

Segmentação

por canais

CPC ou

CPM

Custo por Mil

Page 15: Apresentação tdc 2010   eric gomes - octavarium - ad words

Google AdWords

Painel self-service do AdWords

Page 16: Apresentação tdc 2010   eric gomes - octavarium - ad words

Google AdWords

TDC 2010 no AdWords

Page 17: Apresentação tdc 2010   eric gomes - octavarium - ad words

Google AdWords

Estrutura AdWords

Gerentes : Contas : Campanhas : Grupos de Anúncios

Anúncios, Palavras-Chave e Canais

Page 18: Apresentação tdc 2010   eric gomes - octavarium - ad words

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

Page 19: Apresentação tdc 2010   eric gomes - octavarium - ad words

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

Page 20: Apresentação tdc 2010   eric gomes - octavarium - ad words

API do AdWords

Versões v2009 09 e v2010 03

Page 21: Apresentação tdc 2010   eric gomes - octavarium - ad words

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

Page 22: Apresentação tdc 2010   eric gomes - octavarium - ad words

Web Services e Classes

Classes de Campanhas

Page 23: Apresentação tdc 2010   eric gomes - octavarium - ad words

Web Services e Classes

Classes de Grupos de Anúncios

Page 24: Apresentação tdc 2010   eric gomes - octavarium - ad words

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

Page 25: Apresentação tdc 2010   eric gomes - octavarium - ad words

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.");

}

Page 26: Apresentação tdc 2010   eric gomes - octavarium - ad words

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.");}

Page 27: Apresentação tdc 2010   eric gomes - octavarium - ad words

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

Page 28: Apresentação tdc 2010   eric gomes - octavarium - ad words

Classe Campaign

Status

ACTIVE

DELETED

PAUSED

ServingStatus

SERVING

NONE

ENDED

PENDING

SUSPENDED

BudgetDeliveryMethod

STANDARD

ACCELERATED

Page 29: Apresentação tdc 2010   eric gomes - octavarium - ad words

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.");

}

Page 30: Apresentação tdc 2010   eric gomes - octavarium - ad words

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.");}

Page 31: Apresentação tdc 2010   eric gomes - octavarium - ad words

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.");

}

Page 32: Apresentação tdc 2010   eric gomes - octavarium - ad words

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.");

}

Page 33: Apresentação tdc 2010   eric gomes - octavarium - ad words

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

Page 34: Apresentação tdc 2010   eric gomes - octavarium - ad words

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

Page 35: Apresentação tdc 2010   eric gomes - octavarium - ad words

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

Page 36: Apresentação tdc 2010   eric gomes - octavarium - ad words

Blog AdWords API

Page 37: Apresentação tdc 2010   eric gomes - octavarium - ad words

Artigos de Ajuda

Page 38: Apresentação tdc 2010   eric gomes - octavarium - ad words

Fórum de Discussões

Page 39: Apresentação tdc 2010   eric gomes - octavarium - ad words

Contato

• Eric [email protected]@ericgomes

• Octavarium Tecnologiawww.octavarium.com.br@octavarium_tec