Pierwsze kroki

Aby rejestrować konwersje, musisz włączyć śledzenie konwersji na koncie konwersji Google Ads. Ten przewodnik zawiera szczegółowe informacje o tym, jak sprawdzić, czy śledzenie konwersji jest włączone, włączyć je, jeśli nie jest jeszcze włączone, oraz uzyskać informacje o dotychczasowych działaniach powodujących konwersję.

Większość działań powodujących konwersję wymaga też dodatkowych czynności, aby można było je śledzić. Więcej informacji o różnych typach działań powodujących konwersję i ich wymaganiach znajdziesz w artykułach Kategorie działań powodujących konwersję i Tworzenie działań powodujących konwersję.

Podczas importowania konwersji lub danych użytkownika musisz potwierdzić, że masz uprawnienia do udostępniania Google danych o konwersjach. Można to zrobić na 2 sposoby:

  1. Skonfiguruj domyślne ustawienia dotyczące zgody na poziomie konta. W interfejsie Google Ads kliknij Narzędzia > Menedżer danych > Ustawienia zgody > Domyślne ustawienia zgody.
  2. Ustaw pole zgody w każdym zaimportowanym ładunku danych o konwersjach lub o użytkownikach (np. ClickConversion.consent, CallConversion.consent lub UserData.consent).

Konfigurowanie witryny pod kątem śledzenia konwersji

Jeśli śledzisz konwersje w witrynie lub wdrażasz konwersje rozszerzone dotyczące potencjalnych klientów, najpierw skonfiguruj tagowanie witryny. Wykonaj czynności opisane w sekcji Konfigurowanie tagu Google na potrzeby konwersji rozszerzonych dotyczących potencjalnych klientów lub użyj Menedżera tagów Google, postępując zgodnie z instrukcjami podanymi w sekcji Konfigurowanie Menedżera tagów Google na potrzeby konwersji rozszerzonych dotyczących potencjalnych klientów.

Włączanie śledzenia konwersji na koncie konwersji Google Ads

Aby sprawdzić konfigurację śledzenia konwersji na koncie i utworzyć lub pobrać działania powodujące konwersję, wykonaj te czynności.

Jak włączyć śledzenie konwersji

Pobieranie informacji o konfiguracji śledzenia konwersji

Aby sprawdzić konfigurację śledzenia konwersji na koncie i potwierdzić, że śledzenie konwersji jest włączone, prześlij zapytanie do zasobu Customer o ConversionTrackingSetting. Wyślij to zapytanie za pomocą GoogleAdsService.SearchStream:

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

Pole google_ads_conversion_customer wskazuje konto Google Ads, które tworzy konwersje dla tego klienta i nimi zarządza. W przypadku klientów korzystających ze śledzenia konwersji dla wielu kont jest to identyfikator konta menedżera. Identyfikator klienta konwersji Google Ads powinien być podawany jako customer_id w żądaniach do interfejsu Google Ads API, aby można było tworzyć konwersje i nimi zarządzać. Pamiętaj, że to pole jest wypełniane nawet wtedy, gdy śledzenie konwersji nie jest włączone.

Pole conversion_tracking_status wskazuje, czy śledzenie konwersji jest włączone i czy konto korzysta ze śledzenia konwersji dla wielu kont.

Utwórz działanie powodujące konwersję w ramach klienta konwersji Google Ads.

Jeśli wartość conversion_tracking_status to NOT_CONVERSION_TRACKED, śledzenie konwersji nie jest włączone na koncie. Włącz śledzenie konwersji, tworząc co najmniej 1 ConversionAction na koncie konwersji Google Ads, jak w przykładzie poniżej. Możesz też utworzyć działanie powodujące konwersję w interfejsie, postępując zgodnie z instrukcjami podanymi w artykule w Centrum pomocy Google Ads na temat konfigurowania śledzenia konwersji dla typu konwersji, który chcesz włączyć.

Pamiętaj, że konwersje rozszerzone są włączane automatycznie, gdy są wysyłane przez interfejs Google Ads API, ale można je wyłączyć w interfejsie Google Ads.

Przykładowy kod

Java

