Performance Max สำหรับธุรกิจค้าปลีก ช่วยให้คุณขยายการเข้าถึงและเป้าหมายได้โดยมอบโอกาสในการแสดงโฆษณาใน พื้นที่โฆษณาเพิ่มเติม
คุณอาจต้องสร้างชิ้นงานใหม่ เช่น ข้อความ รูปภาพ หรือวิดีโอ เพื่อให้โฆษณาแสดงในรูปแบบและแพลตฟอร์มใหม่ๆ เช่น ข้อความ, Discover, โฆษณาในสตรีมของ YouTube และ Display
หากคุณมีข้อมูลเชิงลึกเฉพาะตัวว่ากลุ่มผู้ใช้ใดมีแนวโน้มที่จะทำ Conversion มากกว่า คุณก็สามารถใช้สัญญาณของกลุ่มเป้าหมายเพื่อแจ้งให้ Google ทราบได้แล้ว
การปรับปรุงอื่นๆ ที่แคมเปญ Performance Max มีเหนือกว่า แคมเปญ Shopping มาตรฐานมีดังนี้
- การกำหนดภาษาเป้าหมายตามฟีด Merchant Center หรือเกณฑ์แคมเปญ
- การขยาย URL สุดท้าย
- ระบบจะกำหนดเป้าหมายร้านค้าทั้งหมดเมื่อเลือกเป้าหมายการเข้าชมร้านค้า
- ความสามารถในการตั้งเป้าหมาย Conversion ตามลูกค้าแต่ละรายหรือแคมเปญแต่ละรายการ
ลิงก์บัญชี Merchant Center กับบัญชี Google Ads
หากต้องการใช้ Performance Max สำหรับการค้าปลีก บัญชี Google Ads ต้องลิงก์ กับบัญชี Merchant Center ที่มีอยู่ การลิงก์กับ Merchant Center จะช่วยให้ระบบสร้างชิ้นงานสำหรับแคมเปญได้โดยอัตโนมัติ แต่การเข้าถึงและประสิทธิภาพจะถูกจำกัด
เพิ่มกลุ่มชิ้นงาน
การเพิ่มกลุ่มชิ้นงานจะเปิดใช้ช่องทาง Shopping และรีมาร์เก็ตติ้งแบบไดนามิก และการตั้งค่าการขยาย URL จะเปิดใช้โฆษณา Search แบบไดนามิก โดยทั่วไป ยิ่งคุณมีชิ้นงานมาก ระบบก็จะสร้างรูปแบบโฆษณาได้มากตามไปด้วยเพื่อกำหนดเป้าหมายพื้นที่โฆษณาเพิ่มเติม
เราขอแนะนําให้กลุ่มชิ้นงานแต่ละกลุ่มกําหนดเป้าหมายผลิตภัณฑ์ที่แตกต่างกัน โปรดทราบว่ามีขีดจำกัดสำหรับการแสดง กลุ่ม แนวทางปฏิบัติแนะนำคือคุณควรกำหนดเป้าหมายเฉพาะผลิตภัณฑ์บางชุดจากกลุ่มชิ้นงาน เช่น ผลิตภัณฑ์ A-L จะอยู่ในกลุ่มชิ้นงาน 1 และผลิตภัณฑ์ M-Z จะอยู่ในกลุ่มชิ้นงาน 2
หากต้องการปรับแต่งข้อความชิ้นงานตามกลุ่มเป้าหมาย คุณสามารถสร้าง กลุ่มชิ้นงานหลายกลุ่มต่อแคมเปญ ด้วยวิธีนี้ คุณจะสร้างกลุ่มชิ้นงานที่แตกต่างกันสำหรับ URL สุดท้ายเดียวกันได้
ดูเคล็ดลับการเพิ่มประสิทธิภาพเพิ่มเติม เมื่อตั้งค่าแคมเปญ Performance Max
สร้างแคมเปญ Performance Max สำหรับการค้าปลีก
เช่นเดียวกับแคมเปญ Shopping อื่นๆ ให้ตั้งค่าฟิลด์ ShoppingSetting
ของแคมเปญ
ต้องระบุ
merchant_id
- รหัส Merchant Center ของบัญชีที่มีผลิตภัณฑ์ที่จะโฆษณา
ไม่บังคับ
feed_label
สตริงที่ใช้สำหรับป้ายกำกับฟีดตามที่กำหนดไว้ใน Merchant Center ควรใช้ฟิลด์นี้ในกรณีที่คุณต้องการเลือกผลิตภัณฑ์จากฟีด Merchant Center ที่เฉพาะเจาะจง หากไม่ได้ระบุ แคมเปญจะใช้ฟีดที่มีอยู่ทั้งหมดใน Merchant Center
หากก่อนหน้านี้คุณใช้
sales_country
ที่เลิกใช้งานแล้วในรูปแบบรหัสประเทศ 2 ตัวอักษร (XX
) คุณควรใช้feed_label
แทน ดูข้อมูลเพิ่มเติมได้ที่บทความสนับสนุนเกี่ยวกับป้ายกำกับฟีดโปรดทราบว่าการส่งรหัสประเทศใน
feed_label
ไม่ได้เปิดใช้โฆษณาให้แสดงในประเทศนั้นโดยอัตโนมัติ คุณต้องตั้งค่าการกำหนดเป้าหมายตามสถานที่ตั้งทางภูมิศาสตร์ก่อนcampaign_priority
ลำดับความสำคัญของแคมเปญ Shopping แคมเปญที่มีลำดับความสำคัญสูงกว่า (ตัวเลขสูงกว่า) จะมีความสำคัญมากกว่าแคมเปญที่มีลำดับความสำคัญต่ำกว่า
enable_local
ตัวเลือกในการเปิดใช้โฆษณาสําหรับผลิตภัณฑ์ที่ขายในร้านค้าในพื้นที่สําหรับแคมเปญนี้
ระบบจะเปิดใช้ผลิตภัณฑ์ในร้านโดยค่าเริ่มต้นหากมีสินค้าคงคลัง ซึ่งสามารถ กรองได้โดยใช้กลุ่มรายชื่อ
language
คุณสามารถเลือกหลายภาษาเพื่อแสดงโฆษณาต่อลูกค้าบางกลุ่มได้
เป้าหมาย Conversion
คุณสามารถลบล้างเป้าหมาย Conversion ระดับลูกค้าได้โดยการอัปเดตเป้าหมาย Conversion ระดับแคมเปญตามที่แสดงใน ตัวอย่างนี้
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; }
Python
def get_customer_conversion_goals(client, customer_id): """Retrieves the list of customer conversion goals. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. Returns: a list of dicts containing the category and origin of customer conversion goals. """ ga_service = client.get_service("GoogleAdsService") 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 # GoogleAdsService.search instead of search_stream. search_request = client.get_type("SearchGoogleAdsRequest") search_request.customer_id = customer_id search_request.query = query results = ga_service.search(request=search_request) # Iterate over the results and build the list of conversion goals. for row in results: customer_conversion_goals.append( { "category": row.customer_conversion_goal.category, "origin": row.customer_conversion_goal.origin, } ) return customer_conversion_goals def create_conversion_goal_operations( client, customer_id, customer_conversion_goals, ): """Creates a list of MutateOperations that override customer conversion goals. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. customer_conversion_goals: the list of customer conversion goals that will be overridden. Returns: MutateOperations that update campaign conversion goals. """ campaign_conversion_goal_service = client.get_service( "CampaignConversionGoalService" ) 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. for customer_conversion_goal in customer_conversion_goals: mutate_operation = client.get_type("MutateOperation") campaign_conversion_goal = ( mutate_operation.campaign_conversion_goal_operation.update ) campaign_conversion_goal.resource_name = ( campaign_conversion_goal_service.campaign_conversion_goal_path( customer_id, _PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID, customer_conversion_goal["category"].name, customer_conversion_goal["origin"].name, ) ) # 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 ( customer_conversion_goal["category"] == client.enums.ConversionActionCategoryEnum.PURCHASE and customer_conversion_goal["origin"] == client.enums.ConversionOriginEnum.WEBSITE ): biddable = True else: biddable = False campaign_conversion_goal.biddable = biddable field_mask = protobuf_helpers.field_mask( None, campaign_conversion_goal._pb ) client.copy_from( mutate_operation.campaign_conversion_goal_operation.update_mask, field_mask, ) operations.append(mutate_operation) return operations
Ruby
def _get_customer_conversion_goals(client, customer_id) query = <<~EOD SELECT customer_conversion_goal.category, customer_conversion_goal.origin FROM customer_conversion_goal EOD customer_conversion_goals = [] ga_service = client.service.google_ads # The number of conversion goals is typically less than 50 so we use # GoogleAdsService.search instead of search_stream. response = ga_service.search( customer_id: customer_id, query: query, ) # Iterate over the results and build the list of conversion goals. response.each do |row| customer_conversion_goals << { "category" => row.customer_conversion_goal.category, "origin" => row.customer_conversion_goal.origin } end customer_conversion_goals end def create_conversion_goal_operations(client, customer_id, customer_conversion_goals) campaign_conversion_goal_service = client.service.campaign_conversion_goal 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. customer_conversion_goals.each do |customer_conversion_goal| operations << client.operation.mutate do |m| m.campaign_conversion_goal_operation = client.operation.campaign_conversion_goal do |op| op.update = client.resource.campaign_conversion_goal do |ccg| ccg.resource_name = client.path.campaign_conversion_goal( customer_id, PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID, customer_conversion_goal["category"].to_s, customer_conversion_goal["origin"].to_s) # 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. ccg.biddable = (customer_conversion_goal["category"] == :PURCHASE && customer_conversion_goal["origin"] == :WEBSITE) end op.update_mask = Google::Ads::GoogleAds::FieldMaskUtil.all_set_fields_of(op.update) end end end operations end
Perl
sub get_customer_conversion_goals { my ($api_client, $customer_id) = @_; my $customer_conversion_goals = []; # Create a query that retrieves all customer conversion goals. my $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 # GoogleAdsService->search() method instead of search_stream(). my $search_response = $api_client->GoogleAdsService()->search({ customerId => $customer_id, query => $query }); # Iterate over the results and build the list of conversion goals. foreach my $google_ads_row (@{$search_response->{results}}) { push @$customer_conversion_goals, { category => $google_ads_row->{customerConversionGoal}{category}, origin => $google_ads_row->{customerConversionGoal}{origin}}; } return $customer_conversion_goals; } # Creates a list of MutateOperations that override customer conversion goals. sub create_conversion_goal_operations { my ($customer_id, $customer_conversion_goals) = @_; my $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 my $customer_conversion_goal (@$customer_conversion_goals) { my $campaign_conversion_goal = Google::Ads::GoogleAds::V20::Resources::CampaignConversionGoal->new({ resourceName => Google::Ads::GoogleAds::V20::Utils::ResourceNames::campaign_conversion_goal( $customer_id, PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID, $customer_conversion_goal->{category}, $customer_conversion_goal->{origin})}); # 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 ( $customer_conversion_goal->{category} eq PURCHASE && $customer_conversion_goal->{origin} eq WEBSITE) { $campaign_conversion_goal->{biddable} = "true"; } else { $campaign_conversion_goal->{biddable} = "false"; } push @$operations, Google::Ads::GoogleAds::V20::Services::GoogleAdsService::MutateOperation ->new({ campaignConversionGoalOperation => Google::Ads::GoogleAds::V20::Services::CampaignConversionGoalService::CampaignConversionGoalOperation ->new({ update => $campaign_conversion_goal, # Set 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. updateMask => all_set_fields_of($campaign_conversion_goal)})}); } return $operations; }
รายงาน Shopping
ใช้ shopping_performance_view
เพื่อ
เรียกข้อมูลเมตริกที่สรุปตามกลุ่มผลิตภัณฑ์ เช่น
segments.product_item_id
SELECT
segments.product_item_id,
metrics.clicks,
metrics.cost_micros,
metrics.impressions,
metrics.conversions,
metrics.all_conversions,
campaign.advertising_channel_type
FROM shopping_performance_view
WHERE
campaign.advertising_channel_type = 'PERFORMANCE_MAX'
AND segments.date DURING LAST_30_DAYS
AND metrics.clicks > 0
ORDER BY
metrics.all_conversions DESC,
metrics.conversions DESC,
metrics.clicks DESC,
metrics.cost_micros DESC,
metrics.impressions DESC
ใช้
asset_group_product_group_view
เพื่อดึงข้อมูลเมตริก เช่น การคลิก, Conversion และการแสดงผลของกลุ่มข้อมูลที่เชื่อมโยงกับกลุ่มชิ้นงานนี้
โฆษณายานพาหนะ
ผู้ลงโฆษณาสามารถใช้โฆษณายานพาหนะ เพื่อโปรโมตพื้นที่โฆษณายานพาหนะโดยอัปโหลดฟีดข้อมูลยานพาหนะไปยัง Merchant Center จากนั้นใช้ แคมเปญ Performance Max ที่มีฟีดยานพาหนะ เพื่อจัดการโฆษณา
หากต้องการสร้างแคมเปญ Performance Max ที่มีฟีดยานพาหนะโดยใช้ Google Ads API ให้
ทำตามสร้างแคมเปญค้าปลีก
และตั้งค่า listing_type
ของแคมเปญเป็น
VEHICLES