Bắt đầu

Bạn phải bật tính năng theo dõi lượt chuyển đổi trong tài khoản chuyển đổi Google Ads để ghi lại lượt chuyển đổi. Hướng dẫn này cung cấp thông tin chi tiết về cách xác nhận xem tính năng theo dõi lượt chuyển đổi có được bật hay không, bật tính năng này nếu chưa bật và truy xuất thông tin về các hành động chuyển đổi hiện có.

Hầu hết các hành động chuyển đổi cũng yêu cầu bạn thực hiện thêm các bước để theo dõi. Để biết thêm thông tin về các loại hành động chuyển đổi và yêu cầu của các loại hành động đó, hãy xem bài viết Danh mục hành động chuyển đổi và Tạo hành động chuyển đổi.

Khi nhập lượt chuyển đổi hoặc dữ liệu người dùng, bạn phải xác nhận rằng bạn có quyền chia sẻ dữ liệu lượt chuyển đổi với Google. Bạn có thể làm việc này bằng một trong hai cách:

  1. Định cấu hình chế độ cài đặt mặc định về sự đồng ý ở cấp tài khoản. Trong giao diện người dùng Google Ads, hãy nhấp vào Công cụ > Trình quản lý dữ liệu > Chế độ cài đặt về sự đồng ý > Chế độ cài đặt mặc định về sự đồng ý.
  2. Đặt trường đồng ý trên mỗi lượt chuyển đổi hoặc tải trọng dữ liệu người dùng được nhập (ví dụ: ClickConversion.consent, CallConversion.consent hoặc UserData.consent).

Thiết lập trang web để theo dõi lượt chuyển đổi

Nếu bạn đang theo dõi lượt chuyển đổi trên trang web hoặc triển khai tính năng lượt chuyển đổi nâng cao cho khách hàng tiềm năng, hãy định cấu hình tính năng gắn thẻ trang web trước. Làm theo các bước trong bài viết Định cấu hình thẻ Google cho tính năng lượt chuyển đổi nâng cao cho khách hàng tiềm năng, hoặc sử dụng Trình quản lý thẻ của Google bằng cách làm theo hướng dẫn trong bài viết Định cấu hình Trình quản lý thẻ của Google cho tính năng lượt chuyển đổi nâng cao cho khách hàng tiềm năng.

Bật tính năng theo dõi lượt chuyển đổi trong tài khoản chuyển đổi Google Ads

Hãy làm theo các bước sau để xác minh chế độ thiết lập tính năng theo dõi lượt chuyển đổi của tài khoản và tạo hoặc truy xuất hành động chuyển đổi.

Các bước để bật tính năng theo dõi lượt chuyển đổi

Truy xuất thông tin về chế độ theo dõi lượt chuyển đổi

Bạn có thể kiểm tra chế độ thiết lập tính năng theo dõi lượt chuyển đổi của tài khoản và xác nhận rằng tính năng theo dõi lượt chuyển đổi đã được bật bằng cách truy vấn tài nguyên Customer cho ConversionTrackingSetting. Đưa ra truy vấn sau bằng 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

Trường google_ads_conversion_customer cho biết tài khoản Google Ads tạo và quản lý lượt chuyển đổi cho khách hàng này. Đối với những khách hàng sử dụng tính năng theo dõi lượt chuyển đổi trên nhiều tài khoản, đây là mã nhận dạng của tài khoản người quản lý. Bạn nên cung cấp mã khách hàng chuyển đổi Google Ads dưới dạng customer_id trong các yêu cầu của Google Ads API để tạo và quản lý lượt chuyển đổi. Xin lưu ý rằng trường này được điền sẵn ngay cả khi bạn chưa bật tính năng theo dõi lượt chuyển đổi.

Trường conversion_tracking_status cho biết liệu tính năng theo dõi lượt chuyển đổi có được bật hay không và liệu tài khoản có đang sử dụng tính năng theo dõi lượt chuyển đổi trên nhiều tài khoản hay không.

Tạo hành động chuyển đổi trong khách hàng chuyển đổi của Google Ads

Nếu giá trị conversion_tracking_status là NOT_CONVERSION_TRACKED, thì tính năng theo dõi lượt chuyển đổi chưa được bật cho tài khoản. Bật tính năng theo dõi lượt chuyển đổi bằng cách tạo ít nhất một ConversionAction trong tài khoản chuyển đổi Google Ads, như trong ví dụ sau. Ngoài ra, bạn có thể tạo một hành động chuyển đổi trong giao diện người dùng bằng cách làm theo hướng dẫn trong bài viết trên Trung tâm trợ giúp Google Ads về cách thiết lập tính năng theo dõi lượt chuyển đổi cho loại lượt chuyển đổi mà bạn muốn bật.

