Las campañas de máximo rendimiento para venta minorista te ayudan a expandir tu alcance y tus objetivos, ya que te ofrecen la oportunidad de publicar anuncios en inventario adicional.
Es posible que debas crear recursos nuevos (como texto, imagen o video) para permitir que los anuncios se publiquen en formatos y plataformas nuevos, como texto, Descubre, in-stream de YouTube y Display.
Si tienes estadísticas únicas sobre qué segmentos de tus usuarios tienen más probabilidades de generar una conversión, ahora también puedes usar los indicadores de público para informárselo a Google.
A continuación, presentamos algunas mejoras adicionales que ofrecen las campañas de máximo rendimiento en comparación con las campañas de Shopping estándares:
- Segmentación por idioma según el feed de Merchant Center o los criterios de la campaña
- Expansión de la URL final
- Cuando se selecciona el objetivo de visitas a tienda, se establece la segmentación para todas las tiendas
- Posibilidad de establecer objetivos de conversión por cliente o por campaña
Cómo vincular cuentas de Merchant Center y Google Ads
Para utilizar una campaña de máximo rendimiento para la venta minorista, la cuenta de Google Ads debe estar vinculada a una cuenta existente de Merchant Center. Cuando se vincula a Merchant Center, se pueden generar recursos automáticamente para la campaña, pero se limitarán el alcance y el rendimiento.
Agrega grupos de recursos
Agregar un grupo de recursos habilita los canales de Shopping y el remarketing dinámico, y la configuración de la expansión de URL habilita los anuncios dinámicos de búsqueda. En general, cuantos más recursos proporciones, más formatos de anuncios podrá crear el sistema para orientarse a inventario adicional.
Recomendamos que cada grupo de recursos se segmente para productos diferentes. Ten en cuenta que hay límites para los grupos de fichas. Como práctica recomendada, solo debes orientarte a un conjunto determinado de productos de un grupo de recursos, por ejemplo, los Productos A a L estarían en el grupo de recursos 1 y los productos M a Z estarían en el grupo de recursos 2.
Si deseas personalizar los mensajes de tus recursos por público, puedes crear varios grupos de recursos por campaña. De esta manera, puedes crear diferentes grupos de recursos para la misma URL final.
Consulta más sugerencias de optimización cuando configures tu campaña de máximo rendimiento.
Crea una campaña de máximo rendimiento para venta minorista
Al igual que en otras campañas de Shopping, configura
los campos ShoppingSetting
de la
campaña.
Obligatorio
merchant_id
- El ID de Merchant Center de la cuenta que contiene los productos para promocionar.
Opcional
feed_label
Es una cadena que se utiliza para la etiqueta de feed, tal como se define en tu cuenta de Merchant Center. Este campo debe usarse en el caso de que necesites seleccionar productos de un feed de Merchant Center específico. Si no se especifica, la campaña utiliza todos los feeds disponibles en Merchant Center.
Si anteriormente usaste el
sales_country
obsoleto, en el formato de código de país de dos letras (XX
), debes usarfeed_label
. Para obtener más información, consulta el artículo de asistencia sobre la etiqueta de feed.Ten en cuenta que enviar un código de país en una
feed_label
no habilita automáticamente la publicación de anuncios en ese país; primero debes configurar la segmentación geográfica.campaign_priority
La prioridad de la campaña de Shopping. Las campañas con prioridades numéricamente más altas tienen prioridad sobre aquellas con prioridades más bajas.
enable_local
La opción para habilitar los anuncios de productos que se venden en tiendas locales para esta campaña.
Si hay inventario disponible, los productos locales estarán activados de forma predeterminada. Esto se puede filtrar con los grupos de fichas.
language
Puedes seleccionar varios idiomas para mostrar tus anuncios a conjuntos específicos de clientes.
Objetivos de conversión
Puedes anular los objetivos de conversión a nivel del cliente si actualizas los objetivos de conversión a nivel de la campaña, como se ilustra en este ejemplo:
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="assetGroupResourceName">The resource name of the asset group /// to link the asset to.</param> /// <param name="assetResourceName">The resource name of the text asset to be /// linked.</param> /// <returns>A MutateOperation that links an asset to an asset group.</returns> private MutateOperation CreateLinkAssetOperation( AssetFieldType fieldType, string assetGroupResourceName, string assetResourceName) => new MutateOperation() { AssetGroupAssetOperation = new AssetGroupAssetOperation() { Create = new AssetGroupAsset() { FieldType = fieldType, AssetGroup = assetGroupResourceName, 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
Rita
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, page_size: PAGE_SIZE, ) # 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::V17::Resources::CampaignConversionGoal->new({ resourceName => Google::Ads::GoogleAds::V17::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::V17::Services::GoogleAdsService::MutateOperation ->new({ campaignConversionGoalOperation => Google::Ads::GoogleAds::V17::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; }
Informes de Shopping
Usa shopping_performance_view
para recuperar métricas resumidas por segmentos de productos, como 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
Usa el
asset_group_product_group_view
para recuperar métricas como los clics, las conversiones y las impresiones del
grupo de fichas asociado a este grupo de recursos.
Anuncios de vehículos
Los anunciantes pueden usar anuncios de vehículos para promocionar su inventario de vehículos. Para ello, deben subir un feed de datos de vehículos a Merchant Center y, luego, usar campañas de máximo rendimiento con feeds de vehículos para administrar los anuncios.
Para crear una campaña de máximo rendimiento con un feed de vehículos mediante la API de Google Ads, sigue los pasos para crear una campaña de venta minorista y establecer el listing_type
de la campaña en VEHICLES
.