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

Post on 09-Jul-2015

1.259 views 4 download

description

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

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

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 Gomesericgomes@octavarium.com.br@ericgomes

• Octavarium Tecnologiawww.octavarium.com.br@octavarium_tec