借助指定零售目标的效果最大化广告系列,您可以在更多广告资源中投放广告,从而扩大覆盖面并实现更多目标。
您可能需要创建新的素材资源(例如文字、图片或视频 ),以便在新的格式和展示位置(例如 文字、Google 探索、YouTube 插播广告和展示广告)中投放广告。
现在,如果您对于哪些细分用户群更有可能 转化有独到见解,可以利用受众群体信号告知 Google。
与标准购物广告系列相比,效果最大化广告系列具有以下优势:
- 根据 Merchant Center Feed 或广告系列条件进行语言定位
- 最终到达网址扩展
- 选择“实体店光顾”目标后,系统会定位到所有实体店
- 能够按客户或按广告系列设置转化目标
将 Merchant Center 账号与 Google Ads 账号相关联
如需使用指定零售目标的效果最大化广告系列,Google Ads 账号必须与现有的 Merchant Center 账号相关联。与 Merchant Center 相关联后,系统可以自动为广告系列生成素材资源,但覆盖面和效果会受到限制。
添加素材资源组
添加素材资源组后,系统会启用购物广告和动态再营销渠道; 设置网址扩展后,系统会启用动态搜索广告。一般来说,您提供的素材资源越多,系统可制作的广告格式就越多,可用来定位更多广告资源。
我们建议让每个素材资源组分别定位到不同的产品。请注意,产品信息组存在 限制。作为最佳实践,您应仅定位到素材资源组中的特定产品组,例如,素材资源组 1 定位到产品 A-L,素材资源组 2 定位到产品 M-Z。
如果您希望按受众群体定制素材资源讯息,可以为一个广告系列创建多个素材资源组。这样,您就可以为同一最终到达网址创建不同的素材资源组。
了解在设置效果最大化广告系列时可采取的更多 优化技巧。
制作指定零售目标的效果最大化广告系列
与其他 购物广告系列一样,设置广告系列的 ShoppingSetting 字段。
必填
merchant_id- 包含要宣传的产品的账号的 Merchant Center ID。
可选
feed_label一个字符串,用作 Merchant Center 中定义的 Feed 标签。如果您需要从特定的 Merchant Center Feed中选择产品,则应使用此字段 。如果未指定,则广告系列会使用 Merchant Center 中的所有可用 Feed。
如果您之前使用的是已废弃的
sales_country(采用双字母 国家/地区代码 (XX) 格式),则应改用feed_label。如需了解详情,请参阅 Feed 标签支持文章。请注意,在
feed_label中提交国家/地区代码不会自动 启用在该国家/地区投放广告的功能;您必须先设置地理位置 定位。campaign_priority购物广告系列的优先级。优先级数值较高的广告系列优先于优先级较低的广告系列。
enable_local此广告系列的“为本地店铺所售产品启用广告”选项。
如果存在产品目录,系统会默认启用本地产品。您可以使用产品信息组进行过滤。
language您可以选择多种语言,向多个不同的具体客户群体展示您的广告。
转化目标
您可以通过更新 广告系列级转化目标来替换客户级转化目标,如以下示例所示:
Java
/** Retrieves the list of customer conversion goals. */ private static List<CustomerConversionGoal> getCustomerConversionGoals( GoogleAdsClient googleAdsClient, long customerId) { String query = "SELECT customer_conversion_goal.category, customer_conversion_goal.origin " + "FROM customer_conversion_goal"; List<CustomerConversionGoal> customerConversionGoals = new ArrayList<>(); try (GoogleAdsServiceClient googleAdsServiceClient = googleAdsClient.getLatestVersion().createGoogleAdsServiceClient()) { // The number of conversion goals is typically less than 50, so we use // GoogleAdsService.search instead of search_stream. SearchPagedResponse response = googleAdsServiceClient.search(Long.toString(customerId), query); for (GoogleAdsRow googleAdsRow : response.iterateAll()) { customerConversionGoals.add(googleAdsRow.getCustomerConversionGoal()); } } return customerConversionGoals; } /** Creates a list of MutateOperations that override customer conversion goals. */ private static List<MutateOperation> createConversionGoalOperations( long customerId, List<CustomerConversionGoal> customerConversionGoals) { List<MutateOperation> mutateOperations = new ArrayList<>(); // To override the customer conversion goals, we will change the // biddability of each of the customer conversion goals so that only // the desired conversion goal is biddable in this campaign. for (CustomerConversionGoal customerConversionGoal : customerConversionGoals) { ConversionActionCategory category = customerConversionGoal.getCategory(); ConversionOrigin origin = customerConversionGoal.getOrigin(); String campaignConversionGoalResourceName = ResourceNames.campaignConversionGoal( customerId, PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID, category, origin); CampaignConversionGoal.Builder campaignConversionGoalBuilder = CampaignConversionGoal.newBuilder().setResourceName(campaignConversionGoalResourceName); // Change the biddability for the campaign conversion goal. // Set biddability to True for the desired (category, origin). // Set biddability to False for all other conversion goals. // Note: // 1- It is assumed that this Conversion Action // (category=PURCHASE, origin=WEBSITE) exists in this account. // 2- More than one goal can be biddable if desired. This example // shows only one. if (category == ConversionActionCategory.PURCHASE && origin == ConversionOrigin.WEBSITE) { campaignConversionGoalBuilder.setBiddable(true); } else { campaignConversionGoalBuilder.setBiddable(false); } CampaignConversionGoal campaignConversionGoal = campaignConversionGoalBuilder.build(); CampaignConversionGoalOperation campaignConversionGoalOperation = CampaignConversionGoalOperation.newBuilder() .setUpdate(campaignConversionGoal) .setUpdateMask(FieldMasks.allSetFieldsOf(campaignConversionGoal)) .build(); mutateOperations.add( MutateOperation.newBuilder() .setCampaignConversionGoalOperation(campaignConversionGoalOperation) .build()); } return mutateOperations; }
C#
/// <summary> /// Creates a MutateOperation that links an asset to an asset group. /// </summary> /// <param name="fieldType">The field type of the asset to be linked.</param> /// <param name="linkedEntityResourceName">The resource name of the entity (asset group or /// campaign) to link the asset to.</param> /// <param name="assetResourceName">The resource name of the text asset to be /// linked.</param> /// <param name="brandGuidelinesEnabled">Whether or not to enable brand guidelines.</param> /// <returns>A MutateOperation that links an asset to an asset group.</returns> private MutateOperation CreateLinkAssetOperation( AssetFieldType fieldType, string linkedEntityResourceName, string assetResourceName, bool brandGuidelinesEnabled = false) { if (brandGuidelinesEnabled) { return new MutateOperation() { CampaignAssetOperation = new CampaignAssetOperation() { Create = new CampaignAsset() { FieldType = fieldType, Campaign = linkedEntityResourceName, Asset = assetResourceName } } }; } else { return new MutateOperation() { AssetGroupAssetOperation = new AssetGroupAssetOperation() { Create = new AssetGroupAsset() { FieldType = fieldType, AssetGroup = linkedEntityResourceName, Asset = assetResourceName } } }; } }
PHP
private static function getCustomerConversionGoals( GoogleAdsClient $googleAdsClient, int $customerId ): array { $customerConversionGoals = []; $googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); // Creates a query that retrieves all customer conversion goals. $query = 'SELECT customer_conversion_goal.category, customer_conversion_goal.origin ' . 'FROM customer_conversion_goal'; // The number of conversion goals is typically less than 50 so we use a search request // instead of search stream. $response = $googleAdsServiceClient->search(SearchGoogleAdsRequest::build($customerId, $query)); // Iterates over all rows in all pages and builds the list of conversion goals. foreach ($response->iterateAllElements() as $googleAdsRow) { /** @var GoogleAdsRow $googleAdsRow */ $customerConversionGoals[] = [ 'category' => $googleAdsRow->getCustomerConversionGoal()->getCategory(), 'origin' => $googleAdsRow->getCustomerConversionGoal()->getOrigin() ]; } return $customerConversionGoals; } /** * Creates a list of MutateOperations that override customer conversion goals. * * @param int $customerId the customer ID * @param array $customerConversionGoals the list of customer conversion goals that will be * overridden * @return MutateOperation[] a list of MutateOperations that update campaign conversion goals */ private static function createConversionGoalOperations( int $customerId, array $customerConversionGoals ): array { $operations = []; // To override the customer conversion goals, we will change the biddability of each of the // customer conversion goals so that only the desired conversion goal is biddable in this // campaign. foreach ($customerConversionGoals as $customerConversionGoal) { $campaignConversionGoal = new CampaignConversionGoal([ 'resource_name' => ResourceNames::forCampaignConversionGoal( $customerId, self::PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID, ConversionActionCategory::name($customerConversionGoal['category']), ConversionOrigin::name($customerConversionGoal['origin']) ) ]); // Changes the biddability for the campaign conversion goal. // Sets biddability to true for the desired (category, origin). // Sets biddability to false for all other conversion goals. // Note: // 1- It is assumed that this Conversion Action // (category=PURCHASE, origin=WEBSITE) exists in this account. // 2- More than one goal can be biddable if desired. This example // shows only one. if ( $customerConversionGoal["category"] === ConversionActionCategory::PURCHASE && $customerConversionGoal["origin"] === ConversionOrigin::WEBSITE ) { $campaignConversionGoal->setBiddable(true); } else { $campaignConversionGoal->setBiddable(false); } $operations[] = new MutateOperation([ 'campaign_conversion_goal_operation' => new CampaignConversionGoalOperation([ 'update' => $campaignConversionGoal, // Sets the update mask on the operation. Here the update mask will be a list // of all the fields that were set on the update object. 'update_mask' => FieldMasks::allSetFieldsOf($campaignConversionGoal) ]) ]); } return $operations; }