Xin lưu ý rằng tính năng lượt chuyển đổi nâng cao sẽ tự động được bật khi được gửi thông qua Google Ads API, nhưng bạn có thể tắt tính năng này thông qua giao diện người dùng Google Ads.

Ví dụ về mã

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

Đảm bảo type được đặt thành giá trị ConversionActionType chính xác. Để được hướng dẫn thêm về cách tạo hành động chuyển đổi trong API Google Ads, hãy xem bài viết Tạo hành động chuyển đổi.

Truy xuất một hành động chuyển đổi hiện có

Bạn có thể truy xuất thông tin chi tiết về một hành động chuyển đổi hiện có bằng cách đưa ra truy vấn sau. Đảm bảo mã khách hàng trong yêu cầu được đặt thành khách hàng chuyển đổi trên Google Ads mà bạn đã xác định trước đó và loại hành động chuyển đổi được đặt thành giá trị ConversionActionType chính xác.

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'

Theo dõi lượt chuyển đổi trên nhiều tài khoản

Tính năng theo dõi lượt chuyển đổi trên nhiều tài khoản cho phép các tài khoản Google Ads nhập lượt chuyển đổi thay mặt cho các tài khoản khác, có thể đã phân phát quảng cáo tạo ra lượt chuyển đổi. Điều này có thể giúp đơn giản hoá việc tích hợp bằng cách cho phép bạn hợp nhất các tài khoản đưa ra yêu cầu nhập.

Bật tính năng theo dõi lượt chuyển đổi trên nhiều tài khoản trong API Google Ads

Bạn có thể sử dụng Google Ads API để chọn sử dụng tính năng theo dõi lượt chuyển đổi trên nhiều tài khoản khi tạo hoặc cập nhật tài khoản khách hàng.

Trên tài nguyên Customer, hãy đặt trường conversion_tracking_setting.google_ads_conversion_customer thành tên tài nguyên của tài khoản người quản lý sẽ quản lý hành động chuyển đổi thay mặt cho tài khoản khách hàng.

Yêu cầu sửa đổi khách hàng chuyển đổi của tài khoản khách hàng phải được gửi bởi tài khoản người quản lý đang trở thành khách hàng chuyển đổi mới cho khách hàng. Để làm việc này, hãy đặt login-customer-id thành mã tài khoản người quản lý.

Khi bạn chọn sử dụng tính năng theo dõi lượt chuyển đổi trên nhiều tài khoản hoặc chuyển đổi người quản lý theo dõi lượt chuyển đổi cho một tài khoản khách hàng hiện có, thì các lưu ý tương tự cũng sẽ áp dụng như khi bạn thực hiện thay đổi này trong giao diện người dùng. Cụ thể:

  • Tài khoản khách hàng sẽ áp dụng các quy tắc về giá trị lượt chuyển đổi mặc định và mục tiêu vòng đời của khách hàng mặc định của người quản lý theo dõi lượt chuyển đổi mới.
  • Những chiến dịch nhắm đến một hành động chuyển đổi cụ thể sẽ chuyển sang sử dụng mục tiêu lượt chuyển đổi mặc định của tài khoản người quản lý lượt chuyển đổi. Nếu bạn tiếp tục nhắm đến một hành động chuyển đổi cụ thể, thì điều đó có thể dẫn đến hành vi không nhất quán, vì tài khoản người quản lý có thể không có cùng mục tiêu với tài khoản khách hàng. Hãy đảm bảo rằng chiến dịch của bạn được tối ưu hoá cho đúng mục tiêu.
  • Nếu một tài khoản thuộc về nhiều tài khoản người quản lý, thì tài khoản đó chỉ có thể sử dụng hành động chuyển đổi của một người quản lý. Nếu bạn không chỉ định tài khoản theo dõi lượt chuyển đổi, thì theo mặc định, tài khoản này sẽ tự sử dụng chính nó làm tài khoản theo dõi lượt chuyển đổi.

Nhập lượt chuyển đổi trên nhiều tài khoản

Khi bật tính năng theo dõi trên nhiều tài khoản, tài khoản khách hàng và tài khoản người quản lý có thể nhập lượt chuyển đổi thay mặt cho tài khoản phân phát quảng cáo. Nhờ đó, bạn có thể đơn giản hoá logic nhập để không cần xác định tài khoản phân phát cho mỗi lượt chuyển đổi tại thời điểm nhập. Bạn chỉ cần chọn một tài khoản trong cây tài khoản để nhập tất cả lượt chuyển đổi.

