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

В этом руководстве представлен список различных типов действий-конверсий, которые можно создать с помощью API Google Рекламы, информация о том, как они сопоставляются с веб-интерфейсом Google Рекламы, а также подробный пример кода, демонстрирующий, как создавать новые действия-конверсии.

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

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

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

Конверсии веб-сайта

Преобразование веб-сайта позволяет отслеживать действия на веб-сайте, такие как онлайн-продажи, клики по ссылкам, просмотры страниц и регистрации.

Чтобы отслеживать конверсии на своем веб-сайте, необходимо создать ConversionAction с ConversionActionType , установленным на WEBPAGE , и добавить фрагмент кода, называемый тегом, на страницу конверсии на вашем веб-сайте.

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

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

В следующей таблице показаны эквивалентные параметры API, которые можно использовать для каждого источника в веб-интерфейсе Google Рекламы:

Тип кода отслеживания Источник Google Рекламы
WEBPAGE Веб-сайт, Веб-сайт (Google Analytics (GA4))
WEBPAGE_ONCLICK Веб-сайт, Веб-сайт (Google Analytics (GA4))
CLICK_TO_CALL Клики по номеру телефона

Конверсии приложений

Конверсия приложения позволяет отслеживать установки мобильных приложений или покупки приложений в Google Play Store .

В следующей таблице показаны эквивалентные параметры API ConversionActionType , которые можно использовать для каждого источника в веб-интерфейсе Google Рекламы:

Тип действия-конверсии Источник Google Рекламы
GOOGLE_PLAY_DOWNLOAD Google Play > Установки
GOOGLE_PLAY_IN_APP_PURCHASE Google Play > Покупки в приложении

Чтобы отслеживать другие действия в мобильном приложении с помощью свойств Google Аналитики 4 или сторонней аналитики приложений , см. Дополнительные типы действий-конверсий .

Конверсии по телефонным звонкам

Отслеживание конверсий по телефонным звонкам позволяет отслеживать звонки по рекламе, звонки на номера на вашем веб-сайте и клики по номерам на мобильных сайтах.

В следующей таблице показаны эквивалентные параметры API ConversionActionType , которые можно использовать для каждого источника в веб-интерфейсе Google Рекламы:

Тип действия-конверсии Источник Google Рекламы
AD_CALL Звонки из рекламы с использованием номеров телефонов или объявлений только с номером телефона.
WEBSITE_CALL Звонки на номер телефона, указанный на вашем сайте
CLICK_TO_CALL Клики по номеру на вашем мобильном сайте

AD_CALL

Действие-конверсия AD_CALL отображается как конверсия «Звонки из рекламы» в веб-интерфейсе Google Рекламы. После создания действия-конверсии AD_CALL укажите имя его ресурса в поле call_conversion_action при создании CallAsset . Объекты звонков позволяют показывать номер телефона прямо в объявлениях.

Звонок считается конверсией, если он длится дольше указанной продолжительности. Значение по умолчанию — 60 секунд.

WEBSITE_CALL

Действие-конверсия WEBSITE_CALL отображается как конверсия «Звонки с веб-сайта» в веб-интерфейсе Google Рекламы.

В отличие от AD_CALL , этот трекер требует добавления event_snippet и global_site_tag на ваш веб-сайт, чтобы получить динамический номер переадресации Google для отслеживания вызовов по номерам, указанным на вашем веб-сайте. Кроме того, вам необходимо настроить актив звонка и связать его на уровне клиента, кампании или группы объявлений .

CLICK_TO_CALL

Действие-конверсия CLICK_TO_CALL отображается как конверсия «Клик по вашему номеру на мобильном веб-сайте» в веб-интерфейсе Google Рекламы.

Тип CLICK_TO_CALL отличается от типа AD_CALL тем, что он не отслеживает реальные телефонные звонки. Вместо этого CLICK_TO_CALL отслеживает только клики по номеру телефона с мобильного устройства. Это полезно, если вы не можете использовать номер Google для переадресации для отслеживания телефонных звонков.

Импортировать офлайн-конверсии

В следующей таблице показаны эквивалентные параметры API ConversionActionType , которые можно использовать для каждого источника в веб-интерфейсе Google Рекламы, а также ссылка на документацию для каждого конкретного типа действия-конверсии:

Тип действия-конверсии Источник Google Рекламы Руководство по настройке API
UPLOAD_CLICKS Отслеживайте конверсии по кликам и расширенному конверсиям для потенциальных клиентов. Руководство по загрузке кликов
Руководство по расширенному отслеживанию конверсий для потенциальных клиентов
UPLOAD_CALLS Отслеживайте конверсии по звонкам Руководство по настройке API
STORE_SALES Отслеживание конверсий и продаж в магазине Руководство по настройке API

Расширенное преобразование

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

В следующей таблице показаны эквивалентные параметры API, которые можно использовать для каждого типа расширенного преобразования :

Тип действия-конверсии Расширенный тип конверсии Руководство по настройке API
UPLOAD_CLICKS Улучшенные конверсии для потенциальных клиентов
Улучшает измерение офлайн-транзакций, совершенных лидом или посетителем веб-сайта.
Руководство по настройке API
WEBPAGE Расширенное отслеживание конверсий для Интернета
Улучшает измерение онлайн-конверсий.
Руководство по настройке API

Дополнительные типы действий-конверсий

API Google Рекламы делает дополнительные типы действий-конверсий доступными в отчетах, но может ограничивать или запрещать создание или изменение этих действий.

Конверсии SKAdNetwork

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

Поле отчета Описание
metrics.sk_ad_network_installs Количество установок, о которых сообщает Apple. Этот показатель можно сегментировать только по любой комбинации segments.sk_ad_network_conversion_value и сегментов, связанных с датой.
metrics.sk_ad_network_total_conversions Общее количество конверсий, включая установки и другие типы конверсий, о которых сообщает Apple. Эту метрику можно сегментировать только по сегментам, связанным с SKAdNetwork, и сегментам, связанным с датами.
segments.sk_ad_network_ad_event_type Тип события, произошедшего при конкретной конверсии.
segments.sk_ad_network_attribution_credit Как атрибуция учитывается для конкретной конверсии.
segments.sk_ad_network_fine_conversion_value

Ценность конверсии, указанная Apple. Этот сегмент нельзя применять ни к каким показателям, кроме metrics.sk_ad_network_installs , metrics.sk_ad_network_total_conversions , и его можно комбинировать только с сегментами, связанными с датами.

Значение 0 возвращается, если Apple сообщает значение 0 и отсутствие значения в противном случае. Проверьте наличие поля , чтобы различать эти два случая.

segments.sk_ad_network_coarse_conversion_value Грубое значение для отдельного преобразования.
segments.sk_ad_network_postback_sequence_index Позиция обратной передачи в последовательности для конкретного преобразования.
segments.sk_ad_network_source_app.sk_ad_network_source_app_id Идентификатор приложения, в котором было показано объявление, которое привело к установке в рекламной сети iOS Store Kit.
segments.sk_ad_network_source_domain Веб-сайт, на котором было показано объявление, которое привело к установке рекламной сети iOS Store Kit. Нулевое значение означает, что этот сегмент неприменим (например, для кампании, отличной от iOS) или не присутствовал ни в одной обратной передаче, отправленной Apple.
segments.sk_ad_network_source_type Тип источника, в котором было показано объявление, которое привело к установке рекламной сети iOS Store Kit. Нулевое значение означает, что этот сегмент неприменим (например, кампания, отличная от iOS), или ни исходный домен, ни исходное приложение не присутствовали ни в каких обратных передачах, отправленных Apple.
segments.sk_ad_network_user_type Тип пользователя, совершившего конкретную конверсию.
segments.sk_ad_network_redistributed_fine_conversion_value Ценность конверсии в этом сегменте включает нулевые значения, которые были перераспределены в ценность конверсии. Этот сегмент представляет собой сумму наблюдаемых значений штрафных конверсий, возвращенных Apple, и смоделированных нулевых значений от Google.
segments.sk_ad_network_version Используемая версия API рекламной сети iOS Store Kit.

Вы также можете сохранить сопоставление ценности конверсии SKAdNetwork для конкретных клиентов, связанных с приложениями iOS, с помощью CustomerSkAdNetworkConversionValueSchema .

Пример кода Python

#!/usr/bin/env python
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import argparse
import sys

from google.ads.googleads.client import GoogleAdsClient
from google.ads.googleads.errors import GoogleAdsException

