Начало работы

Для регистрации конверсий необходимо включить отслеживание конверсий в вашем аккаунте Google Ads. В этом руководстве подробно описано, как проверить, включено ли отслеживание конверсий, включить его, если оно еще не включено, и получить информацию о существующих действиях конверсии.

Для отслеживания большинства действий, приводящих к конверсии, также требуются дополнительные шаги с вашей стороны. Более подробную информацию о различных типах действий, приводящих к конверсии, и требованиях к ним см. в руководстве по созданию действий, приводящих к конверсии .

Крайне важно подтвердить наличие у вас разрешения на передачу данных о конверсиях в Google. Это можно сделать двумя способами:

  1. Настройте параметры согласия по умолчанию на уровне аккаунта. В пользовательском интерфейсе Google Ads перейдите в меню Инструменты -> Диспетчер данных -> Настройки согласия -> Настройки согласия по умолчанию .
  2. Установите поле ClickConversion.consent для каждой импортированной конверсии.

Настройте свой сайт для отслеживания конверсий.

Если вы только начинаете интеграцию импорта офлайн-конверсий, первым шагом будет выполнение инструкций из руководства «Настройка тега Google для расширенных конверсий для лидов» , чтобы настроить ваш веб-сайт для отслеживания расширенных конверсий для лидов. Вы также можете использовать Google Tag Manager для настройки вашего веб-сайта, следуя инструкциям из руководства «Настройка Google Tag Manager для расширенных конверсий для лидов» .

Включите отслеживание конверсий в своем аккаунте Google Ads.

Получите информацию о настройках отслеживания конверсий.

Вы можете проверить настройки отслеживания конверсий в своем аккаунте и убедиться, что отслеживание конверсий включено, запросив ресурс Customer для параметра ConversionTrackingSetting . Выполните следующий запрос с использованием GoogleAdsService.SearchStream :

SELECT
  customer.conversion_tracking_setting.google_ads_conversion_customer,
  customer.conversion_tracking_setting.conversion_tracking_status,
  customer.conversion_tracking_setting.conversion_tracking_id,
  customer.conversion_tracking_setting.cross_account_conversion_tracking_id
FROM customer

Поле google_ads_conversion_customer указывает аккаунт Google Ads, который создает и управляет конверсиями для этого клиента. Для клиентов, использующих отслеживание конверсий между аккаунтами , это идентификатор аккаунта менеджера. Идентификатор клиента конверсии Google Ads следует указывать в качестве customer_id в запросах Google Ads API для создания и управления конверсиями. Обратите внимание, что это поле заполняется, даже если отслеживание конверсий не включено.

Поле conversion_tracking_status указывает, включено ли отслеживание конверсий и используется ли в учетной записи отслеживание конверсий между учетными записями.

Создайте действие конверсии для клиента конверсии Google Ads.

Если значение conversion_tracking_status равно NOT_CONVERSION_TRACKED , отслеживание конверсий для аккаунта не включено. Чтобы включить отслеживание конверсий, создайте хотя бы одно ConversionAction в аккаунте Google Ads, отвечающем за конверсии, как показано в следующем примере. В качестве альтернативы, вы можете создать действие конверсии в пользовательском интерфейсе, следуя инструкциям в Справочном центре для типа конверсии, который вы хотите включить.

Обратите внимание, что улучшенные показатели конверсии включаются автоматически при отправке через API Google Ads, но их можно отключить через пользовательский интерфейс Google Ads.

Пример кода

Java

