An AssetGroupSignal
is a signal that you can
provide to Google to optimize ad serving at the asset group level. Performance
Max uses these signals to look for new impressions with similar or stronger
intent to find conversions across Search, Display, Video, and more. Using your
asset group signals combined with Google's real-time understanding of consumer
intents and preferences, Performance Max can find new customer segments that you
might not have expected.
There are two types of hints that you can provide to Google:
audience
and
search_theme
. An AssetGroup
can have multiple asset group signals, but each signal must be added
individually by creating an AssetGroupSignal
and populating the oneof
AssetGroupSignal.signal
field.
Audiences
An Audience
is a reusable collection of
focused segments, demographic targeting, and exclusions. An
AssetGroupSignal
lets you specify which
Audience
is most likely to convert for your AssetGroup
.
Learn more about audience
signals.
An AssetGroupSignal
can only be added to or removed from an AssetGroup
. Any
modifications of the related Audience
should be performed using the
AudienceService
.
Java
AssetGroupSignal audienceSignal = AssetGroupSignal.newBuilder() .setAssetGroup(assetGroupResourceName) .setAudience( AudienceInfo.newBuilder() .setAudience(ResourceNames.audience(customerId, audienceId))) .build(); mutateOperations.add( MutateOperation.newBuilder() .setAssetGroupSignalOperation( AssetGroupSignalOperation.newBuilder().setCreate(audienceSignal)) .build());
C#
operations.Add( new MutateOperation() { AssetGroupSignalOperation = new AssetGroupSignalOperation() { Create = new AssetGroupSignal() { AssetGroup = assetGroupResourceName, Audience = new AudienceInfo() { Audience = ResourceNames.Audience(customerId, audienceId.Value) } } } } );
PHP
private static function createAssetGroupSignalOperations( int $customerId, string $assetGroupResourceName, ?int $audienceId ): array { $operations = []; if (is_null($audienceId)) { return $operations; } $operations[] = new MutateOperation([ 'asset_group_signal_operation' => new AssetGroupSignalOperation([ // To learn more about Audience Signals, see // https://developers.google.com/google-ads/api/docs/performance-max/asset-groups#audience_signals. 'create' => new AssetGroupSignal([ 'asset_group' => $assetGroupResourceName, 'audience' => new AudienceInfo([ 'audience' => ResourceNames::forAudience($customerId, $audienceId) ]) ]) ]) ]); return $operations; }
Python
mutate_operation = client.get_type("MutateOperation") operation = mutate_operation.asset_group_signal_operation.create operation.asset_group = asset_group_resource_name operation.audience.audience = googleads_service.audience_path( customer_id, audience_id ) operations.append(mutate_operation)
Ruby
# Create a list of MutateOperations that create AssetGroupSignals. def create_asset_group_signal_operations(client, customer_id, audience_id) operations = [] return operations if audience_id.nil? operations << client.operation.mutate do |m| m.asset_group_signal_operation = client.operation.create_resource. asset_group_signal do |ags| ags.asset_group = client.path.asset_group( customer_id, ASSET_GROUP_TEMPORARY_ID, ) ags.audience = client.resource.audience_info do |ai| ai.audience = client.path.audience(customer_id, audience_id) end end end operations end
Perl
sub create_asset_group_signal_operations { my ($customer_id, $audience_id) = @_; my $operations = []; return $operations if not defined $audience_id; push @$operations, Google::Ads::GoogleAds::V18::Services::GoogleAdsService::MutateOperation-> new({ assetGroupSignalOperation => Google::Ads::GoogleAds::V18::Services::AssetGroupSignalService::AssetGroupSignalOperation ->new({ # To learn more about Audience Signals, see: # https://developers.google.com/google-ads/api/docs/performance-max/asset-groups#audience_signals create => Google::Ads::GoogleAds::V18::Resources::AssetGroupSignal->new({ assetGroup => Google::Ads::GoogleAds::V18::Utils::ResourceNames::asset_group( $customer_id, ASSET_GROUP_TEMPORARY_ID ), audience => Google::Ads::GoogleAds::V18::Common::AudienceInfo->new({ audience => Google::Ads::GoogleAds::V18::Utils::ResourceNames::audience( $customer_id, $audience_id )})})})}); return $operations; }
Audiences can be created with a scope
of
ASSET_GROUP
to specify that the audience be used in a single
asset group. The Audience.asset_group
field must be populated with the resource name of an asset group if and only if
Audience.scope
is set to ASSET_GROUP
. If an audience with ASSET_GROUP
scope is upgraded to CUSTOMER
scope, Audience.asset_group
is automatically
cleared.
Recommendations for audience signal optimization
The Google Ads API provides two recommendation types to help you optimize your audience signals:
REFRESH_CUSTOMER_MATCH_LIST
recommends updating a customer list which hasn't been refreshed in some time. This is useful if the audiences you're using as asset group signals contain customer lists.IMPROVE_GOOGLE_TAG_COVERAGE
recommends deploying the Google tag across more of your website to improve conversion tracking. This can lead to improved accuracy of your conversion reporting, which can in turn lead to more accurate audience signals for your asset groups.
For more information, visit the Optimization score and recommendations guide
Search themes
A search_theme
in Performance
Max lets you provide Google AI with valuable
information about what your
customers are searching for and which topics lead to conversions for your
business. This new criterion type can be used exclusively in Performance Max
campaigns to create an AssetGroupSignal
by populating the
AssetGroupSignal.search_theme
field with a
SearchThemeInfo
criterion.
Java
AssetGroupSignal searchThemeSignal = AssetGroupSignal.newBuilder() .setAssetGroup(assetGroupResourceName) .setSearchTheme(SearchThemeInfo.newBuilder().setText("travel").build()) .build(); mutateOperations.add( MutateOperation.newBuilder() .setAssetGroupSignalOperation( AssetGroupSignalOperation.newBuilder().setCreate(searchThemeSignal)) .build());
C#
This example is not yet available in C#; you can take a look at the other languages.
PHP
This example is not yet available in PHP; you can take a look at the other languages.
Python
mutate_operation = client.get_type("MutateOperation") operation = mutate_operation.asset_group_signal_operation.create operation.asset_group = asset_group_resource_name operation.search_theme.text = "travel" operations.append(mutate_operation)
Ruby
This example is not yet available in Ruby; you can take a look at the other languages.
Perl
This example is not yet available in Perl; you can take a look at the other languages.