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
CustomerLifecycleGoalresource and at the campaign-level using theCampaignLifecycleGoalresource. -
Proper audience segmentation for customer lifecycle goals is managed using the
UserListCustomerTyperesource. -
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
searchorsearchStreammethods 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