def main(client, customer_id):
    """Adds a keyword plan, campaign, ad group, etc. to the customer account.

    Also handles errors from the API and prints them.

    Args:
        client: An initialized instance of GoogleAdsClient
        customer_id: A str of the customer_id to use in requests.
    """

    res = update_skan_cv_schema(
        client, customer_id, "my_app_id", "account_link_id"
    )
    print(res)

def update_skan_cv_schema(client, customer_id, app_id, account_link_id):
    skan_service = client.get_service(
        "CustomerSkAdNetworkConversionValueSchemaService"
    )

    req = client.get_type(
        "MutateCustomerSkAdNetworkConversionValueSchemaRequest"
    )
    operation = client.get_type(
        "CustomerSkAdNetworkConversionValueSchemaOperation"
    )
    schema_instance = client.get_type(
        "CustomerSkAdNetworkConversionValueSchema"
    )

    new_schema = operation.update
    new_schema.resource_name = (
        skan_service.customer_sk_ad_network_conversion_value_schema_path(
            "customer_id", "account_link_id"
        )
    )
    new_schema.schema.app_id = app_id
    new_schema.schema.measurement_window_hours = 48

    skan_cv_mapping = (
        schema_instance.SkAdNetworkConversionValueSchema.FineGrainedConversionValueMappings()
    )
    skan_cv_mapping.fine_grained_conversion_value = 0  # 0 - 63
    skan_cv_mapping.conversion_value_mapping.min_time_post_install_hours = 0
    skan_cv_mapping.conversion_value_mapping.max_time_post_install_hours = 48

    skan_cv_event = schema_instance.SkAdNetworkConversionValueSchema.Event()
    skan_cv_event.mapped_event_name = "TEST"
    skan_cv_event.event_revenue_value = 10

    skan_cv_mapping.conversion_value_mapping.mapped_events.append(skan_cv_event)
    new_schema.schema.fine_grained_conversion_value_mappings.append(
        skan_cv_mapping
    )

    req.operation = operation
    req.customer_id = customer_id

    res = skan_service.mutate_customer_sk_ad_network_conversion_value_schema(
        req
    )
    return res

if __name__ == "__main__":
    # GoogleAdsClient will read the google-ads.yaml configuration file in the
    # home directory if none is specified.
    googleads_client = GoogleAdsClient.load_from_storage(
        version="v19"
    )

    parser = argparse.ArgumentParser(
        description="Creates a keyword plan for specified customer."
    )
    # The following argument(s) should be provided to run the example.
    parser.add_argument(
        "-c",
        "--customer_id",
        type=str,
        required=True,
        help="The Google Ads customer ID.",
    )
    args = parser.parse_args()

    try:
        main(googleads_client, args.customer_id)
    except GoogleAdsException as ex:
        print(
            f'Request with ID "{ex.request_id}" failed with status '
            f'"{ex.error.code().name}" and includes the following errors:'
        )
        for error in ex.failure.errors:
            print(f'\tError with message "{error.message}".')
            if error.location:
                for field_path_element in error.location.field_path_elements:
                    print(f"\t\tOn field: {field_path_element.field_name}")
        sys.exit(1)
  

Гугл Аналитика

Конверсии из связанного ресурса Google Analytics имеют одно из следующих значений type :

  • Преобразование ресурса GA4:

    • GOOGLE_ANALYTICS_4_CUSTOM
    • GOOGLE_ANALYTICS_4_PURCHASE

    Вы также можете получить идентификатор ресурса GA4, название свойства и название события из поля google_analytics_4_settings .

Вы можете внести следующие изменения в преобразование ресурса GA4:

Любая попытка изменить другие атрибуты импортированной конверсии GA4 или любые атрибуты импортированной конверсии Universal Analytics приводит к ошибке MUTATE_NOT_ALLOWED . Вы можете внести эти изменения только с помощью пользовательского интерфейса Google Рекламы.

Аналитика Firebase и сторонних приложений

Чтобы импортировать аналитику сторонних приложений или конверсии Firebase , измените status ConversionAction со HIDDEN на ENABLED с помощью метода mutate ConversionActionService . Обновление app_id не поддерживается для этих действий-конверсий.

  • FIREBASE_ANDROID_FIRST_OPEN
  • FIREBASE_ANDROID_IN_APP_PURCHASE
  • FIREBASE_ANDROID_CUSTOM
  • FIREBASE_IOS_FIRST_OPEN
  • FIREBASE_IOS_IN_APP_PURCHASE
  • FIREBASE_IOS_CUSTOM
  • THIRD_PARTY_APP_ANALYTICS_ANDROID_FIRST_OPEN
  • THIRD_PARTY_APP_ANALYTICS_ANDROID_IN_APP_PURCHASE
  • THIRD_PARTY_APP_ANALYTICS_ANDROID_CUSTOM
  • THIRD_PARTY_APP_ANALYTICS_IOS_FIRST_OPEN
  • THIRD_PARTY_APP_ANALYTICS_IOS_IN_APP_PURCHASE
  • THIRD_PARTY_APP_ANALYTICS_IOS_CUSTOM

Продажи в магазине: загрузка в действие-конверсию с отчетами

Хотя вы не можете создавать действия-конверсии STORE_SALES или STORE_SALES_DIRECT_UPLOAD с помощью API Google Рекламы, API поддерживает загрузку транзакций продаж в магазине .

  • STORE_SALES
  • STORE_SALES_DIRECT_UPLOAD

Типы действий-конверсий, доступных только для чтения

Следующие типы действий-конверсий доступны только для чтения в API Google Рекламы и предоставляются для целей отчетности.

  • ANDROID_APP_PRE_REGISTRATION
  • ANDROID_INSTALLS_ALL_OTHER_APPS
  • FLOODLIGHT_ACTION
  • FLOODLIGHT_TRANSACTION
  • GOOGLE_HOSTED
  • LEAD_FORM_SUBMIT
  • SALESFORCE
  • SEARCH_ADS_360
  • SMART_CAMPAIGN_AD_CLICKS_TO_CALL
  • SMART_CAMPAIGN_MAP_CLICKS_TO_CALL
  • SMART_CAMPAIGN_MAP_DIRECTIONS
  • SMART_CAMPAIGN_TRACKED_CALLS
  • STORE_VISITS
  • WEBPAGE_CODELESS

Неизвестный

Если ваш аккаунт Google Реклама включает другие типы действий-конверсий, вы можете обнаружить, что запросы и отчеты возвращают действия-конверсии, в которых ConversionAction.type имеет значение UNKNOWN . API не поддерживает управление этими действиями-конверсиями, но возвращает их в отчетах, чтобы предоставить полные результаты для ключевых показателей конверсий, таких как metrics.conversions и metrics.conversions_value .

Пример кода

В следующем примере кода показан процесс создания нового действия-конверсии. В частности, он создает действие-конверсию с type UPLOAD_CLICKS . Это тот же процесс пользовательского интерфейса Google Рекламы, что и при создании нового действия-конверсии с помощью команды «Импорт» > «Импорт вручную с помощью API» или «Загрузка» > «Отслеживание конверсий по кликам» . Он также устанавливает category DEFAULT .

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

Ява

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());
    }
  }
}
      

С#

public void Run(GoogleAdsClient client, long customerId)
{
    // Get the ConversionActionService.
    ConversionActionServiceClient conversionActionService =
        client.GetService(Services.V19.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
        );
    }
}
      

Питон

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

    # 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 = 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}".'
    )
      

Руби

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
      

Перл

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::V19::Resources::ConversionAction->new({
      name                          => $conversion_action_name,
      category                      => DEFAULT,
      type                          => WEBPAGE,
      status                        => ENABLED,
      viewThroughLookbackWindowDays => 15,
      valueSettings                 =>
        Google::Ads::GoogleAds::V19::Resources::ValueSettings->new({
          defaultValue          => 23.41,
          alwaysUseDefaultValue => "true"
        })});

  # Create a conversion action operation.
  my $conversion_action_operation =
    Google::Ads::GoogleAds::V19::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 Реклама и API Google Рекламы поддерживают широкий спектр действий-конверсий, поэтому некоторые правила проверки различаются в зависимости от type действия.

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

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

Все поля перечисления
Попытка установить для любого поля перечисления значение UNKNOWN приводит к ошибке RequestError.INVALID_ENUM_VALUE .
app_id
Атрибут app_id является неизменяемым и может быть установлен только при создании новой конверсии приложения.
attribution_model_settings
Установка устаревшего параметра приводит к ошибке CANNOT_SET_RULE_BASED_ATTRIBUTION_MODELS . Google Реклама поддерживает только 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

