Asset Group Signals

  • AssetGroupSignals are used in Performance Max to optimize ad serving by providing Google with hints about user intent and preferences to find new customer segments.

  • There are two types of AssetGroupSignal hints: audiences and search themes, which help Google AI understand what customers are searching for and which topics lead to conversions.

  • An AssetGroup can have multiple AssetGroupSignals, but each signal must be added individually.

  • Audiences can be created with a scope of ASSET_GROUP for use in a single asset group.

  • Google Ads API provides recommendations like refreshing customer match lists and improving Google tag coverage to optimize audience signals.

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;
}