private void runExample(GoogleAdsClient googleAdsClient, long customerId) {

  // Creates a ConversionAction.
  ConversionAction conversionAction =
      ConversionAction.newBuilder()
          // Note that conversion action names must be unique. If a conversion action already
          // exists with the specified conversion_action_name the create operation will fail with
          // a ConversionActionError.DUPLICATE_NAME error.
          .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.V23.ConversionActionService);

    // Note that conversion action names must be unique.
    // If a conversion action already exists with the specified name the create operation
    // will fail with a ConversionAction.DUPLICATE_NAME error.
    string ConversionActionName = "Earth to Mars Cruises Conversion #"
        + ExampleUtilities.GetRandomString();

    // Add a conversion action.
    ConversionAction conversionAction = new ConversionAction()
    {
        Name = ConversionActionName,
        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([
        // Note that conversion action names must be unique.
        // If a conversion action already exists with the specified conversion_action_name
        // the create operation will fail with a ConversionActionError.DUPLICATE_NAME error.
        '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: GoogleAdsClient, customer_id: str) -> None:
    conversion_action_service: ConversionActionServiceClient = (
        client.get_service("ConversionActionService")
    )

    # Create the operation.
    conversion_action_operation: ConversionActionOperation = client.get_type(
        "ConversionActionOperation"
    )

    # Create conversion action.
    conversion_action: ConversionAction = conversion_action_operation.create

    # Note that conversion action names must be unique. If a conversion action
    # already exists with the specified conversion_action_name, the create
    # operation will fail with a ConversionActionError.DUPLICATE_NAME error.
    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: ConversionAction.ValueSettings = (
        conversion_action.value_settings
    )
    value_settings.default_value = 15.0
    value_settings.always_use_default_value = True

    # Add the conversion action.
    conversion_action_response: MutateConversionActionsResponse = (
        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}".'
    )
      

Руби

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) = @_;

  # Note that conversion action names must be unique.
  # If a conversion action already exists with the specified conversion_action_name,
  # the create operation fails with error ConversionActionError.DUPLICATE_NAME.
  my $conversion_action_name = "Earth to Mars Cruises Conversion #" . uniqid();

  # Create a conversion action.
  my $conversion_action =
    Google::Ads::GoogleAds::V23::Resources::ConversionAction->new({
      name                          => $conversion_action_name,
      category                      => DEFAULT,
      type                          => WEBPAGE,
      status                        => ENABLED,
      viewThroughLookbackWindowDays => 15,
      valueSettings                 =>
        Google::Ads::GoogleAds::V23::Resources::ValueSettings->new({
          defaultValue          => 23.41,
          alwaysUseDefaultValue => "true"
        })});

  # Create a conversion action operation.
  my $conversion_action_operation =
    Google::Ads::GoogleAds::V23::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;
}
      

Убедитесь, что для параметра conversion_action_type установлено правильное значение ConversionActionType . Дополнительные рекомендации по созданию действий конверсии в Google Ads API см. в разделе «Создание действий конверсии» .

Получить существующее действие конверсии

Вы можете получить подробную информацию о существующем действии конверсии, выполнив следующий запрос. Убедитесь, что идентификатор клиента в запросе соответствует клиенту Google Ads, совершившему конверсию, которого вы определили выше, а тип действия конверсии задан правильным значением ConversionActionType .

SELECT
  conversion_action.resource_name,
  conversion_action.name,
  conversion_action.status
FROM conversion_action
WHERE conversion_action.type = 'INSERT_CONVERSION_ACTION_TYPE'

Отслеживание конверсий между учетными записями

Если вы используете отслеживание конверсий между учетными записями , ConversionActionService возвращает следующие действия по конверсии:

  • Все действия по конверсии, определенные учетной записью администратора, используемой для отслеживания конверсий между учетными записями.
  • Все действия по конверсии, по которым у клиента накоплена статистика, включая действия, определенные системой, и действия, принадлежащие менеджеру, даже если этот менеджер впоследствии отключится.
  • Все действия, определенные клиентом в своей учетной записи.
  • Конверсии, созданные в связанных ресурсах Google Analytics. Сюда входят действия для конверсий Analytics, не импортированных в Google Ads, которые имеют статус HIDDEN .

При создании клиентских аккаунтов вы можете включить отслеживание конверсий с помощью API Google Ads.

При создании нового Customer установите параметр conversion_tracking_setting.google_ads_conversion_customer равным имени ресурса учетной записи менеджера, которая должна управлять действиями по конверсии от имени учетной записи клиента. Эта учетная запись менеджера также должна быть той учетной записью, которая отправляет запрос на create новой учетной записи клиента.

Начиная с v20 , вы можете использовать API Google Ads для включения отслеживания перекрестных конверсий как при создании , так и при обновлении клиентских аккаунтов.

