Share your feedback about the Google Ads (AdWords) API. Take the 2021 AdWords API and Google Ads API Annual Survey.

Campaign goals

Managing campaign goals

If you have campaigns with goals that differ from your account-level goals, you can modify each CampaignConversionGoal and its biddable setting as needed. For example, if your account generally optimizes for e-commerce but you have one campaign targeting store visits, you could set biddable=true for all CampaignGoal objects with category=STORE_VISIT, and biddable=false for all other CampaignGoal objects.

When you override the customer-level goals for a campaign by issuing a CampaignConversionGoalOperation or using a custom goal, Google Ads will no longer apply future CustomerGoal changes to any of the campaign's CampaignConversionGoals. The CampaignGoals are completely independent from that point forward, and will remain so unless you transition the campaign back to using customer-level goals by updating its conversion goal campaign configuration as described below.

Campaign goals for new conversion actions

As with CustomerGoal, whenever a ConversionAction is added to the effective conversion account with a new category and origin combination, Google Ads will automatically create a new CampaignConversionGoal for that combination. The biddable attribute of the campaign goal will be true unless either of the following conditions are met, in which case biddable will be false:

  • Any other CampaignConversionGoal for the campaign and the new action's category has biddable set to false.

  • The category and origin combination is in the following table.

    category origin
    BEGIN_CHECKOUT GOOGLE_HOSTED
    CONTACT GOOGLE_HOSTED
    ENGAGEMENT GOOGLE_HOSTED
    GET_DIRECTIONS GOOGLE_HOSTED
    PAGE_VIEW GOOGLE_HOSTED
    STORE_SALE STORE
    STORE_VISIT STORE

Retrieving campaign goals

Use the following query to retrieve the list of CampaignConversionGoals for your account. For convenience, you can include attributes of campaign in the SELECT clause, or use them in the WHERE clause to only retrieve the campaign goals for specific campaigns. The query below shows how to filter by campaign.advertising_channel_type as an example, but you could also filter by other campaign attributes such as campaign.id, campaign.name, etc.

SELECT
  campaign_conversion_goal.campaign,
  campaign_conversion_goal.category,
  campaign_conversion_goal.origin,
  campaign_conversion_goal.biddable,
  campaign.id,
  campaign.name
FROM campaign_conversion_goal
WHERE campaign.advertising_channel_type = PERFORMANCE_MAX

Goal configuration level

The goal_config_level of ConversionGoalCampaignConfig indicates the source of goals for a campaign. Campaigns with goal_config_level of CUSTOMER are using customer-level goals, while campaigns with goal_config_level of CAMPAIGN are using campaign-level goals.

Updating any of the CampaignConversionGoals of a campaign or using a custom goal will automatically change the campaign's ConversionGoalCampaignConfig to have goal_config_level=CAMPAIGN. You can revert all campaign-specific goal settings for a campaign and transition it back to using customer-level goals by setting the goal_config_level to CUSTOMER.

Use the following query to retrieve the goal_config_level for each campaign.

SELECT
  conversion_goal_campaign_config.campaign,
  conversion_goal_campaign_config.custom_conversion_goal,
  conversion_goal_campaign_config.goal_config_level,
  campaign.id,
  campaign.name
FROM conversion_goal_campaign_config

Custom goals

Both CustomerConversionGoal and CampaignConversionGoal express goals based on combinations of category and origin. Custom goals provide the additional flexibility of optimizing for specific conversion actions, regardless of origin or category.

One scenario where this is useful is if you want to set a goal based on a subset of goals for the same category and origin. For example, you might have three conversion actions with category=DEFAULT and origin=WEBSITE, but on one particular campaign, you only want to bid based on two of those conversion actions. In this scenario, you could have the campaign use a custom goal that only includes those two conversion actions, and set biddable=false on the CampaignGoal for category=DEFAULT and origin=WEBSITE.

The steps for creating and applying a custom goal to a campaign are as follows:

  1. Create a CustomConversionGoal. Set the conversion_actions repeated field to the list of ConversionAction resource names that Google Ads should use for optimization, and set the name to a name of your choosing.

  2. Update the campaign's ConversionGoalCampaignConfig, setting the custom_conversion_goal to the resource name of the CustomConversionGoal from the previous step, and setting the operation's update_mask to custom_conversion_goal.

  3. Update the biddable attribute of any CampaignConversionGoal as needed. For example, if you only want Google Ads to optimize for the conversion actions in the custom goal, set biddable to false on each CampaignConversionGoal. If you want Google Ads to optimize for the conversion actions in the custom goal in addition to conversion actions for specific combinations of category and origin, ensure that biddable is true for each corresponding CampaignConversionGoal, and false for each CampaignConversionGoal of other combinations of origin and category.

Retrieving custom goals

Use the following query to retrieve all of the CustomConversionGoal resources in your account. The response will include custom goals from the effective conversion account if your account is using cross-account conversion tracking.

SELECT
  custom_conversion_goal.id,
  custom_conversion_goal.name,
  custom_conversion_goal.status,
  custom_conversion_goal.conversion_actions
FROM custom_conversion_goal

In addition, you can include attributes of custom_conversion_goal and campaign when querying the conversion_goal_campaign_config resource. This is useful for seeing how your campaigns, custom goals, and goal configurations all relate to each other in a single response.

SELECT
  conversion_goal_campaign_config.campaign,
  conversion_goal_campaign_config.custom_conversion_goal,
  conversion_goal_campaign_config.goal_config_level,
  campaign.id,
  campaign.name,
  custom_conversion_goal.name,
  custom_conversion_goal.status,
  custom_conversion_goal.conversion_actions
FROM conversion_goal_campaign_config