value_settings для действия-конверсии WEBSITE_CALL или AD_CALL должен иметь значение 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 .

,

В этом руководстве представлен список различных типов действий-конверсий, которые можно создать с помощью API Google Рекламы, информация о том, как они сопоставляются с веб-интерфейсом Google Рекламы, а также подробный пример кода, демонстрирующий, как создавать новые действия-конверсии.

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

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

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

Конверсии веб-сайта

Преобразование веб-сайта позволяет отслеживать действия на веб-сайте, такие как онлайн-продажи, клики по ссылкам, просмотры страниц и регистрации.

Чтобы отслеживать конверсии на своем веб-сайте, необходимо создать ConversionAction с ConversionActionType , установленным на WEBPAGE , и добавить фрагмент кода, называемый тегом, на страницу конверсии на вашем веб-сайте.

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

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

В следующей таблице показаны эквивалентные параметры API, которые можно использовать для каждого источника в веб-интерфейсе Google Рекламы:

Тип кода отслеживания Источник Google Рекламы
WEBPAGE Веб-сайт, Веб-сайт (Google Analytics (GA4))
WEBPAGE_ONCLICK Веб-сайт, Веб-сайт (Google Analytics (GA4))
CLICK_TO_CALL Клики по номеру телефона

Конверсии приложений

Конверсия приложения позволяет отслеживать установки мобильных приложений или покупки приложений в Google Play Store .

В следующей таблице показаны эквивалентные параметры API ConversionActionType , которые можно использовать для каждого источника в веб-интерфейсе Google Рекламы:

Тип действия-конверсии Источник Google Рекламы
GOOGLE_PLAY_DOWNLOAD Google Play > Установки
GOOGLE_PLAY_IN_APP_PURCHASE Google Play > Покупки в приложении

Чтобы отслеживать другие действия в мобильном приложении с помощью свойств Google Аналитики 4 или сторонней аналитики приложений , см. Дополнительные типы действий-конверсий .

Конверсии по телефонным звонкам

Отслеживание конверсий по телефонным звонкам позволяет отслеживать звонки по рекламе, звонки на номера на вашем веб-сайте и клики по номерам на мобильных сайтах.

В следующей таблице показаны эквивалентные параметры API ConversionActionType , которые можно использовать для каждого источника в веб-интерфейсе Google Рекламы:

Тип действия-конверсии Источник Google Рекламы
AD_CALL Звонки из рекламы с использованием номеров телефонов или объявлений только с номером телефона.
WEBSITE_CALL Звонки на номер телефона, указанный на вашем сайте
CLICK_TO_CALL Клики по номеру на вашем мобильном сайте

AD_CALL

Действие-конверсия AD_CALL отображается как конверсия «Звонки из рекламы» в веб-интерфейсе Google Рекламы. После создания действия-конверсии AD_CALL укажите имя его ресурса в поле call_conversion_action при создании CallAsset . Объекты звонков позволяют показывать номер телефона прямо в объявлениях.

Звонок считается конверсией, если он длится дольше указанной продолжительности. Значение по умолчанию — 60 секунд.

WEBSITE_CALL

Действие-конверсия WEBSITE_CALL отображается как конверсия «Звонки с веб-сайта» в веб-интерфейсе Google Рекламы.

В отличие от AD_CALL , этот трекер требует добавления event_snippet и global_site_tag на ваш веб-сайт, чтобы получить динамический номер переадресации Google для отслеживания вызовов по номерам, указанным на вашем веб-сайте. Кроме того, вам необходимо настроить актив звонка и связать его на уровне клиента, кампании или группы объявлений .

CLICK_TO_CALL

Действие-конверсия CLICK_TO_CALL отображается как конверсия «Клик по вашему номеру на мобильном веб-сайте» в веб-интерфейсе Google Рекламы.

Тип CLICK_TO_CALL отличается от типа AD_CALL тем, что он не отслеживает реальные телефонные звонки. Вместо этого CLICK_TO_CALL отслеживает только клики по номеру телефона с мобильного устройства. Это полезно, если вы не можете использовать номер Google для переадресации для отслеживания телефонных звонков.

Импортировать офлайн-конверсии

В следующей таблице показаны эквивалентные параметры API ConversionActionType , которые можно использовать для каждого источника в веб-интерфейсе Google Рекламы, а также ссылка на документацию для каждого конкретного типа действия-конверсии:

Тип действия-конверсии Источник Google Рекламы Руководство по настройке API
UPLOAD_CLICKS Отслеживайте конверсии по кликам и расширенному конверсиям для потенциальных клиентов. Руководство по загрузке кликов
Руководство по расширенному отслеживанию конверсий для потенциальных клиентов
UPLOAD_CALLS Отслеживайте конверсии по звонкам Руководство по настройке API
STORE_SALES Отслеживание конверсий и продаж в магазине Руководство по настройке API

Расширенное преобразование

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

В следующей таблице показаны эквивалентные параметры API, которые можно использовать для каждого типа расширенного преобразования :

Тип действия-конверсии Расширенный тип конверсии Руководство по настройке API
UPLOAD_CLICKS Улучшенные конверсии для потенциальных клиентов
Улучшает измерение офлайн-транзакций, совершенных лидом или посетителем веб-сайта.
Руководство по настройке API
WEBPAGE Расширенное отслеживание конверсий для Интернета
Улучшает измерение онлайн-конверсий.
Руководство по настройке API

Дополнительные типы действий-конверсий

API Google Рекламы делает дополнительные типы действий-конверсий доступными в отчетах, но может ограничивать или запрещать создание или изменение этих действий.

Конверсии SKAdNetwork

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

Поле отчета Описание
metrics.sk_ad_network_installs Количество установок, о которых сообщает Apple. Этот показатель можно сегментировать только по любой комбинации segments.sk_ad_network_conversion_value и сегментов, связанных с датой.
metrics.sk_ad_network_total_conversions Общее количество конверсий, включая установки и другие типы конверсий, о которых сообщает Apple. Эту метрику можно сегментировать только по сегментам, связанным с SKAdNetwork, и сегментам, связанным с датами.
segments.sk_ad_network_ad_event_type Тип события, произошедшего при конкретной конверсии.
segments.sk_ad_network_attribution_credit Как атрибуция учитывается для конкретной конверсии.
segments.sk_ad_network_fine_conversion_value

Ценность конверсии, указанная Apple. Этот сегмент нельзя применять ни к каким показателям, кроме metrics.sk_ad_network_installs , metrics.sk_ad_network_total_conversions , и его можно комбинировать только с сегментами, связанными с датами.

Значение 0 возвращается, если Apple сообщает значение 0 и отсутствие значения в противном случае. Проверьте наличие поля , чтобы различать эти два случая.

segments.sk_ad_network_coarse_conversion_value Грубое значение для отдельного преобразования.
segments.sk_ad_network_postback_sequence_index Позиция обратной передачи в последовательности для конкретного преобразования.
segments.sk_ad_network_source_app.sk_ad_network_source_app_id Идентификатор приложения, в котором было показано объявление, которое привело к установке в рекламной сети iOS Store Kit.
segments.sk_ad_network_source_domain Веб-сайт, на котором было показано объявление, которое привело к установке рекламной сети iOS Store Kit. Нулевое значение означает, что этот сегмент неприменим (например, для кампании, отличной от iOS) или не присутствовал ни в одной обратной передаче, отправленной Apple.
segments.sk_ad_network_source_type Тип источника, в котором было показано объявление, которое привело к установке рекламной сети iOS Store Kit. Нулевое значение означает, что этот сегмент неприменим (например, кампания, отличная от iOS), или ни в каких обратных передачах, отправленных Apple, не присутствовали ни исходный домен, ни исходное приложение.
segments.sk_ad_network_user_type Тип пользователя, совершившего конкретную конверсию.
segments.sk_ad_network_redistributed_fine_conversion_value Ценность конверсии в этом сегменте включает нулевые значения, которые были перераспределены в ценность конверсии. Этот сегмент представляет собой сумму наблюдаемых значений штрафных конверсий, возвращенных Apple, и смоделированных нулевых значений от Google.
segments.sk_ad_network_version Используемая версия API рекламной сети iOS Store Kit.

Вы также можете сохранить сопоставление ценности конверсии SKAdNetwork для конкретных клиентов, связанных с приложениями iOS, с помощью CustomerSkAdNetworkConversionValueSchema .

Пример кода Python

#!/usr/bin/env python
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import argparse
import sys

