La mejor manera de configurar acciones de conversión nuevas en la API es usar el ejemplo de código Agregar acción de conversión en la carpeta Remarketing de tu biblioteca cliente. La muestra controla todas las tareas de autenticación en segundo plano por ti y te guía en la creación de una ConversionAction
.
La API de Google Ads establecerá el campo primary_for_goal
automáticamente, pero puedes configurarlo de forma explícita para controlar cómo una acción de conversión afectará los informes y las ofertas de tu cuenta cuando se combinan con tus objetivos de conversión.
Java
private void runExample(GoogleAdsClient googleAdsClient, long customerId) { // Creates a ConversionAction. ConversionAction conversionAction = ConversionAction.newBuilder() .setName("Earth to Mars Cruises Conversion #" + getPrintableDateTime()) .setCategory(ConversionActionCategory.DEFAULT) .setType(ConversionActionType.WEBPAGE) .setStatus(ConversionActionStatus.ENABLED) .setViewThroughLookbackWindowDays(15L) .setValueSettings( ValueSettings.newBuilder() .setDefaultValue(23.41) .setAlwaysUseDefaultValue(true) .build()) .build(); // Creates the operation. ConversionActionOperation operation = ConversionActionOperation.newBuilder().setCreate(conversionAction).build(); try (ConversionActionServiceClient conversionActionServiceClient = googleAdsClient.getLatestVersion().createConversionActionServiceClient()) { MutateConversionActionsResponse response = conversionActionServiceClient.mutateConversionActions( Long.toString(customerId), Collections.singletonList(operation)); System.out.printf("Added %d conversion actions:%n", response.getResultsCount()); for (MutateConversionActionResult result : response.getResultsList()) { System.out.printf( "New conversion action added with resource name: '%s'%n", result.getResourceName()); } } }
C#
public void Run(GoogleAdsClient client, long customerId) { // Get the ConversionActionService. ConversionActionServiceClient conversionActionService = client.GetService(Services.V14.ConversionActionService); // Add a conversion action. ConversionAction conversionAction = new ConversionAction() { Name = "Earth to Mars Cruises Conversion #" + ExampleUtilities.GetRandomString(), Category = ConversionActionCategory.Default, Type = ConversionActionType.Webpage, Status = ConversionActionStatus.Enabled, ViewThroughLookbackWindowDays = 15, ValueSettings = new ConversionAction.Types.ValueSettings() { DefaultValue = 23.41, AlwaysUseDefaultValue = true } }; // Create the operation. ConversionActionOperation operation = new ConversionActionOperation() { Create = conversionAction }; try { // Create the conversion action. MutateConversionActionsResponse response = conversionActionService.MutateConversionActions(customerId.ToString(), new ConversionActionOperation[] { operation }); // Display the results. foreach (MutateConversionActionResult newConversionAction in response.Results) { Console.WriteLine($"New conversion action with resource name = " + $"'{newConversionAction.ResourceName}' was added."); } } catch (GoogleAdsException e) { Console.WriteLine("Failure:"); Console.WriteLine($"Message: {e.Message}"); Console.WriteLine($"Failure: {e.Failure}"); Console.WriteLine($"Request ID: {e.RequestId}"); throw; } }
PHP
public static function runExample(GoogleAdsClient $googleAdsClient, int $customerId) { // Creates a conversion action. $conversionAction = new ConversionAction([ 'name' => 'Earth to Mars Cruises Conversion #' . Helper::getPrintableDatetime(), 'category' => ConversionActionCategory::PBDEFAULT, 'type' => ConversionActionType::WEBPAGE, 'status' => ConversionActionStatus::ENABLED, 'view_through_lookback_window_days' => 15, 'value_settings' => new ValueSettings([ 'default_value' => 23.41, 'always_use_default_value' => true ]) ]); // Creates a conversion action operation. $conversionActionOperation = new ConversionActionOperation(); $conversionActionOperation->setCreate($conversionAction); // Issues a mutate request to add the conversion action. $conversionActionServiceClient = $googleAdsClient->getConversionActionServiceClient(); $response = $conversionActionServiceClient->mutateConversionActions( MutateConversionActionsRequest::build($customerId, [$conversionActionOperation]) ); printf("Added %d conversion actions:%s", $response->getResults()->count(), PHP_EOL); foreach ($response->getResults() as $addedConversionAction) { /** @var ConversionAction $addedConversionAction */ printf( "New conversion action added with resource name: '%s'%s", $addedConversionAction->getResourceName(), PHP_EOL ); } }
Python
def main(client, customer_id): conversion_action_service = client.get_service("ConversionActionService") # Create the operation. conversion_action_operation = client.get_type("ConversionActionOperation") # Create conversion action. conversion_action = conversion_action_operation.create conversion_action.name = f"Earth to Mars Cruises Conversion {uuid.uuid4()}" conversion_action.type_ = ( client.enums.ConversionActionTypeEnum.UPLOAD_CLICKS ) conversion_action.category = ( client.enums.ConversionActionCategoryEnum.DEFAULT ) conversion_action.status = client.enums.ConversionActionStatusEnum.ENABLED conversion_action.view_through_lookback_window_days = 15 # Create a value settings object. value_settings = conversion_action.value_settings value_settings.default_value = 15.0 value_settings.always_use_default_value = True # Add the conversion action. conversion_action_response = conversion_action_service.mutate_conversion_actions( customer_id=customer_id, operations=[conversion_action_operation], ) print( "Created conversion action " f'"{conversion_action_response.results[0].resource_name}".' )
Ruby
def add_conversion_action(customer_id) # GoogleAdsClient will read a config file from # ENV['HOME']/google_ads_config.rb when called without parameters client = Google::Ads::GoogleAds::GoogleAdsClient.new # Add a conversion action. conversion_action = client.resource.conversion_action do |ca| ca.name = "Earth to Mars Cruises Conversion #{(Time.new.to_f * 100).to_i}" ca.type = :UPLOAD_CLICKS ca.category = :DEFAULT ca.status = :ENABLED ca.view_through_lookback_window_days = 15 # Create a value settings object. ca.value_settings = client.resource.value_settings do |vs| vs.default_value = 15 vs.always_use_default_value = true end end # Create the operation. conversion_action_operation = client.operation.create_resource.conversion_action(conversion_action) # Add the ad group ad. response = client.service.conversion_action.mutate_conversion_actions( customer_id: customer_id, operations: [conversion_action_operation], ) puts "New conversion action with resource name = #{response.results.first.resource_name}." end
Perl
sub add_conversion_action { my ($api_client, $customer_id) = @_; # Create a conversion action. my $conversion_action = Google::Ads::GoogleAds::V14::Resources::ConversionAction->new({ name => "Earth to Mars Cruises Conversion #" . uniqid(), category => DEFAULT, type => WEBPAGE, status => ENABLED, viewThroughLookbackWindowDays => 15, valueSettings => Google::Ads::GoogleAds::V14::Resources::ValueSettings->new({ defaultValue => 23.41, alwaysUseDefaultValue => "true" })}); # Create a conversion action operation. my $conversion_action_operation = Google::Ads::GoogleAds::V14::Services::ConversionActionService::ConversionActionOperation ->new({create => $conversion_action}); # Add the conversion action. my $conversion_actions_response = $api_client->ConversionActionService()->mutate({ customerId => $customer_id, operations => [$conversion_action_operation]}); printf "New conversion action added with resource name: '%s'.\n", $conversion_actions_response->{results}[0]{resourceName}; return 1; }
Validaciones
Google Ads y la API de Google Ads admiten una amplia variedad de acciones de conversión, por lo que algunas reglas de validación varían según el type
de la acción. A continuación, se muestra una lista de algunas reglas que debes tener en cuenta cuando creas un ConversionAction
.
- Todos los campos de enumeración
- Si intentas establecer un campo de enumeración en
UNKNOWN
, se generará un errorRequestError.INVALID_ENUM_VALUE
. app_id
- El atributo
app_id
es inmutable y solo se puede configurar cuando se crea una nueva conversión de aplicación. click_through_lookback_window_days
Establecer este atributo en un valor fuera del rango permitido genera un error
RangeError.TOO_LOW
oRangeError.TOO_HIGH
.Este atributo debe estar en el rango
[1,60]
para una acción de conversión deAD_CALL
oWEBSITE_CALL
. Para la mayoría de las demás acciones de conversión, el rango permitido es[1,30]
.include_in_conversions_metric
La configuración de este valor en una operación
create
oupdate
fallará después del 22 de agosto de 2022 con un errorFieldError.IMMUTABLE_FIELD
. En su lugar, configuraprimary_for_goal
como se describe en la Guía de objetivos de conversión.phone_call_duration_seconds
Si intentas establecer este atributo en una acción de conversión que no es para llamadas, se mostrará un error
FieldError.VALUE_MUST_BE_UNSET
.type
El atributo
type
es inmutable y solo se puede configurar cuando se crea una conversión nueva.Actualizar una acción de conversión con un
type
igual aUNKNOWN
genera un errorMutateError.MUTATE_NOT_ALLOWED
.value_settings
El
value_settings
de una acción de conversiónWEBSITE_CALL
oAD_CALL
debe teneralways_use_default_value
configurado comotrue
. Especificar un valor defalse
cuando creas o actualizas este valor genera un errorINVALID_VALUE
.view_through_lookback_window_days
Establecer este atributo en un valor fuera del rango permitido genera un error
RangeError.TOO_LOW
oRangeError.TOO_HIGH
. Para la mayoría de las acciones de conversión, el rango permitido es[1,30]
.Este atributo no se puede establecer en las acciones de conversión
AD_CALL
oWEBSITE_CALL
. Especificar un valor da como resultado un errorVALUE_MUST_BE_UNSET
.