Để tải lượt chuyển đổi lên thành công, tài khoản tải lên phải có quyền truy cập vào hành động chuyển đổi. Trong hệ thống phân cấp theo dõi trên nhiều tài khoản, tài khoản tải lên có quyền truy cập vào hành động nếu tài khoản đó là tài khoản mẹ (người quản lý) hoặc tài khoản con của chủ sở hữu hành động chuyển đổi trong cây tài khoản.

Sơ đồ sau đây minh hoạ cấu trúc uỷ quyền để nhập lượt chuyển đổi. Trong đó, C1 là tài khoản khách hàng đã phân phát quảng cáo tạo ra lượt chuyển đổi, còn M2 là chủ sở hữu hành động chuyển đổi và là tài khoản mẹ theo dõi lượt chuyển đổi của C1. Các tài khoản được đánh dấu màu xanh lục được phép nhập lượt chuyển đổi thay mặt cho C1, còn các tài khoản được đánh dấu màu đỏ thì không.

Cơ cấu uỷ quyền

Tạo hành động chuyển đổi

Để đo lường lượt chuyển đổi, hãy thiết lập một ConversionAction cho type của hành động chuyển đổi mà bạn muốn theo dõi. Ví dụ: một giao dịch mua hàng trực tuyến và một cuộc gọi điện thoại yêu cầu các hành động chuyển đổi khác nhau.

Cách tốt nhất để thiết lập hành động chuyển đổi mới trong API là sử dụng ví dụ về mã Thêm hành động chuyển đổi. Mẫu này xử lý tất cả các tác vụ xác thực trong nền cho bạn và hướng dẫn bạn tạo ConversionAction.

Hầu hết các hành động chuyển đổi cũng yêu cầu bạn thực hiện thêm các bước để theo dõi. Ví dụ: để theo dõi lượt chuyển đổi trên trang web, bạn phải thêm một đoạn mã (gọi là thẻ) vào trang chuyển đổi trên trang web của mình. Để biết các yêu cầu chi tiết của những loại hành động chuyển đổi khác, hãy xem bài viết về các loại lượt chuyển đổi trên Trung tâm trợ giúp của Google Ads.

Nếu bạn đang sử dụng tính năng theo dõi lượt chuyển đổi trên nhiều tài khoản, thì ConversionActionService sẽ trả về các hành động chuyển đổi sau:

  • Tất cả hành động chuyển đổi do tài khoản người quản lý xác định mà tài khoản này sử dụng để theo dõi lượt chuyển đổi trên nhiều tài khoản
  • Tất cả hành động chuyển đổi mà khách hàng đã tích luỹ số liệu thống kê, bao gồm cả hành động do hệ thống xác định và hành động thuộc quyền sở hữu của người quản lý ngay cả khi người quản lý đó huỷ liên kết sau đó
  • Tất cả hành động mà khách hàng đã xác định trong tài khoản của họ
  • Lượt chuyển đổi trên Analytics được tạo trong các tài sản Google Analytics được liên kết. Chỉ số này bao gồm cả những hành động chuyển đổi trên Analytics chưa được nhập vào Google Ads, có trạng thái là HIDDEN.

Ví dụ về mã

Ví dụ về mã sau đây sẽ hướng dẫn bạn quy trình tạo một hành động chuyển đổi mới. Cụ thể, phương thức này tạo một hành động chuyển đổi có type được đặt thành UPLOAD_CLICKS. Hàm này cũng đặt category thành DEFAULT.

Các chế độ cài đặt mặc định sau đây sẽ áp dụng:

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

Bạn có thể xem ví dụ này trong thư mục Tái tiếp thị của thư viện ứng dụng và trong tập hợp ví dụ về mã: Ví dụ về mã Thêm hành động chuyển đổi.

ConversionActionService.MutateConversionActions tham chiếu trường

Sử dụng MutateConversionActions trên ConversionActionService để tạo, cập nhật hoặc xoá hành động chuyển đổi trong khách hàng chuyển đổi của Google Ads:

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

Bảng sau đây liệt kê các trường yêu cầu và thao tác cấp cao nhất trên MutateConversionActionsRequest:

Trường Yêu cầu Mô tả
customer_id Bắt buộc Mã nhận dạng gồm 10 chữ số (string) của khách hàng chuyển đổi trên Google Ads (google_ads_conversion_customer), không có dấu gạch nối.
partial_failure Không bắt buộc Khi true (bool), các thao tác hợp lệ sẽ được thực thi và các thao tác không thành công sẽ trả về lỗi trong partial_failure_error. Giá trị mặc định là false.
validate_only Không bắt buộc Khi true (bool), xác thực yêu cầu mà không thực thi các đột biến.
response_content_type Không bắt buộc ResponseContentType kiểm soát việc phản hồi chỉ trả về resource_name (RESOURCE_NAME_ONLY, mặc định) hay đối tượng ConversionAction đã thay đổi (MUTABLE_RESOURCE).
operations[].create Bắt buộc (khi tạo) Tài nguyên ConversionAction cần tạo. Dự kiến không có resource_name.
operations[].update Bắt buộc (khi cập nhật) Tài nguyên ConversionAction cần cập nhật (phải bao gồm resource_name và update_mask đồng cấp trên ConversionActionOperation).
operations[].update_mask Bắt buộc (khi cập nhật) FieldMask (danh sách được phân tách bằng dấu phẩy gồm các đường dẫn trường ConversionAction đã sửa đổi trong snake_case; REST JSON updateMask chấp nhận snake_case hoặc camelCase, trong khi gRPC và thư viện ứng dụng yêu cầu snake_case) trên ConversionActionOperation (đồng cấp với update, không lồng trong ConversionAction).
operations[].remove Bắt buộc (khi xoá) Tên tài nguyên (customers/{customer_id}/conversionActions/{action_id}) của hành động chuyển đổi cần xoá.

Khi định cấu hình ConversionAction trong operations[].create hoặc operations[].update, hãy tuân thủ các yêu cầu về trường và quy tắc ràng buộc về khả năng biến đổi sau đây (xem phần Xác thực để biết các quy tắc về lỗi theo loại):

ConversionAction trường Yêu cầu và khả năng biến đổi Mô tả
name Bắt buộc (có thể thay đổi) Tên hiển thị riêng biệt (string) trong tài khoản khách hàng chuyển đổi.
type Bắt buộc vào create (IMMUTABLE) ConversionActionType (chẳng hạn như WEBPAGE, UPLOAD_CLICKS, UPLOAD_CALLS, AD_CALL hoặc WEBSITE_CALL).
category Không bắt buộc (có thể thay đổi) ConversionActionCategory (chẳng hạn như DEFAULT, PURCHASE, SUBMIT_LEAD_FORM, SIGNUP hoặc PHONE_CALL_LEAD). Giá trị mặc định là DEFAULT.
status Không bắt buộc (có thể thay đổi) ConversionActionStatus (ENABLED, REMOVED hoặc HIDDEN). Giá trị mặc định là ENABLED.
primary_for_goal Không bắt buộc (có thể thay đổi) bool kiểm soát việc hành động có thể đặt giá thầu trong các mục tiêu lượt chuyển đổi chuẩn của khách hàng và chiến dịch hay không (lưu ý: tài nguyên CustomConversionGoal bỏ qua chế độ cài đặt này). Mặc định là true.
counting_type Không bắt buộc (có thể thay đổi) ConversionActionCountingType (MANY_PER_CLICK mặc định hoặc ONE_PER_CLICK).
value_settings Không bắt buộc (có thể thay đổi) ValueSettings (default_value, default_currency_code, always_use_default_value).
attribution_model_settings Không bắt buộc (có thể thay đổi) AttributionModelSettings (attribution_model: GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN mặc định hoặc GOOGLE_ADS_LAST_CLICK).
click_through_lookback_window_days Không bắt buộc (có thể thay đổi) Giai đoạn xem lại lượt nhấp qua int64 tính theo ngày (1 đến 90 đối với hầu hết các loại; 1 đến 60 đối với các loại cuộc gọi).
view_through_lookback_window_days Không bắt buộc (có thể thay đổi) int64 giai đoạn xem lại lượt xem hết tính bằng ngày (1 đến 30 đối với hầu hết các loại; không đặt đối với loại cuộc gọi).
phone_call_duration_seconds Chỉ các loại cuộc gọi (có thể thay đổi) Thời lượng cuộc gọi tối thiểu của int64 tính bằng giây (0 đến 10000).
app_id Chỉ các loại ứng dụng (không thể thay đổi sau khi tạo) Giá trị nhận dạng ứng dụng di động (string); chỉ có thể đặt trên create cho hành động chuyển đổi đối với ứng dụng.
include_in_conversions_metric Chỉ có thể đọc trong các đột biến Không thể sửa đổi trực tiếp; hãy định cấu hình primary_for_goal.
tag_snippets[] OUTPUT_ONLY Đoạn mã theo dõi trang web (TagSnippet) được điền sẵn trên WEBPAGE hành động chuyển đổi.