from google.ads.googleads.client import GoogleAdsClient
from google.ads.googleads.errors import GoogleAdsException

def main(client, customer_id):
    """Adds a keyword plan, campaign, ad group, etc. to the customer account.

    Also handles errors from the API and prints them.

    Args:
        client: An initialized instance of GoogleAdsClient
        customer_id: A str of the customer_id to use in requests.
    """

    res = update_skan_cv_schema(
        client, customer_id, "my_app_id", "account_link_id"
    )
    print(res)

def update_skan_cv_schema(client, customer_id, app_id, account_link_id):
    skan_service = client.get_service(
        "CustomerSkAdNetworkConversionValueSchemaService"
    )

    req = client.get_type(
        "MutateCustomerSkAdNetworkConversionValueSchemaRequest"
    )
    operation = client.get_type(
        "CustomerSkAdNetworkConversionValueSchemaOperation"
    )
    schema_instance = client.get_type(
        "CustomerSkAdNetworkConversionValueSchema"
    )

    new_schema = operation.update
    new_schema.resource_name = (
        skan_service.customer_sk_ad_network_conversion_value_schema_path(
            "customer_id", "account_link_id"
        )
    )
    new_schema.schema.app_id = app_id
    new_schema.schema.measurement_window_hours = 48

    skan_cv_mapping = (
        schema_instance.SkAdNetworkConversionValueSchema.FineGrainedConversionValueMappings()
    )
    skan_cv_mapping.fine_grained_conversion_value = 0  # 0 - 63
    skan_cv_mapping.conversion_value_mapping.min_time_post_install_hours = 0
    skan_cv_mapping.conversion_value_mapping.max_time_post_install_hours = 48

    skan_cv_event = schema_instance.SkAdNetworkConversionValueSchema.Event()
    skan_cv_event.mapped_event_name = "TEST"
    skan_cv_event.event_revenue_value = 10

    skan_cv_mapping.conversion_value_mapping.mapped_events.append(skan_cv_event)
    new_schema.schema.fine_grained_conversion_value_mappings.append(
        skan_cv_mapping
    )

    req.operation = operation
    req.customer_id = customer_id

    res = skan_service.mutate_customer_sk_ad_network_conversion_value_schema(
        req
    )
    return res

if __name__ == "__main__":
    # GoogleAdsClient will read the google-ads.yaml configuration file in the
    # home directory if none is specified.
    googleads_client = GoogleAdsClient.load_from_storage(
        version="v19"
    )

    parser = argparse.ArgumentParser(
        description="Creates a keyword plan for specified customer."
    )
    # The following argument(s) should be provided to run the example.
    parser.add_argument(
        "-c",
        "--customer_id",
        type=str,
        required=True,
        help="The Google Ads customer ID.",
    )
    args = parser.parse_args()

    try:
        main(googleads_client, args.customer_id)
    except GoogleAdsException as ex:
        print(
            f'Request with ID "{ex.request_id}" failed with status '
            f'"{ex.error.code().name}" and includes the following errors:'
        )
        for error in ex.failure.errors:
            print(f'\tError with message "{error.message}".')
            if error.location:
                for field_path_element in error.location.field_path_elements:
                    print(f"\t\tOn field: {field_path_element.field_name}")
        sys.exit(1)
  

Гугл Аналитика

Конверсии из связанного ресурса Google Analytics имеют одно из следующих значений type :

  • Преобразование ресурса GA4:

    • GOOGLE_ANALYTICS_4_CUSTOM
    • GOOGLE_ANALYTICS_4_PURCHASE

    Вы также можете получить идентификатор ресурса GA4, название свойства и название события из поля google_analytics_4_settings .

Вы можете внести следующие изменения в преобразование ресурса GA4:

Любая попытка изменить другие атрибуты импортированной конверсии GA4 или любые атрибуты импортированной конверсии Universal Analytics приводит к ошибке MUTATE_NOT_ALLOWED . Вы можете внести эти изменения только с помощью пользовательского интерфейса Google Рекламы.

Аналитика Firebase и сторонних приложений

Чтобы импортировать аналитику сторонних приложений или конверсии Firebase , измените status ConversionAction со HIDDEN на ENABLED с помощью метода mutate ConversionActionService . Обновление app_id не поддерживается для этих действий-конверсий.

  • FIREBASE_ANDROID_FIRST_OPEN
  • FIREBASE_ANDROID_IN_APP_PURCHASE
  • FIREBASE_ANDROID_CUSTOM
  • FIREBASE_IOS_FIRST_OPEN
  • FIREBASE_IOS_IN_APP_PURCHASE
  • FIREBASE_IOS_CUSTOM
  • THIRD_PARTY_APP_ANALYTICS_ANDROID_FIRST_OPEN
  • THIRD_PARTY_APP_ANALYTICS_ANDROID_IN_APP_PURCHASE
  • THIRD_PARTY_APP_ANALYTICS_ANDROID_CUSTOM
  • THIRD_PARTY_APP_ANALYTICS_IOS_FIRST_OPEN
  • THIRD_PARTY_APP_ANALYTICS_IOS_IN_APP_PURCHASE
  • THIRD_PARTY_APP_ANALYTICS_IOS_CUSTOM

Продажи в магазине: загрузка в действие-конверсию с отчетами

Хотя вы не можете создавать действия-конверсии STORE_SALES или STORE_SALES_DIRECT_UPLOAD с помощью API Google Рекламы, API поддерживает загрузку транзакций продаж в магазине .

  • STORE_SALES
  • STORE_SALES_DIRECT_UPLOAD

Типы действий-конверсий, доступных только для чтения

Следующие типы действий-конверсий доступны только для чтения в API Google Рекламы и предоставляются для целей отчетности.

  • ANDROID_APP_PRE_REGISTRATION
  • ANDROID_INSTALLS_ALL_OTHER_APPS
  • FLOODLIGHT_ACTION
  • FLOODLIGHT_TRANSACTION
  • GOOGLE_HOSTED
  • LEAD_FORM_SUBMIT
  • SALESFORCE
  • SEARCH_ADS_360
  • SMART_CAMPAIGN_AD_CLICKS_TO_CALL
  • SMART_CAMPAIGN_MAP_CLICKS_TO_CALL
  • SMART_CAMPAIGN_MAP_DIRECTIONS
  • SMART_CAMPAIGN_TRACKED_CALLS
  • STORE_VISITS
  • WEBPAGE_CODELESS

Неизвестный

Если ваш аккаунт Google Рекламы включает другие типы действий-конверсий, вы можете обнаружить, что запросы и отчеты возвращают действия-конверсии, в которых ConversionAction.type имеет значение UNKNOWN . API не поддерживает управление этими действиями-конверсиями, но возвращает их в отчетах, чтобы предоставить полные результаты для ключевых показателей конверсий, таких как metrics.conversions и metrics.conversions_value .

Пример кода

В следующем примере кода показан процесс создания нового действия-конверсии. В частности, он создает действие-конверсию с type UPLOAD_CLICKS . Это тот же процесс пользовательского интерфейса Google Рекламы, что и при создании нового действия-конверсии с помощью команды «Импорт» > «Импорт вручную с помощью API» или «Загрузка» > «Отслеживание конверсий по кликам» . Он также устанавливает category DEFAULT .

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

Ява

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());
    }
  }
}
      

С#

public void Run(GoogleAdsClient client, long customerId)
{
    // Get the ConversionActionService.
    ConversionActionServiceClient conversionActionService =
        client.GetService(Services.V19.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
        );
    }
}
      

Питон

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

    # 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 = 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}".'
    )
      

Руби

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
      

Перл

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::V19::Resources::ConversionAction->new({
      name                          => $conversion_action_name,
      category                      => DEFAULT,
      type                          => WEBPAGE,
      status                        => ENABLED,
      viewThroughLookbackWindowDays => 15,
      valueSettings                 =>
        Google::Ads::GoogleAds::V19::Resources::ValueSettings->new({
          defaultValue          => 23.41,
          alwaysUseDefaultValue => "true"
        })});

  # Create a conversion action operation.
  my $conversion_action_operation =
    Google::Ads::GoogleAds::V19::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 Реклама и API Google Рекламы поддерживают широкий спектр действий-конверсий, поэтому некоторые правила проверки различаются в зависимости от type действия.

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

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

