Orçamentos de campanha

Os orçamentos são usados para gerenciar a quantia de dinheiro gasta nas suas campanhas do Google AdWords. Este guia explica tudo o que você precisa saber para lidar com os orçamentos na AdWords API, incluindo o compartilhamento, a atribuição, a remoção e o acompanhamento deles.

Como compartilhar orçamentos

Um orçamento pode se aplicar a uma única campanha ou ser compartilhado entre muitas campanhas.

Todo novo Budget criado com o uso da AdWords API é compartilhável por padrão. Para verificar isso, confira o valor de isExplicitlyShared por meio de uma chamada da API para o BudgetService:

  • isExplicitlyShared = true significa que o orçamento pode ser compartilhado entre várias campanhas.
  • isExplicitlyShared = false significa que o orçamento pode ser usado por apenas uma campanha.

Explicitly shared budgets appear in an account's Shared Library in the AdWords user interface, whereas a non–shared budget appears only within its associated campaign's Settings.

Como atribuir um orçamento a uma campanha

Para atribuir um orçamento a uma campanha, crie um objeto Budget com o BudgetService e, em seguida, use o ID de orçamento resultante para fazer uma chamada posterior para o CampaignService. Se a operação do orçamento for bem-sucedida, um orçamento órfão (orçamento sem associação a nenhuma campanha) será criado, mesmo se houver falha na operação de campanha. Recomendamos que você reutilize ou remova esses orçamentos.

Nova campanha

Para uma nova campanha, na operação ADD do CampaignService.mutate(), defina o atributo budget da campanha como um objeto Budget com o budgetId definido como o ID de um orçamento, conforme demonstrado no exemplo de código Java abaixo. No exemplo, é criado um orçamento compartilhado porque isExplicitlyShared é deixado com o valor padrão true.

// Get the BudgetService.
BudgetServiceInterface budgetService =
    adWordsServices.get(session, BudgetServiceInterface.class);

// Create a budget, which can be shared by multiple campaigns.
Budget sharedBudget = new Budget();
sharedBudget.setName("Interplanetary Cruise #" + System.currentTimeMillis());
Money budgetAmount = new Money();
budgetAmount.setMicroAmount(50000000L);
sharedBudget.setAmount(budgetAmount);
sharedBudget.setDeliveryMethod(BudgetBudgetDeliveryMethod.STANDARD);
BudgetOperation budgetOperation = new BudgetOperation();
budgetOperation.setOperand(sharedBudget);
budgetOperation.setOperator(Operator.ADD);

// Execute the new budget operation and save the assigned budget ID.
Long budgetId =
    budgetService.mutate(new BudgetOperation[] {budgetOperation}).getValue(0).getBudgetId();
Campaign campaign = new Campaign();
campaign.setName("Interplanetary Cruise #" + System.currentTimeMillis());
// Recommendation: Set the campaign to PAUSED when creating it to stop
// the ads from immediately serving. Set to ENABLED once you've added
// targeting and the ads are ready to serve.
campaign.setStatus(CampaignStatus.PAUSED);
campaign.setAdvertisingChannelType(AdvertisingChannelType.SEARCH);

// Set the bidding strategy configuration.
BiddingStrategyConfiguration biddingStrategyConfiguration =
    new BiddingStrategyConfiguration();
biddingStrategyConfiguration.setBiddingStrategyType(BiddingStrategyType.MANUAL_CPC);
campaign.setBiddingStrategyConfiguration(biddingStrategyConfiguration);

// Only the budgetId should be set.
Budget budget = new Budget();
budget.setBudgetId(budgetId);
campaign.setBudget(budget);
CampaignServiceInterface campaignService =
    adWordsServices.get(session, CampaignServiceInterface.class);
CampaignOperation operation = new CampaignOperation();
operation.setOperand(campaign);
operation.setOperator(Operator.ADD);
CampaignOperation[] operations = new CampaignOperation[] {operation};
CampaignReturnValue result = campaignService.mutate(operations);

Como substituir o orçamento de uma campanha

Para substituir o orçamento de uma campanha existente, use uma operação SET no CampaignService.mutate() e defina o atributo budget de uma campanha como um objeto Budget com o budgetId definido como o ID do orçamento existente (juntamente com outros campos da campanha que você queira configurar). Isso substitui o orçamento existente associado à campanha por aquele especificado pelo budgetId, pois uma campanha pode estar associada a mais de um orçamento por vez.

Como dissociar um orçamento de uma campanha

A campanha precisa sempre estar associada a um orçamento. Para remover um orçamento de uma campanha, altere o ID do orçamento associado à campanha e substitua-o por outro. Para identificar as campanhas que usam um orçamento específico, consulte Como recuperar a lista de campanhas de um determinado orçamento.