private void runExample(GoogleAdsClient googleAdsClient, long customerId) {

  // Creates a ConversionAction.
  ConversionAction conversionAction =
      ConversionAction.newBuilder()
          // Note that conversion action names must be unique. If a conversion action already
          // exists with the specified conversion_action_name the create operation will fail with
          // a ConversionActionError.DUPLICATE_NAME error.
          .setName("Earth to Mars Cruises Conversion #" + getPrintableDateTime())
          .setCategory(ConversionActionCategory.DEFAULT)
          .setType(ConversionActionType.WEBPAGE)
          .setStatus(ConversionActionStatus.ENABLED)
          .setViewThroughLookbackWindowDays(15L)
          .setValueSettings(
              ValueSettings.newBuilder()
                  .setDefaultValue(23.41)
                  .setAlwaysUseDefaultValue(true)
                  .build())
          .build();

  // Creates the operation.
  ConversionActionOperation operation =
      ConversionActionOperation.newBuilder().setCreate(conversionAction).build();

  try (ConversionActionServiceClient conversionActionServiceClient =
      googleAdsClient.getLatestVersion().createConversionActionServiceClient()) {
    MutateConversionActionsResponse response =
        conversionActionServiceClient.mutateConversionActions(
            Long.toString(customerId), Collections.singletonList(operation));
    System.out.printf("Added %d conversion actions:%n", response.getResultsCount());
    for (MutateConversionActionResult result : response.getResultsList()) {
      System.out.printf(
          "New conversion action added with resource name: '%s'%n", result.getResourceName());
    }
  }
}
      

C#

public void Run(GoogleAdsClient client, long customerId)
{
    // Get the ConversionActionService.
    ConversionActionServiceClient conversionActionService =
        client.GetService(Services.V26.ConversionActionService);

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

    // Add a conversion action.
    ConversionAction conversionAction = new ConversionAction()
    {
        Name = ConversionActionName,
        Category = ConversionActionCategory.Default,
        Type = ConversionActionType.Webpage,
        Status = ConversionActionStatus.Enabled,
        ViewThroughLookbackWindowDays = 15,
        ValueSettings = new ConversionAction.Types.ValueSettings()
        {
            DefaultValue = 23.41,
            AlwaysUseDefaultValue = true
        }
    };

    // Create the operation.
    ConversionActionOperation operation = new ConversionActionOperation()
    {
        Create = conversionAction
    };

    try
    {
        // Create the conversion action.
        MutateConversionActionsResponse response =
            conversionActionService.MutateConversionActions(customerId.ToString(),
                    new ConversionActionOperation[] { operation });

        // Display the results.
        foreach (MutateConversionActionResult newConversionAction in response.Results)
        {
            Console.WriteLine($"New conversion action with resource name = " +
                $"'{newConversionAction.ResourceName}' was added.");
        }
    }
    catch (GoogleAdsException e)
    {
        Console.WriteLine("Failure:");
        Console.WriteLine($"Message: {e.Message}");
        Console.WriteLine($"Failure: {e.Failure}");
        Console.WriteLine($"Request ID: {e.RequestId}");
        throw;
    }
}
      

PHP

    public static function runExample(GoogleAdsClient $googleAdsClient, int $customerId)
    {
        // Creates a conversion action.
        $conversionAction = new ConversionAction(
            [
            // Note that conversion action names must be unique.
            // If a conversion action already exists with the specified conversion_action_name
            // the create operation will fail with a ConversionActionError.DUPLICATE_NAME error.
            'name' => 'Earth to Mars Cruises Conversion #' . Helper::getPrintableDatetime(),
            'category' => ConversionActionCategory::PBDEFAULT,
            'type' => ConversionActionType::WEBPAGE,
            'status' => ConversionActionStatus::ENABLED,
            'view_through_lookback_window_days' => 15,
            'value_settings' => new ValueSettings(
                [
                'default_value' => 23.41,
                'always_use_default_value' => true
                ]
            )
            ]
        );

        // Creates a conversion action operation.
        $conversionActionOperation = new ConversionActionOperation();
        $conversionActionOperation->setCreate($conversionAction);

        // Issues a mutate request to add the conversion action.
        $conversionActionServiceClient = $googleAdsClient->getConversionActionServiceClient();
        $response = $conversionActionServiceClient->mutateConversionActions(
            MutateConversionActionsRequest::build($customerId, [$conversionActionOperation])
        );

        printf("Added %d conversion actions:%s", $response->getResults()->count(), PHP_EOL);

        foreach ($response->getResults() as $addedConversionAction) {
            /**
 * @var ConversionAction $addedConversionAction
*/
            printf(
                "New conversion action added with resource name: '%s'%s",
                $addedConversionAction->getResourceName(),
                PHP_EOL
            );
        }
    }
      

Python