Все поля перечисления
Попытка установить для любого поля перечисления значение UNKNOWN приводит к ошибке RequestError.INVALID_ENUM_VALUE .
app_id
Атрибут app_id является неизменяемым и может быть установлен только при создании новой конверсии приложения.
attribution_model_settings
Установка устаревшего параметра приводит к ошибке CANNOT_SET_RULE_BASED_ATTRIBUTION_MODELS . Google Реклама поддерживает только 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

value_settings для действия-конверсии WEBSITE_CALL или AD_CALL должен иметь значение 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 .

,

В этом руководстве представлен список различных типов действий-конверсий, которые можно создать с помощью API Google Рекламы, информация о том, как они сопоставляются с веб-интерфейсом Google Рекламы, а также подробный пример кода, демонстрирующий, как создавать новые действия-конверсии.

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

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

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

Конверсии веб-сайта

Преобразование веб-сайта позволяет отслеживать действия на веб-сайте, такие как онлайн-продажи, клики по ссылкам, просмотры страниц и регистрации.

Чтобы отслеживать конверсии на своем веб-сайте, необходимо создать ConversionAction с ConversionActionType , установленным на WEBPAGE , и добавить фрагмент кода, называемый тегом, на страницу конверсии на вашем веб-сайте.

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

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

В следующей таблице показаны эквивалентные параметры API, которые можно использовать для каждого источника в веб-интерфейсе Google Рекламы:

Тип кода отслеживания Источник Google Рекламы
WEBPAGE Веб-сайт, Веб-сайт (Google Analytics (GA4))
WEBPAGE_ONCLICK Веб-сайт, Веб-сайт (Google Analytics (GA4))
CLICK_TO_CALL Клики по номеру телефона

Конверсии приложений

Конверсия приложения позволяет отслеживать установки мобильных приложений или покупки приложений в Google Play Store .

В следующей таблице показаны эквивалентные параметры API ConversionActionType , которые можно использовать для каждого источника в веб-интерфейсе Google Рекламы:

Тип действия-конверсии Источник Google Рекламы
GOOGLE_PLAY_DOWNLOAD Google Play > Установки
GOOGLE_PLAY_IN_APP_PURCHASE Google Play > Покупки в приложении

Чтобы отслеживать другие действия в мобильном приложении с помощью свойств Google Аналитики 4 или сторонней аналитики приложений , см. Дополнительные типы действий-конверсий .

Конверсии по телефонным звонкам

Отслеживание конверсий по телефонным звонкам позволяет отслеживать звонки по рекламе, звонки на номера на вашем веб-сайте и клики по номерам на мобильных сайтах.

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

Тип действия преобразования Google Ads Source
AD_CALL Вызовы из рекламы с использованием расширений вызовов или рекламы только для вызовов
WEBSITE_CALL Звонки на номер телефона на вашем сайте
CLICK_TO_CALL Нажимает номер на вашем мобильном веб -сайте

AD_CALL

Действие преобразования AD_CALL отображается в виде вызовов из конверсии рекламы в веб -интерфейсе Google Ads. После того, как вы создаете свое действие преобразования AD_CALL , укажите его имя ресурса в поле call_conversion_action при создании CallAsset . Звоните в активы, позвольте вам показать номер телефона непосредственно в ваших объявлениях.

Вызов сообщается как конверсия, если он длится дольше, чем указанная продолжительность. По умолчанию 60 секунд.

WEBSITE_CALL

Действие по преобразованию WEBSITE_CALL появляется в виде вызовов с преобразования веб -сайта в веб -интерфейсе Google Ads.

В отличие от AD_CALL , этот трекер требует, чтобы event_snippet и global_site_tag для добавления на ваш веб -сайт для получения динамического номера пересылки Google для отслеживания вызовов на номерах, указанных на вашем веб -сайте. Кроме того, вы должны настроить активы вызовов и связать его на уровне клиента, кампании или рекламной группы .

CLICK_TO_CALL

Действие CLICK_TO_CALL преобразование появляется в виде щелчка по вашему номеру на конверсии вашего мобильного веб -сайта в веб -интерфейсе Google Ads.

Тип CLICK_TO_CALL отличается от типа AD_CALL в том, что он не отслеживает реальные телефонные звонки. Вместо этого CLICK_TO_CALL только отслеживает клики по номеру телефона с мобильного устройства. Это полезно, когда вы не можете использовать номер для пересылки Google для отслеживания телефонных звонков.

Импорт офлайн -конверсии

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

Тип действия преобразования Google Ads Source Руководство по настройке API
UPLOAD_CLICKS Конверсии отслеживания из кликов и улучшенные преобразования для потенциальных клиентов Загрузить руководство по кликам
Усовершенствованные конверсии для руководства
UPLOAD_CALLS Отслеживание конверсий из вызовов Руководство по настройке API
STORE_SALES Продажи магазина конверсий треков Руководство по настройке API

Улучшенные конверсии

Усовершенствованные конверсии помогают вам повысить точность вашего измерения конверсии, дополнив существующие теги конверсии с данными первого конверсии, например, адрес электронной почты, имени, домашний адрес и номер телефона.

В следующей таблице показаны эквивалентные параметры API для использования для каждого расширенного типа преобразования :

Тип действия преобразования Усовершенствованный тип конверсии Руководство по настройке API
UPLOAD_CLICKS Улучшенные преобразования для потенциальных клиентов
Улучшает измерение автономных транзакций, которые поступили от лидера веб -сайта или посетителя
Руководство по настройке API
WEBPAGE Усовершенствованные преобразования для Интернета
Улучшает измерение онлайн -конверсий
Руководство по настройке API

Дополнительные типы действий конверсии

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

Конверсии Skadnetwork

Если вы запустите кампании приложения iOS и реализовали Skadnetwork , вы можете получить доступ к данным Skadnetwork, предоставленным Google на уровне Customer и Campaign , используя следующие ресурсы:

Отчет поля Описание
metrics.sk_ad_network_installs Количество установок, о которых сообщается Apple. Эта метрика может быть сегментирована только по любой комбинации segments.sk_ad_network_conversion_value и связанных с датой сегментов.
metrics.sk_ad_network_total_conversions Общее количество конверсий, включая установки и другие типы конверсий, сообщенные Apple. Этот показатель может быть сегментирован только сегментами, связанными с Skadnetwork и сегментами, связанными с датой.
segments.sk_ad_network_ad_event_type Тип события, который произошел для конкретного преобразования.
segments.sk_ad_network_attribution_credit Как атрибуция зачисляется на конкретное преобразование.
segments.sk_ad_network_fine_conversion_value

Значение конверсии, сообщаемое Apple. Этот сегмент не может быть применен к каким-либо метрикам, отличным от metrics.sk_ad_network_installs , metrics.sk_ad_network_total_conversions и может быть объединен только с сегментами, связанными с датой.

Значение 0 возвращается, если Apple сообщает о значении 0 , а в противном случае нет значения. Проверьте присутствие поля , чтобы различать два случая.

segments.sk_ad_network_coarse_conversion_value Грубое значение для индивидуального преобразования.
segments.sk_ad_network_postback_sequence_index Позиция обратного обращения, в последовательности, для конкретного преобразования.
segments.sk_ad_network_source_app.sk_ad_network_source_app_id Был показан идентификатор приложения, в котором была показана объявление, которое управляло установкой Ad Network Ad Network.
segments.sk_ad_network_source_domain Был показан веб -сайт, на котором была показана реклама, которая управляла компанией Ad Network Ad Network. Нулевое значение означает, что этот сегмент не применим-например, кампания без OIOS-или не присутствовало ни в каких отправках, отправленных Apple.
segments.sk_ad_network_source_type Был показан тип источника, где показано рекламное объявление, которое управляло установкой Ad Network Ad Network. Нулевое значение означает, что этот сегмент не применим-например, кампания без IOS-или ни исходное домен, ни исходное приложение не присутствовали в каких-либо отправках, отправленных Apple.
segments.sk_ad_network_user_type Тип пользователя, который генерировал конкретное преобразование.
segments.sk_ad_network_redistributed_fine_conversion_value Значения преобразования в этом сегменте включают нулевые значения, которые были перераспределены на значения конверсии. Этот сегмент представляет сумму наблюдаемых значений тонкого преобразования, возвращаемых Apple, и смоделированные нулевые значения из Google.
segments.sk_ad_network_version Версия API API набор для iOS Store, которая использовалась.

Вы также можете сохранить картирование значений значений конверсии Skadnetwork для конкретных связанных клиентов с приложениями для iOS через CustomerSkAdNetworkConversionValueSchema .

Образец кода Python

#!/usr/bin/env python
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import argparse
import sys