Cấu trúc yêu cầu và phản hồi REST

Để tạo hoặc cập nhật ConversionAction qua REST, hãy gửi yêu cầu POST đến ConversionActionService.MutateConversionActions. Khi cập nhật một hành động chuyển đổi hiện có, hãy chỉ định updateMask trên đối tượng thao tác dưới dạng thành phần đồng cấp của 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
        }
      }
    }
  ]
}

Phản hồi thành công sẽ trả về các mục MutateConversionActionResult trong results[]:

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

Kiểm tra chế độ cài đặt hành động chuyển đổi và đoạn mã thẻ bằng GAQL

Ngoài truy vấn cơ bản trong phần Các bước để bật tính năng theo dõi lượt chuyển đổi, bạn có thể truy vấn tài nguyên conversion_action bằng GoogleAdsService.SearchStream để kiểm tra primary_for_goal, trạng thái mô hình phân bổ, giai đoạn xem lại, chế độ cài đặt giá trị và tag_snippets của trang web:

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'

Xác nhận kết quả

Google Ads và API Google Ads hỗ trợ nhiều loại hành động chuyển đổi, vì vậy, một số quy tắc xác thực sẽ thay đổi tuỳ theo type của hành động.

Lỗi phổ biến nhất khi tạo hành động chuyển đổi là DUPLICATE_NAME. Hãy đảm bảo bạn đang sử dụng tên riêng biệt cho mỗi hành động chuyển đổi.

Sau đây là một số mẹo giúp bạn đặt các trường ConversionAction:

Tất cả các trường enum
Nếu bạn cố gắng đặt bất kỳ trường enum nào thành UNKNOWN, thì sẽ xảy ra lỗi RequestError.INVALID_ENUM_VALUE.
app_id
Thuộc tính app_id không thể thay đổi và chỉ có thể được đặt khi tạo một lượt chuyển đổi ứng dụng mới.
attribution_model_settings
Nếu bạn đặt giá trị này thành một lựa chọn không dùng nữa, thì lỗi CANNOT_SET_RULE_BASED_ATTRIBUTION_MODELS sẽ xảy ra. Google Ads chỉ hỗ trợ GOOGLE_ADS_LAST_CLICK và GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN.
click_through_lookback_window_days

Việc đặt thuộc tính này thành một giá trị nằm ngoài phạm vi cho phép sẽ dẫn đến lỗi RangeError.TOO_LOW hoặc RangeError.TOO_HIGH.

Thuộc tính này phải nằm trong khoảng từ 1 đến 60 ngày đối với hành động chuyển đổi AD_CALL hoặc WEBSITE_CALL. Đối với hầu hết các hành động chuyển đổi khác, phạm vi cho phép là từ 1 đến 90 ngày.

include_in_conversions_metric

Việc đặt giá trị này trong thao tác create hoặc update sẽ không thành công và xảy ra lỗi FieldError.IMMUTABLE_FIELD. Thay vào đó, hãy đặt primary_for_goal như mô tả trong Hướng dẫn về mục tiêu lượt chuyển đổi.

phone_call_duration_seconds

Nếu bạn cố gắng đặt thuộc tính này cho một hành động chuyển đổi không phải là cuộc gọi, thì hệ thống sẽ báo lỗi FieldError.VALUE_MUST_BE_UNSET.

type

Thuộc tính type không thể thay đổi và chỉ có thể được đặt khi tạo một lượt chuyển đổi mới.

Việc cập nhật một hành động chuyển đổi có type bằng UNKNOWN sẽ dẫn đến lỗi MutateError.MUTATE_NOT_ALLOWED.

value_settings

value_settings cho hành động chuyển đổi WEBSITE_CALL hoặc AD_CALL phải có always_use_default_value được đặt thành true. Việc chỉ định giá trị false khi tạo hoặc cập nhật giá trị này sẽ dẫn đến lỗi INVALID_VALUE.

view_through_lookback_window_days

Việc đặt thuộc tính này thành một giá trị nằm ngoài phạm vi cho phép sẽ dẫn đến lỗi RangeError.TOO_LOW hoặc RangeError.TOO_HIGH. Đối với hầu hết các hành động chuyển đổi, phạm vi cho phép là từ 1 đến 30 ngày.

Bạn không thể đặt thuộc tính này cho hành động chuyển đổi AD_CALL hoặc WEBSITE_CALL. Việc chỉ định một giá trị sẽ dẫn đến lỗi VALUE_MUST_BE_UNSET.