def main(client: GoogleAdsClient, customer_id: str) -> None:
    conversion_action_service: ConversionActionServiceClient = (
        client.get_service("ConversionActionService")
    )

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

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

    # Note that conversion action names must be unique. If a conversion action
    # already exists with the specified conversion_action_name, the create
    # operation will fail with a ConversionActionError.DUPLICATE_NAME error.
    conversion_action.name = f"Earth to Mars Cruises Conversion {uuid.uuid4()}"
    conversion_action.type_ = (
        client.enums.ConversionActionTypeEnum.UPLOAD_CLICKS
    )
    conversion_action.category = (
        client.enums.ConversionActionCategoryEnum.DEFAULT
    )
    conversion_action.status = client.enums.ConversionActionStatusEnum.ENABLED
    conversion_action.view_through_lookback_window_days = 15

    # Create a value settings object.
    value_settings: ConversionAction.ValueSettings = (
        conversion_action.value_settings
    )
    value_settings.default_value = 15.0
    value_settings.always_use_default_value = True

    # Add the conversion action.
    conversion_action_response: MutateConversionActionsResponse = (
        conversion_action_service.mutate_conversion_actions(
            customer_id=customer_id,
            operations=[conversion_action_operation],
        )
    )

    print(
        "Created conversion action "
        f'"{conversion_action_response.results[0].resource_name}".'
    )
      

Ruby

def add_conversion_action(customer_id)
  # GoogleAdsClient will read a config file from
  # ENV['HOME']/google_ads_config.rb when called without parameters
  client = Google::Ads::GoogleAds::GoogleAdsClient.new


  # Add a conversion action.
  conversion_action = client.resource.conversion_action do |ca|
    ca.name = "Earth to Mars Cruises Conversion #{(Time.new.to_f * 100).to_i}"
    ca.type = :UPLOAD_CLICKS
    ca.category = :DEFAULT
    ca.status = :ENABLED
    ca.view_through_lookback_window_days = 15

    # Create a value settings object.
    ca.value_settings = client.resource.value_settings do |vs|
      vs.default_value = 15
      vs.always_use_default_value = true
    end
  end

  # Create the operation.
  conversion_action_operation = client.operation.create_resource.conversion_action(conversion_action)

  # Add the ad group ad.
  response = client.service.conversion_action.mutate_conversion_actions(
    customer_id: customer_id,
    operations: [conversion_action_operation],
  )

  puts "New conversion action with resource name = #{response.results.first.resource_name}."
end
      

Perl