from google.ads.googleads.client import GoogleAdsClient
from google.ads.googleads.errors import GoogleAdsException

def main(client, customer_id):
    """Adds a keyword plan, campaign, ad group, etc. to the customer account.

    Also handles errors from the API and prints them.

    Args:
        client: An initialized instance of GoogleAdsClient
        customer_id: A str of the customer_id to use in requests.
    """

    res = update_skan_cv_schema(
        client, customer_id, "my_app_id", "account_link_id"
    )
    print(res)

def update_skan_cv_schema(client, customer_id, app_id, account_link_id):
    skan_service = client.get_service(
        "CustomerSkAdNetworkConversionValueSchemaService"
    )

    req = client.get_type(
        "MutateCustomerSkAdNetworkConversionValueSchemaRequest"
    )
    operation = client.get_type(
        "CustomerSkAdNetworkConversionValueSchemaOperation"
    )
    schema_instance = client.get_type(
        "CustomerSkAdNetworkConversionValueSchema"
    )

    new_schema = operation.update
    new_schema.resource_name = (
        skan_service.customer_sk_ad_network_conversion_value_schema_path(
            "customer_id", "account_link_id"
        )
    )
    new_schema.schema.app_id = app_id
    new_schema.schema.measurement_window_hours = 48

    skan_cv_mapping = (
        schema_instance.SkAdNetworkConversionValueSchema.FineGrainedConversionValueMappings()
    )
    skan_cv_mapping.fine_grained_conversion_value = 0  # 0 - 63
    skan_cv_mapping.conversion_value_mapping.min_time_post_install_hours = 0
    skan_cv_mapping.conversion_value_mapping.max_time_post_install_hours = 48

    skan_cv_event = schema_instance.SkAdNetworkConversionValueSchema.Event()
    skan_cv_event.mapped_event_name = "TEST"
    skan_cv_event.event_revenue_value = 10

    skan_cv_mapping.conversion_value_mapping.mapped_events.append(skan_cv_event)
    new_schema.schema.fine_grained_conversion_value_mappings.append(
        skan_cv_mapping
    )

    req.operation = operation
    req.customer_id = customer_id

    res = skan_service.mutate_customer_sk_ad_network_conversion_value_schema(
        req
    )
    return res

if __name__ == "__main__":
    # GoogleAdsClient will read the google-ads.yaml configuration file in the
    # home directory if none is specified.
    googleads_client = GoogleAdsClient.load_from_storage(
        version="v19"
    )

    parser = argparse.ArgumentParser(
        description="Creates a keyword plan for specified customer."
    )
    # The following argument(s) should be provided to run the example.
    parser.add_argument(
        "-c",
        "--customer_id",
        type=str,
        required=True,
        help="The Google Ads customer ID.",
    )
    args = parser.parse_args()

    try:
        main(googleads_client, args.customer_id)
    except GoogleAdsException as ex:
        print(
            f'Request with ID "{ex.request_id}" failed with status '
            f'"{ex.error.code().name}" and includes the following errors:'
        )
        for error in ex.failure.errors:
            print(f'\tError with message "{error.message}".')
            if error.location:
                for field_path_element in error.location.field_path_elements:
                    print(f"\t\tOn field: {field_path_element.field_name}")
        sys.exit(1)
  

Гугл Аналитика

Конверсии из связанного свойства Google Analytics имеют одно из следующих значений type :

  • GA4 Преобразование свойств:

    • GOOGLE_ANALYTICS_4_CUSTOM
    • GOOGLE_ANALYTICS_4_PURCHASE

    Вы также можете получить идентификатор свойства GA4, имя свойства и имя события в поле google_analytics_4_settings .

Вы можете внести следующие изменения в преобразование свойств GA4:

  • Импортируйте преобразование из вашего свойства GA4 в свою учетную запись Google Ads, изменяя его поле status с HIDDEN на ENABLED .
  • Измените его поля primary_for_goal и category , чтобы указать, как это должно повлиять на торговые центры Google и отчеты .
  • Обновите его name или value_settings .
  • Удалите преобразование из вашей учетной записи Google Ads, используя операцию remove .

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

Firebase и сторонняя аналитика приложений

Чтобы импортировать аналитику приложений сторонних приложений или конверсии пожарной базы , измените status ConversionAction с HIDDEN , чтобы ENABLED использовать метод mutate ConversionActionService . Обновление app_id не поддерживается для этих действий конверсии.

  • FIREBASE_ANDROID_FIRST_OPEN
  • FIREBASE_ANDROID_IN_APP_PURCHASE
  • FIREBASE_ANDROID_CUSTOM
  • FIREBASE_IOS_FIRST_OPEN
  • FIREBASE_IOS_IN_APP_PURCHASE
  • FIREBASE_IOS_CUSTOM
  • THIRD_PARTY_APP_ANALYTICS_ANDROID_FIRST_OPEN
  • THIRD_PARTY_APP_ANALYTICS_ANDROID_IN_APP_PURCHASE
  • THIRD_PARTY_APP_ANALYTICS_ANDROID_CUSTOM
  • THIRD_PARTY_APP_ANALYTICS_IOS_FIRST_OPEN
  • THIRD_PARTY_APP_ANALYTICS_IOS_IN_APP_PURCHASE
  • THIRD_PARTY_APP_ANALYTICS_IOS_CUSTOM

Магазин продаж: загрузить в действие конверсии с отчетностью

Хотя вы не можете создавать действия STORE_SALES или STORE_SALES_DIRECT_UPLOAD , используя API Google Ads API, API поддерживает загрузку транзакций продаж магазина .

  • STORE_SALES
  • STORE_SALES_DIRECT_UPLOAD

Типы действий преобразования только для чтения

Следующие типы действий преобразования только чтения в API Google ADS и предоставляются для целей отчетности.

  • ANDROID_APP_PRE_REGISTRATION
  • ANDROID_INSTALLS_ALL_OTHER_APPS
  • FLOODLIGHT_ACTION
  • FLOODLIGHT_TRANSACTION
  • GOOGLE_HOSTED
  • LEAD_FORM_SUBMIT
  • SALESFORCE
  • SEARCH_ADS_360
  • SMART_CAMPAIGN_AD_CLICKS_TO_CALL
  • SMART_CAMPAIGN_MAP_CLICKS_TO_CALL
  • SMART_CAMPAIGN_MAP_DIRECTIONS
  • SMART_CAMPAIGN_TRACKED_CALLS
  • STORE_VISITS
  • WEBPAGE_CODELESS

Неизвестный

Если ваша учетная запись Google Ads включает в себя другие типы действий по конверсии, вы можете обнаружить, что запросы и отчеты о возврате действия, где ConversionAction.type Тип UNKNOWN . API не поддерживает управление этими действиями конверсии, но возвращает их в отчетах, чтобы предоставить полные результаты для ключевых показателей преобразования, таких как metrics.conversions и metrics.conversions_value .

Пример кода

Следующий пример кода проходит через процесс создания нового действия преобразования. В частности, это создает действие преобразования с type установленным для UPLOAD_CLICKS . Это тот же поток пользовательского интерфейса Google Ads, что и создание нового действия преобразования с использованием импорта Import> Ручной импорт с использованием API или загрузки> преобразования треков с кликов . Это также устанавливает category по DEFAULT .

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

Ява

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.V19.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
        );
    }
}
      

Питон

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

    # 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 = 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}".'
    )
      

Руби

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
      

Перв

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::V19::Resources::ConversionAction->new({
      name                          => $conversion_action_name,
      category                      => DEFAULT,
      type                          => WEBPAGE,
      status                        => ENABLED,
      viewThroughLookbackWindowDays => 15,
      valueSettings                 =>
        Google::Ads::GoogleAds::V19::Resources::ValueSettings->new({
          defaultValue          => 23.41,
          alwaysUseDefaultValue => "true"
        })});

  # Create a conversion action operation.
  my $conversion_action_operation =
    Google::Ads::GoogleAds::V19::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 и Google ADS API поддерживают широкий спектр действий по конверсии, поэтому некоторые правила проверки варьируются в зависимости от type действий.

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

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

Все поля Enum
Попытка установить любое поле enum для 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 .

