Create a Campaign Budget

  • Campaign budgets in the Google Ads API are shareable by default.

  • The provided examples show how to create a new average daily budget for a campaign using various programming languages.

  • The Google Ads API offers several recommendation types, such as CAMPAIGN_BUDGET, MOVE_UNUSED_BUDGET, MARGINAL_ROI_CAMPAIGN_BUDGET, and FORECASTING_CAMPAIGN_BUDGET, to help optimize campaign budgets.

  • These recommendations provide suggestions for new budget amounts, reallocating excess budget, and adjusting budgets based on predicted ROI or future constraints.

The following example creates a new average daily budget for a campaign.

Java

private static String addCampaignBudget(GoogleAdsClient googleAdsClient, long customerId) {  CampaignBudget budget =  CampaignBudget.newBuilder()  .setName("Interplanetary Cruise Budget #" + getPrintableDateTime())  .setDeliveryMethod(BudgetDeliveryMethod.STANDARD)  .setAmountMicros(500_000)  .build();  CampaignBudgetOperation op = CampaignBudgetOperation.newBuilder().setCreate(budget).build();  try (CampaignBudgetServiceClient campaignBudgetServiceClient =  googleAdsClient.getLatestVersion().createCampaignBudgetServiceClient()) {  MutateCampaignBudgetsResponse response =  campaignBudgetServiceClient.mutateCampaignBudgets(  Long.toString(customerId), ImmutableList.of(op));  String budgetResourceName = response.getResults(0).getResourceName();  System.out.printf("Added budget: %s%n", budgetResourceName);  return budgetResourceName;  } }  

C#

private static string CreateBudget(GoogleAdsClient client, long customerId) {  // Get the BudgetService.  CampaignBudgetServiceClient budgetService = client.GetService(  Services.V22.CampaignBudgetService);  // Create the campaign budget.  CampaignBudget budget = new CampaignBudget()  {  Name = "Interplanetary Cruise Budget #" + ExampleUtilities.GetRandomString(),  DeliveryMethod = BudgetDeliveryMethod.Standard,  AmountMicros = 500000  };  // Create the operation.  CampaignBudgetOperation budgetOperation = new CampaignBudgetOperation()  {  Create = budget  };  // Create the campaign budget.  MutateCampaignBudgetsResponse response = budgetService.MutateCampaignBudgets(  customerId.ToString(), new CampaignBudgetOperation[] { budgetOperation });  return response.Results[0].ResourceName; }  

PHP

private static function addCampaignBudget(GoogleAdsClient $googleAdsClient, int $customerId) {  // Creates a campaign budget.  $budget = new CampaignBudget([  'name' => 'Interplanetary Cruise Budget #' . Helper::getPrintableDatetime(),  'delivery_method' => BudgetDeliveryMethod::STANDARD,  'amount_micros' => 500000  ]);  // Creates a campaign budget operation.  $campaignBudgetOperation = new CampaignBudgetOperation();  $campaignBudgetOperation->setCreate($budget);  // Issues a mutate request.  $campaignBudgetServiceClient = $googleAdsClient->getCampaignBudgetServiceClient();  $response = $campaignBudgetServiceClient->mutateCampaignBudgets(  MutateCampaignBudgetsRequest::build($customerId, [$campaignBudgetOperation])  );  /** @var CampaignBudget $addedBudget */  $addedBudget = $response->getResults()[0];  printf("Added budget named '%s'%s", $addedBudget->getResourceName(), PHP_EOL);  return $addedBudget->getResourceName(); }  

Python

# Create a budget, which can be shared by multiple campaigns. campaign_budget_operation: CampaignBudgetOperation = client.get_type( "CampaignBudgetOperation" ) campaign_budget: CampaignBudget = campaign_budget_operation.create campaign_budget.name = f"Interplanetary Budget {uuid.uuid4()}" campaign_budget.delivery_method = ( client.enums.BudgetDeliveryMethodEnum.STANDARD ) campaign_budget.amount_micros = 500000 # Add budget. campaign_budget_response: MutateCampaignBudgetsResponse try: budget_operations: List[CampaignBudgetOperation] = [ campaign_budget_operation ] campaign_budget_response = ( campaign_budget_service.mutate_campaign_budgets( customer_id=customer_id, operations=budget_operations, ) ) except GoogleAdsException as ex: handle_googleads_exception(ex) 

Ruby

# Create a budget, which can be shared by multiple campaigns. campaign_budget = client.resource.campaign_budget do |cb|  cb.name = "Interplanetary Budget #{(Time.new.to_f * 1000).to_i}"  cb.delivery_method = :STANDARD  cb.amount_micros = 500000 end operation = client.operation.create_resource.campaign_budget(campaign_budget) # Add budget. return_budget = client.service.campaign_budget.mutate_campaign_budgets(  customer_id: customer_id,  operations: [operation], )  

Perl

# Create a campaign budget, which can be shared by multiple campaigns. my $campaign_budget =  Google::Ads::GoogleAds::V22::Resources::CampaignBudget->new({  name => "Interplanetary budget #" . uniqid(),  deliveryMethod => STANDARD,  amountMicros => 500000  }); # Create a campaign budget operation. my $campaign_budget_operation =  Google::Ads::GoogleAds::V22::Services::CampaignBudgetService::CampaignBudgetOperation  ->new({create => $campaign_budget}); # Add the campaign budget. my $campaign_budgets_response = $api_client->CampaignBudgetService()->mutate({  customerId => $customer_id,  operations => [$campaign_budget_operation]});  

Campaign budget recommendations

The Google Ads API provides some recommendation types to help you optimize your campaign budgets:

  • CAMPAIGN_BUDGET suggests a new budget amount for budget-constrained campaigns.

  • MOVE_UNUSED_BUDGET highlights opportunities to reallocate excess budget from one campaign to another budget-constrained campaign.

  • MARGINAL_ROI_CAMPAIGN_BUDGET suggests a new budget amount for campaigns whose ROI is predicted to increase with a budget adjustment.

  • FORECASTING_CAMPAIGN_BUDGET suggests a new budget amount for campaigns that are expected to become budget-constrained in the future.

For additional recommendation types and guidance on working with recommendations in the Google Ads API, visit the Optimization score and recommendations guide.