sub add_conversion_action {
  my ($api_client, $customer_id) = @_;

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

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

curl

Sprawdź, czy właściwość type ma ustawioną prawidłową wartość ConversionActionType. Więcej wskazówek na temat tworzenia działań powodujących konwersję w interfejsie Google Ads API znajdziesz w artykule Tworzenie działań powodujących konwersję.

Pobieranie istniejącego działania powodującego konwersję

Aby pobrać szczegóły istniejącego działania powodującego konwersję, wyślij to zapytanie: Upewnij się, że identyfikator klienta w żądaniu jest ustawiony na klienta konwersji Google Ads, którego udało Ci się wcześniej zidentyfikować, a typ działania powodującego konwersję ma prawidłową wartość ConversionActionType.

SELECT
  conversion_action.id,
  conversion_action.resource_name,
  conversion_action.name,
  conversion_action.type,
  conversion_action.category,
  conversion_action.status
FROM conversion_action

WHERE conversion_action.type = 'INSERT_CONVERSION_ACTION_TYPE'

Śledzenie konwersji dla wielu kont

Śledzenie konwersji dla wielu kont umożliwia kontom Google Ads importowanie konwersji w imieniu innych kont, które mogły wyświetlać reklamy generujące konwersje. Może to uprościć integrację, ponieważ umożliwia konsolidację kont, które wysyłają żądania importu.

Włączanie śledzenia konwersji dla wielu kont w interfejsie Google Ads API

Podczas tworzenia lub aktualizowania kont klientów możesz użyć interfejsu Google Ads API, aby włączyć śledzenie konwersji w wielu kontach.

W zasobie Customer ustaw pole conversion_tracking_setting.google_ads_conversion_customer na nazwę zasobu konta menedżera, które powinno zarządzać działaniami powodującymi konwersję w imieniu konta klienta.

Żądania, które modyfikują klienta konwersji na koncie klienta, muszą być wysyłane przez konto menedżera, które staje się nowym klientem konwersji dla klienta. W tym celu ustaw login-customer-id na identyfikator konta menedżera.

Gdy włączysz śledzenie konwersji dla wielu kont lub zmienisz menedżera śledzenia konwersji na istniejącym koncie klienta, obowiązują te same zastrzeżenia, co w przypadku wprowadzenia tej zmiany w interfejsie. Więcej szczegółów:

  • Konto klienta przyjmie domyślne reguły wartości konwersji i domyślne cele związane z cyklem życia klienta nowego menedżera śledzenia konwersji.
  • Kampanie, które są kierowane na konkretne działanie powodujące konwersję, zaczną używać domyślnych celów konwersji na koncie menedżera konwersji. Jeśli nadal będziesz kierować reklamy na konkretne działanie powodujące konwersję, może to prowadzić do niespójnych wyników, ponieważ konto menedżera może nie mieć tych samych celów co konto klienta. Upewnij się, że kampanie są zoptymalizowane pod kątem odpowiednich celów.
  • Jeśli dane konto należy do więcej niż jednego konta menedżera, możesz używać na nim działań powodujących konwersje tylko z jednego konta menedżera. Jeśli nie określono konta śledzenia konwersji, konto domyślnie będzie używać siebie jako konta śledzenia konwersji.

Importowanie konwersji na różnych kontach

Po włączeniu śledzenia dla wielu kont konta klientów i konta menedżerów mogą importować konwersje w imieniu konta wyświetlania reklam. Umożliwia to uproszczenie logiki importu, dzięki czemu nie musisz określać konta wyświetlania dla każdej konwersji w momencie importu. Możesz po prostu wybrać jedno konto z drzewa kont, aby zaimportować wszystkie konwersje.

Aby przesłać konwersję, konto, z którego przesyłasz, musi mieć dostęp do działania powodującego konwersję. W hierarchii śledzenia na wielu kontach konto przesyłające ma dostęp do działania, jeśli jest kontem nadrzędnym (menedżera) lub potomnym właściciela działania powodującego konwersję w drzewie kont.

Poniższy diagram przedstawia strukturę autoryzacji na potrzeby importowania konwersji. W tym przypadku C1 to konto klienta, które wyświetliło reklamę generującą konwersję, a M2 to właściciel działania powodującego konwersję i konto nadrzędne śledzenia konwersji konta C1. Konta zaznaczone na zielono mogą importować konwersje w imieniu konta C1, a konta zaznaczone na czerwono nie mają takiej możliwości.

Struktura autoryzacji

Utwórz działania powodujące konwersję

Aby mierzyć konwersje, skonfiguruj ConversionAction dla type działania powodującego konwersję, które chcesz śledzić. Na przykład zakup online i połączenie telefoniczne wymagają różnych działań powodujących konwersję.

Najlepszym sposobem na skonfigurowanie nowych działań powodujących konwersję w interfejsie API jest użycie przykładu kodu dodawania działania powodującego konwersję. Przykładowy kod obsługuje wszystkie zadania uwierzytelniania w tle i przeprowadza Cię przez proces tworzenia ConversionAction.

Większość działań powodujących konwersję wymaga też dodatkowych czynności z Twojej strony, aby je śledzić. Aby na przykład śledzić konwersje w witrynie, musisz dodać do strony konwersji fragment kodu zwany tagiem. Szczegółowe wymagania dotyczące innych typów działań powodujących konwersję znajdziesz w artykule w Centrum pomocy Google Ads o typach konwersji.

Jeśli używasz śledzenia konwersji dla wielu kont, funkcja ConversionActionService zwraca te działania powodujące konwersję:

  • Wszystkie działania powodujące konwersję zdefiniowane przez konto menedżera, które jest używane przez konto do śledzenia konwersji dla wielu kont
  • Wszystkie działania powodujące konwersję, w przypadku których klient zgromadził statystyki, w tym działania zdefiniowane przez system i działania należące do konta menedżera, nawet jeśli to konto menedżera zostanie później odłączone.
  • Wszystkie działania zdefiniowane przez klienta na jego koncie
  • Konwersje Analytics utworzone w połączonych usługach w Google Analytics. Obejmuje to działania powodujące konwersję w Analytics, które nie zostały zaimportowane do Google Ads i mają stan HIDDEN.

Przykładowy kod

Poniższy przykładowy kod pokazuje, jak utworzyć nowe działanie powodujące konwersję. W szczególności tworzy działanie powodujące konwersję z ustawieniem type na UPLOAD_CLICKS. Ustawia też category na DEFAULT.

Obowiązują te ustawienia domyślne:

Java

private void runExample(GoogleAdsClient googleAdsClient, long customerId) {

  // Creates a ConversionAction.
  ConversionAction conversionAction =
      ConversionAction.newBuilder()
          // Note that conversion action names must be unique. If a conversion action already
          // exists with the specified conversion_action_name the create operation will fail with
          // a ConversionActionError.DUPLICATE_NAME error.
          .setName("Earth to Mars Cruises Conversion #" + getPrintableDateTime())
          .setCategory(ConversionActionCategory.DEFAULT)
          .setType(ConversionActionType.WEBPAGE)
          .setStatus(ConversionActionStatus.ENABLED)
          .setViewThroughLookbackWindowDays(15L)
          .setValueSettings(
              ValueSettings.newBuilder()
                  .setDefaultValue(23.41)
                  .setAlwaysUseDefaultValue(true)
                  .build())
          .build();

  // Creates the operation.
  ConversionActionOperation operation =
      ConversionActionOperation.newBuilder().setCreate(conversionAction).build();

  try (ConversionActionServiceClient conversionActionServiceClient =
      googleAdsClient.getLatestVersion().createConversionActionServiceClient()) {
    MutateConversionActionsResponse response =
        conversionActionServiceClient.mutateConversionActions(
            Long.toString(customerId), Collections.singletonList(operation));
    System.out.printf("Added %d conversion actions:%n", response.getResultsCount());
    for (MutateConversionActionResult result : response.getResultsList()) {
      System.out.printf(
          "New conversion action added with resource name: '%s'%n", result.getResourceName());
    }
  }
}
      

C#

public void Run(GoogleAdsClient client, long customerId)
{
    // Get the ConversionActionService.
    ConversionActionServiceClient conversionActionService =
        client.GetService(Services.V26.ConversionActionService);

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

    // Add a conversion action.
    ConversionAction conversionAction = new ConversionAction()
    {
        Name = ConversionActionName,
        Category = ConversionActionCategory.Default,
        Type = ConversionActionType.Webpage,
        Status = ConversionActionStatus.Enabled,
        ViewThroughLookbackWindowDays = 15,
        ValueSettings = new ConversionAction.Types.ValueSettings()
        {
            DefaultValue = 23.41,
            AlwaysUseDefaultValue = true
        }
    };

    // Create the operation.
    ConversionActionOperation operation = new ConversionActionOperation()
    {
        Create = conversionAction
    };

    try
    {
        // Create the conversion action.
        MutateConversionActionsResponse response =
            conversionActionService.MutateConversionActions(customerId.ToString(),
                    new ConversionActionOperation[] { operation });

        // Display the results.
        foreach (MutateConversionActionResult newConversionAction in response.Results)
        {
            Console.WriteLine($"New conversion action with resource name = " +
                $"'{newConversionAction.ResourceName}' was added.");
        }
    }
    catch (GoogleAdsException e)
    {
        Console.WriteLine("Failure:");
        Console.WriteLine($"Message: {e.Message}");
        Console.WriteLine($"Failure: {e.Failure}");
        Console.WriteLine($"Request ID: {e.RequestId}");
        throw;
    }
}
      

PHP

    public static function runExample(GoogleAdsClient $googleAdsClient, int $customerId)
    {
        // Creates a conversion action.
        $conversionAction = new ConversionAction(
            [
            // Note that conversion action names must be unique.
            // If a conversion action already exists with the specified conversion_action_name
            // the create operation will fail with a ConversionActionError.DUPLICATE_NAME error.
            'name' => 'Earth to Mars Cruises Conversion #' . Helper::getPrintableDatetime(),
            'category' => ConversionActionCategory::PBDEFAULT,
            'type' => ConversionActionType::WEBPAGE,
            'status' => ConversionActionStatus::ENABLED,
            'view_through_lookback_window_days' => 15,
            'value_settings' => new ValueSettings(
                [
                'default_value' => 23.41,
                'always_use_default_value' => true
                ]
            )
            ]
        );

        // Creates a conversion action operation.
        $conversionActionOperation = new ConversionActionOperation();
        $conversionActionOperation->setCreate($conversionAction);

        // Issues a mutate request to add the conversion action.
        $conversionActionServiceClient = $googleAdsClient->getConversionActionServiceClient();
        $response = $conversionActionServiceClient->mutateConversionActions(
            MutateConversionActionsRequest::build($customerId, [$conversionActionOperation])
        );

        printf("Added %d conversion actions:%s", $response->getResults()->count(), PHP_EOL);

        foreach ($response->getResults() as $addedConversionAction) {
            /**
 * @var ConversionAction $addedConversionAction
*/
            printf(
                "New conversion action added with resource name: '%s'%s",
                $addedConversionAction->getResourceName(),
                PHP_EOL
            );
        }
    }
      

Python

def main(client: GoogleAdsClient, customer_id: str) -> None:
    conversion_action_service: ConversionActionServiceClient = (
        client.get_service("ConversionActionService")
    )

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

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

    # Note that conversion action names must be unique. If a conversion action
    # already exists with the specified conversion_action_name, the create
    # operation will fail with a ConversionActionError.DUPLICATE_NAME error.
    conversion_action.name = f"Earth to Mars Cruises Conversion {uuid.uuid4()}"
    conversion_action.type_ = (
        client.enums.ConversionActionTypeEnum.UPLOAD_CLICKS
    )
    conversion_action.category = (
        client.enums.ConversionActionCategoryEnum.DEFAULT
    )
    conversion_action.status = client.enums.ConversionActionStatusEnum.ENABLED
    conversion_action.view_through_lookback_window_days = 15

    # Create a value settings object.
    value_settings: ConversionAction.ValueSettings = (
        conversion_action.value_settings
    )
    value_settings.default_value = 15.0
    value_settings.always_use_default_value = True

    # Add the conversion action.
    conversion_action_response: MutateConversionActionsResponse = (
        conversion_action_service.mutate_conversion_actions(
            customer_id=customer_id,
            operations=[conversion_action_operation],
        )
    )

    print(
        "Created conversion action "
        f'"{conversion_action_response.results[0].resource_name}".'
    )
      

Ruby

def add_conversion_action(customer_id)
  # GoogleAdsClient will read a config file from
  # ENV['HOME']/google_ads_config.rb when called without parameters
  client = Google::Ads::GoogleAds::GoogleAdsClient.new


  # Add a conversion action.
  conversion_action = client.resource.conversion_action do |ca|
    ca.name = "Earth to Mars Cruises Conversion #{(Time.new.to_f * 100).to_i}"
    ca.type = :UPLOAD_CLICKS
    ca.category = :DEFAULT
    ca.status = :ENABLED
    ca.view_through_lookback_window_days = 15

    # Create a value settings object.
    ca.value_settings = client.resource.value_settings do |vs|
      vs.default_value = 15
      vs.always_use_default_value = true
    end
  end

  # Create the operation.
  conversion_action_operation = client.operation.create_resource.conversion_action(conversion_action)

  # Add the ad group ad.
  response = client.service.conversion_action.mutate_conversion_actions(
    customer_id: customer_id,
    operations: [conversion_action_operation],
  )

  puts "New conversion action with resource name = #{response.results.first.resource_name}."
end
      

Perl

sub add_conversion_action {
  my ($api_client, $customer_id) = @_;

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

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

curl

Ten przykład znajdziesz w folderze Remarketing w bibliotece klienta oraz w kolekcji przykładowych kodów: Przykładowy kod dodawania działania powodującego konwersję.

ConversionActionService.MutateConversionActions odwołanie do pola

Użyj metody MutateConversionActions w ConversionActionService, aby utworzyć, zaktualizować lub usunąć działania powodujące konwersję w przypadku klienta konwersji Google Ads:

POST https://googleads.googleapis.com/v26/customers/{customer_id}/conversionActions:mutate

W tabeli poniżej znajdziesz pola żądania i operacji najwyższego poziomu w usłudze MutateConversionActionsRequest:

Pole Wymaganie Opis
customer_id Wymagane 10-cyfrowy identyfikator (string) klienta, który dokonał konwersji z reklam Google Ads (google_ads_conversion_customer), bez łączników.
partial_failure Opcjonalny Gdy true (bool), prawidłowe operacje są wykonywane, a nieudane operacje zwracają błędy w partial_failure_error. Domyślna wartość to false.
validate_only Opcjonalny Jeśli parametr ma wartość true (bool), żądanie jest sprawdzane bez wykonywania mutacji.
response_content_type Opcjonalny ResponseContentType, który określa, czy odpowiedź zwraca tylko resource_name (RESOURCE_NAME_ONLY, domyślnie) czy zmodyfikowany obiekt ConversionAction (MUTABLE_RESOURCE).
operations[].create Wymagane (podczas tworzenia) ConversionAction Zasób do utworzenia. Nie przewiduje się opadów: resource_name.
operations[].update Wymagane (podczas aktualizacji) Zasób ConversionAction do zaktualizowania (musi zawierać resource_name i element równorzędny update_mask w ConversionActionOperation).
operations[].update_mask Wymagane (przy aktualizacji) FieldMask (lista rozdzielona przecinkami zmodyfikowanych ścieżek pól ConversionAction w snake_case; REST JSON updateMask akceptuje snake_case lub camelCase, a biblioteki klienta gRPC i klienta wymagają snake_case) w ConversionActionOperation (element równorzędny update, nie zagnieżdżony w ConversionAction).
operations[].remove Wymagane (przy usuwaniu) Nazwa zasobu (customers/{customer_id}/conversionActions/{action_id}) działania powodującego konwersję, które chcesz usunąć.

Podczas konfigurowania ConversionAction w operations[].create lub operations[].update należy przestrzegać tych wymagań dotyczących pól i ograniczeń dotyczących możliwości zmiany (w sekcji Weryfikacje znajdziesz reguły błędów dotyczące konkretnych typów):

ConversionAction pole Wymagania i możliwość zmiany Opis
name Wymagane (możliwe do zmiany) Niepowtarzalna wyświetlana nazwa (string) na koncie klienta konwersji.
type Wymagane w przypadku: create (IMMUTABLE) ConversionActionType (np. WEBPAGE, UPLOAD_CLICKS, UPLOAD_CALLS, AD_CALL lub WEBSITE_CALL).
category Opcjonalny (zmienny) ConversionActionCategory (np. DEFAULT, PURCHASE, SUBMIT_LEAD_FORM, SIGNUP lub PHONE_CALL_LEAD). Wartość domyślna to DEFAULT.
status Opcjonalne (zmienny) ConversionActionStatus (ENABLED, REMOVED lub HIDDEN). Wartość domyślna to ENABLED.
primary_for_goal Opcjonalny (zmienny) bool, który określa, czy działanie może być objęte określaniem stawek w przypadku standardowych celów konwersji na poziomie klienta i kampanii (uwaga: zasoby CustomConversionGoal ignorują to ustawienie). Domyślna wartość to true.
counting_type Opcjonalny (zmienny) ConversionActionCountingType (MANY_PER_CLICK domyślnie lub ONE_PER_CLICK).
value_settings Opcjonalne (zmienny) ValueSettings (default_value, default_currency_code, always_use_default_value).
attribution_model_settings Opcjonalne (zmienny) AttributionModelSettings (attribution_model: GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN domyślne lub GOOGLE_ADS_LAST_CLICK).
click_through_lookback_window_days Opcjonalne (zmienny) int64 okres ważności kliknięć w dniach (od 1 do 90 w przypadku większości typów; od 1 do 60 w przypadku typów połączeń);
view_through_lookback_window_days Opcjonalny (zmienny) int64 okres ważności konwersji po obejrzeniu w dniach (1–30 w przypadku większości typów; nieustawiony w przypadku typów połączeń);
phone_call_duration_seconds Tylko typy połączeń (zmienne) int64 minimalny czas trwania połączenia w sekundach (od 0 do 10000);
app_id Tylko typy aplikacji (nie można ich zmienić po utworzeniu) Identyfikator aplikacji mobilnej (string); można go ustawić tylko w przypadku create dla działań powodujących konwersję z aplikacji.
include_in_conversions_metric Tylko do odczytu w mutacjach Nie można modyfikować bezpośrednio. Zamiast tego skonfiguruj primary_for_goal.
tag_snippets[] OUTPUT_ONLY Fragmenty kodu śledzenia witryny (TagSnippet) zostały wypełnione w WEBPAGE działaniach powodujących konwersję.

Struktura żądania i odpowiedzi REST

Aby utworzyć lub zaktualizować ConversionAction za pomocą REST, wyślij żądanie POST do ConversionActionService.MutateConversionActions. Podczas aktualizowania dotychczasowego działania powodującego konwersję podaj updateMask w obiekcie operacji jako element równorzędny update:

POST https://googleads.googleapis.com/v26/customers/{customer_id}/conversionActions:mutate
{
  "operations": [
    {
      "create": {
        "name": "Earth to Mars Cruise Conversion",
        "type": "UPLOAD_CLICKS",
        "category": "DEFAULT",
        "status": "ENABLED",
        "primaryForGoal": true,
        "countingType": "ONE_PER_CLICK",
        "clickThroughLookbackWindowDays": "60",
        "valueSettings": {
          "defaultValue": 23.41,
          "defaultCurrencyCode": "USD",
          "alwaysUseDefaultValue": true
        }
      }
    },
    {
      "updateMask": "primary_for_goal,value_settings.default_value",
      "update": {
        "resourceName": "customers/{customer_id}/conversionActions/6666666666",
        "primaryForGoal": false,
        "valueSettings": {
          "defaultValue": 45.00
        }
      }
    }
  ]
}

Odpowiedź informująca o powodzeniu zwraca wpisy MutateConversionActionResult w results[]:

{
  "results": [
    {
      "resourceName": "customers/{customer_id}/conversionActions/7777777777"
    },
    {
      "resourceName": "customers/{customer_id}/conversionActions/6666666666"
    }
  ]
}

Sprawdzanie ustawień działań powodujących konwersję i fragmentów kodu tagów za pomocą GAQL

Oprócz podstawowego zapytania pokazanego w sekcji Etapy włączania śledzenia konwersji możesz wysyłać zapytania do zasobu conversion_action za pomocą GoogleAdsService.SearchStream, aby sprawdzać primary_for_goal, stan modelu atrybucji, okresy ważności, ustawienia wartości i witrynętag_snippets:

SELECT
  conversion_action.id,
  conversion_action.resource_name,
  conversion_action.name,
  conversion_action.type,
  conversion_action.category,
  conversion_action.status,
  conversion_action.primary_for_goal,
  conversion_action.counting_type,
  conversion_action.click_through_lookback_window_days,
  conversion_action.view_through_lookback_window_days,
  conversion_action.value_settings.default_value,
  conversion_action.value_settings.default_currency_code,
  conversion_action.value_settings.always_use_default_value,
  conversion_action.attribution_model_settings.attribution_model,
  conversion_action.attribution_model_settings.data_driven_model_status,
  conversion_action.tag_snippets
FROM conversion_action
WHERE conversion_action.status = 'ENABLED'

Weryfikacje

Google Ads i interfejs Google Ads API obsługują wiele różnych działań powodujących konwersję, więc niektóre reguły weryfikacji różnią się w zależności od type działania.

Zdecydowanie najczęstszym błędem podczas tworzenia działania powodującego konwersję jest DUPLICATE_NAME. Upewnij się, że każde działanie powodujące konwersję ma unikalną nazwę.

Oto kilka wskazówek dotyczących ustawiania pól ConversionAction:

Wszystkie pola typu wyliczeniowego
Próba ustawienia dowolnego pola typu wyliczeniowego na UNKNOWN powoduje błąd RequestError.INVALID_ENUM_VALUE.
app_id
Atrybut app_id jest niezmienny i można go ustawić tylko podczas tworzenia nowej konwersji w aplikacji.
attribution_model_settings
Ustawienie tej opcji na wycofaną opcję powoduje błąd CANNOT_SET_RULE_BASED_ATTRIBUTION_MODELS. Google Ads obsługuje tylko GOOGLE_ADS_LAST_CLICK i GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN.
click_through_lookback_window_days

Ustawienie tego atrybutu na wartość spoza dozwolonego zakresu spowoduje błąd RangeError.TOO_LOW lub RangeError.TOO_HIGH.

W przypadku działania powodującego konwersję AD_CALL lub WEBSITE_CALL wartość tego atrybutu musi wynosić od 1 do 60 dni. W przypadku większości innych działań powodujących konwersję dozwolony zakres wynosi od 1 do 90 dni.

include_in_conversions_metric

Ustawienie tej wartości w operacji create lub update nie powiedzie się i zwróci błąd FieldError.IMMUTABLE_FIELD. Zamiast tego ustaw primary_for_goal zgodnie z opisem w przewodniku po celach konwersji.

phone_call_duration_seconds

Próba ustawienia tego atrybutu w przypadku działania powodującego konwersję, które nie dotyczy połączeń, spowoduje błąd FieldError.VALUE_MUST_BE_UNSET.

type

Atrybut type jest niezmienny i można go ustawić tylko podczas tworzenia nowej konwersji.

Aktualizacja działania powodującego konwersję, w którym parametr type ma wartość UNKNOWN, powoduje błąd MutateError.MUTATE_NOT_ALLOWED.

value_settings

Wartość value_settings dla działania powodującego konwersję typu WEBSITE_CALL lub AD_CALL musi mieć ustawienie always_use_default_value na true. Podanie wartości false podczas tworzenia lub aktualizowania tej wartości powoduje błąd INVALID_VALUE.

view_through_lookback_window_days

Ustawienie tego atrybutu na wartość spoza dozwolonego zakresu spowoduje błąd RangeError.TOO_LOW lub RangeError.TOO_HIGH. W przypadku większości działań powodujących konwersje dozwolony zakres to 1–30 dni.

Tego atrybutu nie można ustawić w przypadku działań powodujących konwersję typu AD_CALL ani WEBSITE_CALL. Podanie wartości powoduje błąd VALUE_MUST_BE_UNSET.