AI-generated Key Takeaways
-
The Google Ads API supports configuring customer lifecycle goals, including customer acquisition and retention goals, through dedicated resources.
-
Customer lifecycle goals can be configured at the customer-level using the
CustomerLifecycleGoal
resource and at the campaign-level using theCampaignLifecycleGoal
resource. -
Proper audience segmentation for customer lifecycle goals is managed using the
UserListCustomerType
resource. -
Retention goals, primarily for Performance Max campaigns, aim to enhance customer loyalty and can be set at the account or campaign level.
-
Lifecycle goals can be retrieved using the
search
orsearchStream
methods of theGoogleAdsService
.
Use the CustomerLifecycleGoal
and CampaignLifecycleGoal
resources of the Google Ads API to configure goals related to the customer lifecycle. The Google Ads API supports customer acquisition goals for efficiently acquiring new customers through your Google Ads Search and Performance Max campaigns.
If your Google Ads account is using cross-account conversion tracking, then you must configure customer lifecycle goals in the Google Ads conversion account instead of directly in your Google Ads account. You should still set campaign lifecycle goals in your account, however. This is similar to how you manage other goals when using cross-account conversion tracking.
Configure customer lifecycle goals
At the customer-level, configure a lifecycle goal by creating or updating a CustomerLifecycleGoal
. There can be at most one CustomerLifecycleGoal
per Google Ads account. The customer_acquisition_goal_value_settings.value
field defines the additional value adjustment to add to a new customer's first purchase conversion. The customer_acquisition_goal_value_settings.high_lifetime_value
defines the incremental conversion value for new customers who are of high value. High lifetime value should be greater than value, if set.
Segment your audiences
You must use the UserListCustomerType
resource to segment your audiences for customer lifecycle goals. You must associate each user list with one or more categories by creating a UserListCustomerType
for each combination of user list and category.
Use the UserListCustomerTypeService
to create UserListCustomerType
instances. If you have previously populated the CustomerLifecycleGoal.lifecycle_goal_customer_definition_settings.existing_user_lists
field, then your account will already contain related UserListCustomerType
instances.
The UserListCustomerTypeService
only supports create
and remove
operations, so if you want to update an existing UserListCustomerType
you must remove it and then create a new one with the necessary updates.
A UserListCustomerType
can only be assigned to one user list, but a user list can have multiple associated UserListCustomerType
instances as long as there are no conflicts between the UserListCustomerType
instances. Trying to assign UserListCustomerType
instances with the following combinations of customer_type_category
to the same user list will result in a UserListCustomerTypeError.CONFLICTING_CUSTOMER_TYPES
error:
First customer_type_category | Second customer_type_category |
---|---|
PURCHASERS | CONVERTED_LEADS |
PURCHASERS | QUALIFIED_LEADS |
PURCHASERS | CART_ABANDONERS |
CONVERTED_LEADS | QUALIFIED_LEADS |
DISENGAGED_CUSTOMERS | CONVERTED_LEADS |
DISENGAGED_CUSTOMERS | QUALIFIED_LEADS |
DISENGAGED_CUSTOMERS | CART_ABANDONERS |
Configure campaign lifecycle goals
At the campaign level, configure a lifecycle goal by creating or updating a CampaignLifecycleGoal
. There can be at most one CampaignLifecycleGoal
per campaign.
The customer_acquisition_goal_settings
field of a campaign-level goal lets you set the optimization mode of the campaign as well as override the value settings from the parent customer goal.
The optimization_mode
can be one of the following values:
TARGET_ALL_EQUALLY
- The campaign targets new and existing customers equally. This is the default optimization mode.
BID_HIGHER_FOR_NEW_CUSTOMERS
- The campaign targets both new and existing customers, but bids higher for customers that are predicted be new and are not in one of the
existing_user_lists
. TARGET_NEW_CUSTOMERS
- The campaign only targets new customers.
The value_settings
are the same as the customer_acquisition_goal_value_settings
on the customer-level goal. Use these campaign-level settings to override the values for a specific campaign.
Retention goals
Retention goals are designed to drive customer loyalty and high lifetime value (LTV) within your business. They offer multiple modes within Performance Max campaigns, allowing you to target specific segments of existing customers.
Before creating a retention goal, you must satisfy the prerequisites described in About the retention goal. This includes having a Performance Max campaign and a Customer Match user list.
To create a retention goal you must first initialize the GoalService and issue a request using the mutate_goals
method to create a new goal.
def create_goal(client: GoogleAdsClient, customer_id: str) -> None: """Sends an API request to add a new Goal. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. """ goal_operation: GoalOperation = client.get_type("GoalOperation") goal = goal_operation.create goal.retention_goal_settings.value_settings.additional_value = 50.0 goal.retention_goal_settings.value_settings.additional_high_lifetime_value = 100.0 goal_service = client.get_service("GoalService") goal_service.mutate_goals( customer_id=customer_id, operations=[goal_operation] )
This will create a new retention goal at the account level for the specified client account, which will be applied to all of its campaigns. By default, this goal will target all users in your Customer Match user lists.
It's possible to override this goal with campaign-level settings, using a CampaignGoalConfig
. Once you have an account-level goal, use its resource_name
to create a CampaignGoalConfig
using the mutate_campaign_goal_configs
method on the CampaignGoalConfigService
.
def create_campaign_goal_config( client: GoogleAdsClient, customer_id: str, goal_resource_name: str, campaign_resource_name: str ) -> None: """Sends an API request to add a new CampaignGoalConfig. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. goal_resource_name: the resource name of an existing Goal. campaign_resource_name: the resource name of an existing Campaign. """ operation: CampaignGoalConfigOperation = client.get_type("CampaignGoalConfigOperation") goal_config = operation.create goal_config.campaign = campaign_resource_name goal_config.goal = goal_resource_name # Note that the target_option will be set to TARGET_ALL by default. In order # to set it to TARGET_SPECIFIC your account must be allowlisted. # # goal_config.campaign_retention_settings.target_option = ( # client.enums.CustomerLifecycleOptimizationModeEnum.TARGET_SPECIFIC # ) campaign_goal_config_service = client.get_service("CampaignGoalConfigService") campaign_goal_config_service.mutate_campaign_goal_configs( customer_id=customer_id, operations=[operation] )
The campaign_retention_settings.target_option
will default to TARGET_ALL
if not set. The option to set to TARGET_SPECIFIC
is only available to allowlisted users.
Retrieve lifecycle goals
As with other resources in the Google Ads API, use the search
or searchStream
methods of GoogleAdsService
to retrieve lifecycle goals.
The following query retrieves the details of every CustomerLifecycleGoal
in a Google Ads account:
SELECT customer_lifecycle_goal.owner_customer, customer_lifecycle_goal.customer_acquisition_goal_value_settings.value, customer_lifecycle_goal.customer_acquisition_goal_value_settings.high_lifetime_value FROM customer_lifecycle_goal
Similarly, the following query retrieves the details of every CampaignLifecycleGoal
:
SELECT campaign_lifecycle_goal.campaign, campaign_lifecycle_goal.customer_acquisition_goal_settings.optimization_mode, campaign_lifecycle_goal.customer_acquisition_goal_settings.value_settings.value, campaign_lifecycle_goal.customer_acquisition_goal_settings.value_settings.high_lifetime_value FROM campaign_lifecycle_goal