Como remover um orçamento

Como ocorre com as campanhas, não é possível excluir um orçamento completamente: você pode somente definir o status como REMOVED. Para fazer isso, primeiro verifique se não existem campanhas ENABLED ou PAUSED que usam o orçamento. Em seguida, envie uma solicitação BudgetService.mutate() REMOVE com o ID do orçamento. Se seu campo ReferenceCount for maior do que 0, isso significará que existem campanhas ENABLED ou PAUSED que ainda usam o orçamento. É possível recuperar o campo ReferenceCount de um orçamento como o campo ReferenceCount de uma operação BudgetService.get() ou o campo BudgetReferenceCount de uma operação CampaignService.get().

// Retrieve a budget with budget ID of interest
Long budgetId =  Long.parseLong("INSERT_BUDGET_ID_HERE");
Selector selector = new SelectorBuilder()
    .fields(BudgetField.BudgetId, BudgetField.BudgetReferenceCount)
    .orderAscBy(BudgetField.BudgetId)
    .equals(BudgetField.BudgetId, budgetId.toString())
    .build();
// (Code Excluded) Get a Budget object from the result of BudgetService.get
// Remove the budget only if its referenceCount == 0 (no campaigns are using it)
if (budget.getReferenceCount() == 0) {
    BudgetServiceInterface budgetService =
        adWordsServices.get(session, BudgetServiceInterface.class);
    BudgetOperation operation = new BudgetOperation();
    operation.setOperand(budget);
    operation.setOperator(Operator.REMOVE);
    BudgetOperation[] operations = new BudgetOperation[] {operation};
    BudgetReturnValue result = budgetService.mutate(operations);
}

Além disso, é possível remover um orçamento não compartilhado que é usado por uma única campanha. Para fazer isso, remova essa campanha. Quando você define o status de uma dessas campanhas como REMOVED, o status do orçamento não compartilhado usado por ela também é automaticamente definido como REMOVED.

Como recuperar a lista de campanhas para determinado orçamento

Receber uma lista de campanhas que usam o mesmo orçamento pode ser útil para equilibrar o uso dos orçamentos. Faça uma operação CampaignService.get() solicitando, no mínimo, o campo Id juntamente com um predicado de BudgetId igual ao ID do orçamento desejado:

Long budgetId =  Long.parseLong("INSERT_BUDGET_ID_HERE");
Selector selector = new SelectorBuilder()
    .fields(CampaignField.Id, CampaignField.BudgetId)
    .orderAscBy(CampaignField.Id)
    .equals(CampaignField.BudgetId, budgetId.toString())
    .build();

Se preferir, você pode usar esta declaração AWQL para receber os mesmos resultados:

SELECT BudgetId, BudgetName, Amount, IsBudgetExplicitlyShared,
       AssociatedCampaignId, Impressions
FROM BUDGET_PERFORMANCE_REPORT
WHERE BudgetId = <YOUR_BUDGET_ID>

Acompanhamento de desempenho

Para recuperar as estatísticas de desempenho do orçamento, use um Relatório de desempenho do orçamento, que inclui todas as estatísticas reunidas, por padrão, no nível da campanha, uma linha por orçamento. Se os campos de segmento forem utilizados, você poderá ter mais de uma linha por orçamento. Consulte segmentação para ver mais detalhes.

Restrições

As campanhas que tiverem experimentos de campanha ativos precisam ter um orçamento não compartilhado e exclusivo.

Erros comuns

Erro Descrição
BudgetError.CANNOT_UPDATE_BUDGET_TO_IMPLICITLY_SHARED Indica que você tentou definir o valor isExplicitlyShared de um orçamento de true para false em uma operação SET. Quando um orçamento é compartilhado explicitamente (isExplicitlyShared = true), não é possível alterar o isExplicitlyShared de volta para false.
EntityCountLimitExceeded.ACCOUNT_LIMIT Indica que você atingiu o número máximo de orçamentos em uma conta.
CampaignError.CAMPAIGN_CANNOT_USE_SHARED_BUDGET A campanha à qual você está tentando adicionar o orçamento usa experimentos de campanha. Além disso, o orçamento já está sendo usado por outra campanha.
BudgetError.CANNOT_EDIT_SHARED_BUDGET Você está tentando modificar o orçamento associado a uma campanha usando o CampaignService. No entanto, essa operação só pode ser feita por meio do BudgetService.
BudgetError.BUDGET_IN_USE Você está tentando remover um orçamento associado a uma ou mais campanhas ativas ou pausadas.

Enviar comentários sobre…

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