Этот атрибут должен быть в диапазоне [1,60] для действия AD_CALL или WEBSITE_CALL . Для большинства других действий конверсии допустимый диапазон составляет [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

value_settings для действия WEBSITE_CALL или AD_CALL преобразование должно иметь 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 .

,

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

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

Лучший способ настроить новые действия преобразования в API - это использовать пример кода действия ADD преобразования . Образец обрабатывает все задачи по аутентификации фоновой аутентификации и выводит вас через создание ConversionAction .

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

Преобразование веб -сайтов

Преобразование веб-сайта позволяет отслеживать действия веб-сайтов, такие как онлайн-продажи, щелчки ссылки, просмотры страниц и регистрации.

Чтобы отслеживать конверсии на вашем веб -сайте, вы должны создать ConversionAction с установленной на WEBPAGE ConversionActionType и добавить фрагмент кода, который называется тег на страницу преобразования на вашем веб -сайте.

ConversionAction охватывает несколько типов конверсий веб -сайтов, различающихся в поле API по поле type в каждом TagSnippet перечисленном в поле TAG_SNIPPETS о ConversionAction .

TagSnippet предоставляет код отслеживания, который должен быть включен в ваш веб -сайт, чтобы отслеживать ваши действия конверсии. Веб -сайт и номер телефона. Нажмите на преобразование. Требуется event_snippet , который следует размещать на веб -страницах, которые указывают на действие преобразования, такое как подтверждение оформления заказа или страницу подачи формы свинца, и global_site_tag , которое должно быть установлено на каждой странице вашего веб -сайта. Вы можете получить оба этих атрибута с помощью ConversionActionService . Ознакомьтесь с нашим центром справки для получения дополнительной информации о том, как пометить ваши страницы.

В следующей таблице показаны эквивалентные параметры API для использования для каждого источника в веб -интерфейсе Google Ads:

Тип кода отслеживания Google Ads Source
WEBPAGE Веб -сайт, веб -сайт (Google Analytics (GA4))
WEBPAGE_ONCLICK Веб -сайт, веб -сайт (Google Analytics (GA4))
CLICK_TO_CALL Номер телефона нажимает

Конверсии приложений

Преобразование приложения позволяет вам отслеживать установки мобильного приложения или покупки приложений в магазине Google Play .

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

Тип действия преобразования Google Ads Source
GOOGLE_PLAY_DOWNLOAD Google Play> Установки
GOOGLE_PLAY_IN_APP_PURCHASE Google Play> в приложении покупки

Чтобы отслеживать другие действия мобильного приложения, используя свойства Google Analytics 4 или сторонние приложения Analytics , см. Дополнительные типы действий конверсии .

Конверсии телефонных звонков

Отслеживание конвертации телефонных звонков позволяет отслеживать вызовы из рекламы, вызовы по номеру на вашем веб -сайте и нажимает номера на мобильных сайтах.

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

Тип действия преобразования Google Ads Source
AD_CALL Вызовы из рекламы с использованием расширений вызовов или рекламы только для вызовов
WEBSITE_CALL Звонки на номер телефона на вашем сайте
CLICK_TO_CALL Нажимает номер на вашем мобильном веб -сайте

AD_CALL

Действие преобразования AD_CALL отображается в виде вызовов из конверсии рекламы в веб -интерфейсе Google Ads. После того, как вы создаете свое действие преобразования AD_CALL , укажите его имя ресурса в поле call_conversion_action при создании CallAsset . Звоните в активы, позвольте вам показать номер телефона непосредственно в ваших объявлениях.

Вызов сообщается как конверсия, если он длится дольше, чем указанная продолжительность. По умолчанию 60 секунд.

WEBSITE_CALL

Действие по преобразованию WEBSITE_CALL появляется в виде вызовов с преобразования веб -сайта в веб -интерфейсе Google Ads.

В отличие от AD_CALL , этот трекер требует, чтобы event_snippet и global_site_tag для добавления на ваш веб -сайт для получения динамического номера пересылки Google для отслеживания вызовов на номерах, указанных на вашем веб -сайте. Кроме того, вы должны настроить активы вызовов и связать его на уровне клиента, кампании или рекламной группы .

CLICK_TO_CALL

Действие CLICK_TO_CALL преобразование появляется в виде щелчка по вашему номеру на конверсии вашего мобильного веб -сайта в веб -интерфейсе Google Ads.

Тип CLICK_TO_CALL отличается от типа AD_CALL в том, что он не отслеживает реальные телефонные звонки. Вместо этого CLICK_TO_CALL только отслеживает клики по номеру телефона с мобильного устройства. Это полезно, когда вы не можете использовать номер для пересылки Google для отслеживания телефонных звонков.

Импорт офлайн -конверсии

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

Тип действия преобразования Google Ads Source Руководство по настройке API
UPLOAD_CLICKS Конверсии отслеживания из кликов и улучшенные преобразования для потенциальных клиентов Загрузить руководство по кликам
Усовершенствованные конверсии для руководства
UPLOAD_CALLS Отслеживание конверсий из вызовов Руководство по настройке API
STORE_SALES Продажи магазина конверсий треков Руководство по настройке API

Улучшенные конверсии

Усовершенствованные конверсии помогают вам повысить точность вашего измерения конверсии, дополнив существующие теги конверсии с данными первого конверсии, например, адрес электронной почты, имени, домашний адрес и номер телефона.

В следующей таблице показаны эквивалентные параметры API для использования для каждого расширенного типа преобразования :

Тип действия преобразования Усовершенствованный тип конверсии Руководство по настройке API
UPLOAD_CLICKS Улучшенные преобразования для потенциальных клиентов
Улучшает измерение автономных транзакций, которые поступили от лидера веб -сайта или посетителя
Руководство по настройке API
WEBPAGE Усовершенствованные преобразования для Интернета
Улучшает измерение онлайн -конверсий
Руководство по настройке API

Дополнительные типы действий конверсии

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

Конверсии Skadnetwork

Если вы запустите кампании приложения iOS и реализовали Skadnetwork , вы можете получить доступ к данным Skadnetwork, предоставленным Google на уровне Customer и Campaign , используя следующие ресурсы:

Отчет поля Описание
metrics.sk_ad_network_installs Количество установок, о которых сообщается Apple. Эта метрика может быть сегментирована только по любой комбинации segments.sk_ad_network_conversion_value и связанных с датой сегментов.
metrics.sk_ad_network_total_conversions Общее количество конверсий, включая установки и другие типы конверсий, сообщенные Apple. Этот показатель может быть сегментирован только сегментами, связанными с Skadnetwork и сегментами, связанными с датой.
segments.sk_ad_network_ad_event_type Тип события, который произошел для конкретного преобразования.
segments.sk_ad_network_attribution_credit Как атрибуция зачисляется на конкретное преобразование.
segments.sk_ad_network_fine_conversion_value

Значение конверсии, сообщаемое Apple. Этот сегмент не может быть применен к каким-либо метрикам, отличным от metrics.sk_ad_network_installs , metrics.sk_ad_network_total_conversions и может быть объединен только с сегментами, связанными с датой.

Значение 0 возвращается, если Apple сообщает о значении 0 , а в противном случае нет значения. Проверьте присутствие поля , чтобы различать два случая.

segments.sk_ad_network_coarse_conversion_value Грубое значение для индивидуального преобразования.
segments.sk_ad_network_postback_sequence_index Позиция обратного обращения, в последовательности, для конкретного преобразования.
segments.sk_ad_network_source_app.sk_ad_network_source_app_id Был показан идентификатор приложения, в котором была показана объявление, которое управляло установкой Ad Network Ad Network.
segments.sk_ad_network_source_domain Был показан веб -сайт, на котором была показана реклама, которая управляла компанией Ad Network Ad Network. Нулевое значение означает, что этот сегмент не применим-например, кампания без OIOS-или не присутствовало ни в каких отправках, отправленных Apple.
segments.sk_ad_network_source_type Был показан тип источника, где показано рекламное объявление, которое управляло установкой Ad Network Ad Network. Нулевое значение означает, что этот сегмент не применим-например, кампания без IOS-или ни исходное домен, ни исходное приложение не присутствовали в каких-либо отправках, отправленных Apple.
segments.sk_ad_network_user_type Тип пользователя, который генерировал конкретное преобразование.
segments.sk_ad_network_redistributed_fine_conversion_value Значения преобразования в этом сегменте включают нулевые значения, которые были перераспределены на значения конверсии. Этот сегмент представляет сумму наблюдаемых значений тонкого преобразования, возвращаемых Apple, и смоделированные нулевые значения из Google.
segments.sk_ad_network_version Версия API API набор для iOS Store, которая использовалась.

Вы также можете сохранить картирование значений значений конверсии Skadnetwork для конкретных связанных клиентов с приложениями для iOS через CustomerSkAdNetworkConversionValueSchema .

Образец кода Python

#!/usr/bin/env python
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import argparse
import sys

from google.ads.googleads.client import GoogleAdsClient
from google.ads.googleads.errors import GoogleAdsException

def main(client, customer_id):
    """Adds a keyword plan, campaign, ad group, etc. to the customer account.

    Also handles errors from the API and prints them.

    Args:
        client: An initialized instance of GoogleAdsClient
        customer_id: A str of the customer_id to use in requests.
    """

    res = update_skan_cv_schema(
        client, customer_id, "my_app_id", "account_link_id"
    )
    print(res)

def update_skan_cv_schema(client, customer_id, app_id, account_link_id):
    skan_service = client.get_service(
        "CustomerSkAdNetworkConversionValueSchemaService"
    )

    req = client.get_type(
        "MutateCustomerSkAdNetworkConversionValueSchemaRequest"
    )
    operation = client.get_type(
        "CustomerSkAdNetworkConversionValueSchemaOperation"
    )
    schema_instance = client.get_type(
        "CustomerSkAdNetworkConversionValueSchema"
    )

    new_schema = operation.update
    new_schema.resource_name = (
        skan_service.customer_sk_ad_network_conversion_value_schema_path(
            "customer_id", "account_link_id"
        )
    )
    new_schema.schema.app_id = app_id
    new_schema.schema.measurement_window_hours = 48

    skan_cv_mapping = (
        schema_instance.SkAdNetworkConversionValueSchema.FineGrainedConversionValueMappings()
    )
    skan_cv_mapping.fine_grained_conversion_value = 0  # 0 - 63
    skan_cv_mapping.conversion_value_mapping.min_time_post_install_hours = 0
    skan_cv_mapping.conversion_value_mapping.max_time_post_install_hours = 48

    skan_cv_event = schema_instance.SkAdNetworkConversionValueSchema.Event()
    skan_cv_event.mapped_event_name = "TEST"
    skan_cv_event.event_revenue_value = 10

    skan_cv_mapping.conversion_value_mapping.mapped_events.append(skan_cv_event)
    new_schema.schema.fine_grained_conversion_value_mappings.append(
        skan_cv_mapping
    )

    req.operation = operation
    req.customer_id = customer_id

    res = skan_service.mutate_customer_sk_ad_network_conversion_value_schema(
        req
    )
    return res

if __name__ == "__main__":
    # GoogleAdsClient will read the google-ads.yaml configuration file in the
    # home directory if none is specified.
    googleads_client = GoogleAdsClient.load_from_storage(
        version="v19"
    )

    parser = argparse.ArgumentParser(
        description="Creates a keyword plan for specified customer."
    )
    # The following argument(s) should be provided to run the example.
    parser.add_argument(
        "-c",
        "--customer_id",
        type=str,
        required=True,
        help="The Google Ads customer ID.",
    )
    args = parser.parse_args()

    try:
        main(googleads_client, args.customer_id)
    except GoogleAdsException as ex:
        print(
            f'Request with ID "{ex.request_id}" failed with status '
            f'"{ex.error.code().name}" and includes the following errors:'
        )
        for error in ex.failure.errors:
            print(f'\tError with message "{error.message}".')
            if error.location:
                for field_path_element in error.location.field_path_elements:
                    print(f"\t\tOn field: {field_path_element.field_name}")
        sys.exit(1)
  

Гугл Аналитика

Конверсии из связанного свойства Google Analytics имеют одно из следующих значений type :

  • GA4 Преобразование свойств:

    • GOOGLE_ANALYTICS_4_CUSTOM
    • GOOGLE_ANALYTICS_4_PURCHASE

    Вы также можете получить идентификатор свойства GA4, имя свойства и имя события в поле google_analytics_4_settings .

Вы можете внести следующие изменения в преобразование свойств GA4:

  • Импортируйте преобразование из вашего свойства GA4 в свою учетную запись Google Ads, изменяя его поле status с HIDDEN на ENABLED .
  • Измените его поля primary_for_goal и category , чтобы указать, как это должно повлиять на торговые центры Google и отчеты .
  • Обновите его name или value_settings .
  • Удалите преобразование из вашей учетной записи Google Ads, используя операцию remove .

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

Firebase и сторонняя аналитика приложений

Чтобы импортировать аналитику приложений сторонних приложений или конверсии пожарной базы , измените status ConversionAction с HIDDEN , чтобы ENABLED использовать метод mutate ConversionActionService . Обновление app_id не поддерживается для этих действий конверсии.

  • FIREBASE_ANDROID_FIRST_OPEN
  • FIREBASE_ANDROID_IN_APP_PURCHASE
  • FIREBASE_ANDROID_CUSTOM
  • FIREBASE_IOS_FIRST_OPEN
  • FIREBASE_IOS_IN_APP_PURCHASE
  • FIREBASE_IOS_CUSTOM
  • THIRD_PARTY_APP_ANALYTICS_ANDROID_FIRST_OPEN
  • THIRD_PARTY_APP_ANALYTICS_ANDROID_IN_APP_PURCHASE
  • THIRD_PARTY_APP_ANALYTICS_ANDROID_CUSTOM
  • THIRD_PARTY_APP_ANALYTICS_IOS_FIRST_OPEN
  • THIRD_PARTY_APP_ANALYTICS_IOS_IN_APP_PURCHASE
  • THIRD_PARTY_APP_ANALYTICS_IOS_CUSTOM

Магазин продаж: загрузить в действие конверсии с отчетностью

Хотя вы не можете создавать действия STORE_SALES или STORE_SALES_DIRECT_UPLOAD , используя API Google Ads API, API поддерживает загрузку транзакций продаж магазина .

  • STORE_SALES
  • STORE_SALES_DIRECT_UPLOAD

Типы действий преобразования только для чтения

Следующие типы действий преобразования только чтения в API Google ADS и предоставляются для целей отчетности.

  • ANDROID_APP_PRE_REGISTRATION
  • ANDROID_INSTALLS_ALL_OTHER_APPS
  • FLOODLIGHT_ACTION
  • FLOODLIGHT_TRANSACTION
  • GOOGLE_HOSTED
  • LEAD_FORM_SUBMIT
  • SALESFORCE
  • SEARCH_ADS_360
  • SMART_CAMPAIGN_AD_CLICKS_TO_CALL
  • SMART_CAMPAIGN_MAP_CLICKS_TO_CALL
  • SMART_CAMPAIGN_MAP_DIRECTIONS
  • SMART_CAMPAIGN_TRACKED_CALLS
  • STORE_VISITS
  • WEBPAGE_CODELESS

Неизвестный

Если ваша учетная запись Google Ads включает в себя другие типы действий по конверсии, вы можете обнаружить, что запросы и отчеты о возврате действия, где ConversionAction.type Тип UNKNOWN . API не поддерживает управление этими действиями конверсии, но возвращает их в отчетах, чтобы предоставить полные результаты для ключевых показателей преобразования, таких как metrics.conversions и metrics.conversions_value .

Пример кода

Следующий пример кода проходит через процесс создания нового действия преобразования. В частности, это создает действие преобразования с type установленным для UPLOAD_CLICKS . Это тот же поток пользовательского интерфейса Google Ads, что и создание нового действия преобразования с использованием импорта Import> Ручной импорт с использованием API или загрузки> преобразования треков с кликов . Это также устанавливает category по DEFAULT .

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

Ява

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.V19.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
        );
    }
}
      

Питон

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

    # 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 = 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}".'
    )
      

Руби

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
      

Перв

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::V19::Resources::ConversionAction->new({
      name                          => $conversion_action_name,
      category                      => DEFAULT,
      type                          => WEBPAGE,
      status                        => ENABLED,
      viewThroughLookbackWindowDays => 15,
      valueSettings                 =>
        Google::Ads::GoogleAds::V19::Resources::ValueSettings->new({
          defaultValue          => 23.41,
          alwaysUseDefaultValue => "true"
        })});

  # Create a conversion action operation.
  my $conversion_action_operation =
    Google::Ads::GoogleAds::V19::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 и Google ADS API поддерживают широкий спектр действий по конверсии, поэтому некоторые правила проверки варьируются в зависимости от type действий.

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

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

Все поля Enum
Попытка установить любое поле enum для 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 .

Этот атрибут должен быть в диапазоне [1,60] для действия AD_CALL или WEBSITE_CALL . Для большинства других действий конверсии допустимый диапазон составляет [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

value_settings для действия WEBSITE_CALL или AD_CALL преобразование должно иметь 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 .