При обновлении существующей учетной записи клиента можно включить отслеживание конверсий между учетными записями, установив значение в поле conversion_tracking_setting.google_ads_conversion_customer . В это поле следует установить имя ресурса учетной записи менеджера, которая должна управлять действиями по конверсиям от имени учетной записи клиента. Эта учетная запись менеджера также должна быть той учетной записью, которая отправляет запрос update для учетной записи клиента.

ПРИМЕЧАНИЕ: Использование API Google Ads для изменения настроек отслеживания конверсий между аккаунтами клиента доступно только через список разрешенных пользователей. Для его использования обратитесь к своему менеджеру по работе с клиентами.

При включении отслеживания конверсий между учетными записями или смене менеджера отслеживания конверсий для существующей учетной записи клиента действуют те же правила, что и при внесении этих изменений в пользовательский интерфейс . В частности:

  • В учетной записи клиента будут применяться правила определения значений конверсии по умолчанию, а также цели жизненного цикла клиента по умолчанию, установленные новым менеджером отслеживания конверсий.
  • Кампании, нацеленные на конкретное действие конверсии, переключатся на использование целей конверсии по умолчанию, установленных в учетной записи менеджера конверсий. Если вы продолжите нацеливать кампании на конкретное действие конверсии, это может привести к непоследовательному поведению, поскольку у учетной записи менеджера могут быть другие цели, чем у учетной записи клиента. Убедитесь, что ваши кампании оптимизированы под правильные цели.
  • Если учетная запись принадлежит нескольким учетным записям менеджеров, она может использовать действия по отслеживанию конверсий только от одного менеджера. Если учетная запись для отслеживания конверсий не указана, по умолчанию учетная запись будет использовать саму себя в качестве учетной записи для отслеживания конверсий.

Создайте действия по конверсии

Для измерения конверсий настройте ConversionAction для type действия конверсии, которое вы хотите отслеживать. Например, онлайн-покупка и телефонный звонок требуют разных действий конверсии.

Лучший способ настроить новые действия конверсии в API — использовать приведенный ниже пример кода добавления действия конверсии . В примере автоматически выполняются все фоновые задачи аутентификации, и он пошагово объясняет, как создать ConversionAction .

Для отслеживания большинства конверсий также требуются дополнительные действия с вашей стороны. Например, для отслеживания конверсий на вашем веб-сайте необходимо добавить фрагмент кода, называемый тегом , на страницу конверсии. Подробные требования к другим типам действий конверсии см. в статье нашего Справочного центра .

Пример кода

Приведенный ниже пример кода демонстрирует процесс создания нового действия конверсии. В частности, он создает действие конверсии с type UPLOAD_CLICKS . Также он устанавливает category DEFAULT .

Применяются следующие настройки по умолчанию:

Java

private void runExample(GoogleAdsClient googleAdsClient, long customerId) {

  // Creates a ConversionAction.
  ConversionAction conversionAction =
      ConversionAction.newBuilder()
          // Note that conversion action names must be unique. If a conversion action already
          // exists with the specified conversion_action_name the create operation will fail with
          // a ConversionActionError.DUPLICATE_NAME error.
          .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.V23.ConversionActionService);

    // Note that conversion action names must be unique.
    // If a conversion action already exists with the specified name the create operation
    // will fail with a ConversionAction.DUPLICATE_NAME error.
    string ConversionActionName = "Earth to Mars Cruises Conversion #"
        + ExampleUtilities.GetRandomString();

    // Add a conversion action.
    ConversionAction conversionAction = new ConversionAction()
    {
        Name = ConversionActionName,
        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([
        // Note that conversion action names must be unique.
        // If a conversion action already exists with the specified conversion_action_name
        // the create operation will fail with a ConversionActionError.DUPLICATE_NAME error.
        '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: GoogleAdsClient, customer_id: str) -> None:
    conversion_action_service: ConversionActionServiceClient = (
        client.get_service("ConversionActionService")
    )

    # Create the operation.
    conversion_action_operation: ConversionActionOperation = client.get_type(
        "ConversionActionOperation"
    )

    # Create conversion action.
    conversion_action: ConversionAction = conversion_action_operation.create

    # Note that conversion action names must be unique. If a conversion action
    # already exists with the specified conversion_action_name, the create
    # operation will fail with a ConversionActionError.DUPLICATE_NAME error.
    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: ConversionAction.ValueSettings = (
        conversion_action.value_settings
    )
    value_settings.default_value = 15.0
    value_settings.always_use_default_value = True

    # Add the conversion action.
    conversion_action_response: MutateConversionActionsResponse = (
        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}".'
    )
      

Руби

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) = @_;

  # Note that conversion action names must be unique.
  # If a conversion action already exists with the specified conversion_action_name,
  # the create operation fails with error ConversionActionError.DUPLICATE_NAME.
  my $conversion_action_name = "Earth to Mars Cruises Conversion #" . uniqid();

  # Create a conversion action.
  my $conversion_action =
    Google::Ads::GoogleAds::V23::Resources::ConversionAction->new({
      name                          => $conversion_action_name,
      category                      => DEFAULT,
      type                          => WEBPAGE,
      status                        => ENABLED,
      viewThroughLookbackWindowDays => 15,
      valueSettings                 =>
        Google::Ads::GoogleAds::V23::Resources::ValueSettings->new({
          defaultValue          => 23.41,
          alwaysUseDefaultValue => "true"
        })});

  # Create a conversion action operation.
  my $conversion_action_operation =
    Google::Ads::GoogleAds::V23::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;
}
      

Этот пример можно найти в папке «Ремаркетинг» вашей клиентской библиотеки, а также в коллекции примеров кода: Пример кода для добавления действия конверсии .

Валидации

Google Ads и API Google Ads поддерживают широкий спектр действий, приводящих к конверсии, поэтому некоторые правила проверки различаются в зависимости от type действия.

Наиболее распространенная ошибка при создании действия конверсии — это DUPLICATE_NAME . Убедитесь, что вы используете уникальное имя для каждого действия конверсии.

Вот несколько советов по настройке полей ConversionAction :

Все поля перечисления
Попытка присвоить любому полю перечисления значение UNKNOWN приводит к ошибке RequestError.INVALID_ENUM_VALUE .
app_id
Атрибут app_id является неизменяемым и может быть установлен только при создании новой версии приложения.
attribution_model_settings
Установка устаревшего параметра приводит к ошибке CANNOT_SET_RULE_BASED_ATTRIBUTION_MODELS . Google Ads поддерживает только GOOGLE_ADS_LAST_CLICK и GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN .
click_through_lookback_window_days

Установка значения этого атрибута за пределами допустимого диапазона приводит к ошибке RangeError.TOO_LOW или RangeError.TOO_HIGH .

Для действий конверсии AD_CALL или WEBSITE_CALL этот атрибут должен находиться в диапазоне [1,60] . Для большинства других действий конверсии допустимый диапазон составляет [1,30] .

include_in_conversions_metric

Установка этого значения в операции create или update завершится ошибкой FieldError.IMMUTABLE_FIELD . Вместо этого установите primary_for_goal , как описано в руководстве по целям конверсии .

phone_call_duration_seconds

Попытка установить этот атрибут для действия преобразования, не предназначенного для звонков, приводит к ошибке FieldError.VALUE_MUST_BE_UNSET .

type

Атрибут type является неизменяемым и может быть установлен только при создании новой конверсии.

Обновление действия преобразования с type равным UNKNOWN , приводит к ошибке MutateError.MUTATE_NOT_ALLOWED .

value_settings

Для действия конверсии WEBSITE_CALL или AD_CALL value_settings должен иметь значение always_use_default_value , равное true . Указание значения false при создании или обновлении этого параметра приведет к ошибке INVALID_VALUE .

view_through_lookback_window_days

Установка значения этого атрибута за пределами допустимого диапазона приводит к ошибке RangeError.TOO_LOW или RangeError.TOO_HIGH . Для большинства операций преобразования допустимый диапазон составляет [1,30] .

Этот атрибут нельзя установить для действий конверсии AD_CALL или WEBSITE_CALL . Указание значения приведет к ошибке VALUE_MUST_BE_UNSET .