Pengelolaan konversi

Di Google Ads, konversi adalah tindakan pengguna yang bernilai—seperti membeli produk, mengirimkan formulir prospek, menelepon bisnis Anda, atau mengunjungi toko fisik—yang mengikuti interaksi iklan. Tracking konversi mengukur interaksi pelanggan ini sehingga Anda dapat mengevaluasi performa kampanye dan mengoptimalkan bidding otomatis.

Google Ads API memungkinkan Anda mengonfigurasi tindakan konversi secara terprogram, mengimpor peristiwa konversi offline, meningkatkan atau menyesuaikan konversi yang dicatat, mengelompokkan tindakan ke dalam sasaran bidding dan siklus proses, serta memantau diagnostik upload.

Memilih alur kerja konversi

Gunakan tabel berikut untuk mengidentifikasi ConversionActionType, layanan API, dan panduan penerapan untuk kasus penggunaan Anda:

Tugas Jenis tindakan konversi Layanan atau resource API Panduan penerapan
Memverifikasi penyiapan akun dan membuat tindakan konversi UPLOAD_CLICKS, WEBPAGE, UPLOAD_CALLS, AD_CALL, WEBSITE_CALL, GOOGLE_PLAY_DOWNLOAD, GOOGLE_PLAY_IN_APP_PURCHASE Customer (ConversionTrackingSetting), ConversionActionService Memulai dan Kategori tindakan konversi
Mengimpor konversi klik offline atau konversi yang disempurnakan untuk prospek UPLOAD_CLICKS ConversionUploadService.UploadClickConversions (atau Data Manager API untuk integrasi baru) Mengimpor konversi klik offline
Meningkatkan konversi online (konversi yang disempurnakan untuk web) WEBPAGE ConversionAdjustmentUploadService.UploadConversionAdjustments (ENHANCEMENT) Mengimpor konversi klik online
Mengimpor konversi panggilan telepon UPLOAD_CALLS ConversionUploadService.UploadCallConversions Mengimpor konversi panggilan
Mengimpor transaksi penjualan toko STORE_SALES, STORE_SALES_DIRECT_UPLOAD OfflineUserDataJobService (atau Data Manager API) Mengimpor konversi penjualan toko
Membatalkan atau menyatakan ulang konversi yang dicatat UPLOAD_CLICKS, WEBPAGE, SALESFORCE (tidak digunakan lagi) ConversionAdjustmentUploadService.UploadConversionAdjustments (RETRACTION, RESTATEMENT) Menyesuaikan konversi setelah diimpor
Melampirkan metadata tag kustom ke konversi UPLOAD_CLICKS, UPLOAD_CALLS, WEBPAGE ConversionCustomVariableService Variabel konversi kustom
Mengonfigurasi sasaran bidding, sasaran siklus proses, dan aturan nilai Sasaran akun, kampanye, dan siklus proses CustomerConversionGoalService, CampaignConversionGoalService, CustomConversionGoalService, ConversionGoalCampaignConfigService, GoalService, CampaignGoalConfigService, ConversionValueRuleService Sasaran konversi, Sasaran siklus proses, dan Aturan nilai konversi
Memantau kondisi impor dan diagnostik error UPLOAD_CLICKS, WEBPAGE, UPLOAD_CALLS offline_conversion_upload_client_summary, offline_conversion_upload_conversion_action_summary Memantau diagnostik data offline
Membuat kueri metrik konversi dan memecahkan masalah error Semua jenis konversi GoogleAdsService.SearchStream (customer, campaign, conversion_action) Mengambil statistik konversi dan Memecahkan masalah impor konversi

Siklus proses konversi menyeluruh

Integrasi pengelolaan konversi yang lengkap di Google Ads API mengikuti empat tahap:

  1. Verifikasi penyiapan akun dan buat tindakan konversi: Buat kueri Customer.conversion_tracking_setting untuk mengonfirmasi akun konversi yang efektif (google_ads_conversion_customer), verifikasi bahwa tracking konversi aktif, konfigurasikan izin pengguna, dan buat ConversionAction dengan target ConversionActionType dan ConversionActionCategory.
  2. Mengimpor peristiwa konversi: Alirkan konversi klik atau panggilan offline menggunakan ConversionUploadService dengan partial_failure ditetapkan ke true, lengkapi konversi situs dengan penyesuaian ENHANCEMENT menggunakan ConversionAdjustmentUploadService, atau upload penjualan toko secara massal menggunakan OfflineUserDataJobService.
  3. Sesuaikan dan optimalkan konversi: Batalkan atau nyatakan kembali konversi yang dicatat menggunakan ConversionAdjustmentUploadService, lampirkan metadata ConversionCustomVariable, terapkan aturan nilai konversi, dan atur tindakan ke dalam sasaran konversi dan sasaran siklus proses untuk mengontrol pengoptimalan bidding.
  4. Memantau diagnostik dan melaporkan performa: Buat kueri offline_conversion_upload_client_summary dan offline_conversion_upload_conversion_action_summary untuk memeriksa status pemrosesan upload dan pemberitahuan kegagalan parsial. Buat kueri resource customer atau campaign (secara opsional disegmentasikan menurut segments.conversion_action) untuk membandingkan metrik metrics.conversions dan metrics.all_conversions, atau buat kueri resource conversion_action untuk memeriksa metrics.all_conversions dan stempel waktu konversi terakhir.

Panduan memulai: Memverifikasi penyiapan, membuat tindakan, dan memeriksa kondisi

Contoh berikut menunjukkan tiga kueri dan mutasi paling umum yang diperlukan untuk melakukan inisialisasi dan memantau tracking konversi.

1. Memverifikasi setelan tracking konversi dengan GAQL

Sebelum membuat ConversionAction atau mengupload peristiwa, buat kueri resource customer menggunakan GoogleAdsService.SearchStream untuk menentukan akun mana yang mengelola konversi (google_ads_conversion_customer), apakah persyaratan data pelanggan disetujui, dan apakah konversi yang disempurnakan di tingkat akun diaktifkan (EnhancedConversionsConfig):

SELECT
  customer.conversion_tracking_setting.conversion_tracking_id,
  customer.conversion_tracking_setting.conversion_tracking_status,
  customer.conversion_tracking_setting.cross_account_conversion_tracking_id,
  customer.conversion_tracking_setting.google_ads_conversion_customer,
  customer.conversion_tracking_setting.accepted_customer_data_terms,
  customer.conversion_tracking_setting.enablement_setting,
  customer.conversion_tracking_setting.effective_enablement_setting
FROM customer

Ekstrak {customer_id} dari nama resource customers/{customer_id} yang ditampilkan di google_ads_conversion_customer, dan kirimkan semua permintaan ConversionActionService dan ConversionUploadService berikutnya terhadap ID pelanggan tersebut. Untuk mengetahui detail penyiapan lengkap dan hierarki lintas akun, lihat Memulai.

2. Buat tindakan konversi

Gunakan ConversionActionService.MutateConversionActions untuk membuat ConversionAction. Contoh berikut membuat tindakan konversi UPLOAD_CLICKS dengan setelan nilai kustom dan periode lihat balik:

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

Permintaan REST

Untuk membuat ConversionAction yang sama melalui REST, kirim permintaan POST ke ConversionActionService.MutateConversionActions:

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
        }
      }
    }
  ]
}

Setelah tindakan konversi Anda ENABLED, impor peristiwa konversi atau peningkatan menggunakan alur kerja untuk sumber konversi Anda (lihat Mengimpor peristiwa konversi).

3. Memantau kondisi upload konversi offline

Setelah mengupload konversi klik, konversi panggilan, atau penyesuaian konversi, buat kueri offline_conversion_upload_client_summary untuk memeriksa status tugas secara keseluruhan, rasio keberhasilan dan tertunda, serta perincian error di seluruh upload terbaru Anda:

SELECT
  offline_conversion_upload_client_summary.client,
  offline_conversion_upload_client_summary.status,
  offline_conversion_upload_client_summary.total_event_count,
  offline_conversion_upload_client_summary.successful_event_count,
  offline_conversion_upload_client_summary.success_rate,
  offline_conversion_upload_client_summary.pending_event_count,
  offline_conversion_upload_client_summary.pending_rate,
  offline_conversion_upload_client_summary.last_upload_date_time,
  offline_conversion_upload_client_summary.alerts
FROM offline_conversion_upload_client_summary

Buat kueri offline_conversion_upload_conversion_action_summary untuk diagnostik tingkat tindakan konversi (lihat Memantau diagnostik data offline), dan lihat Memecahkan masalah impor konversi untuk menyelesaikan kode error tertentu.

Direktori panduan berdasarkan tahap siklus proses

Pelajari kumpulan lengkap panduan pengelolaan konversi yang diatur berdasarkan tahap siklus proses:

1. Penyiapan akun dan tindakan konversi

  • Kategori tindakan konversi: Pilih sumber konversi yang tepat—situs (WEBPAGE), panggilan telepon (UPLOAD_CALLS, AD_CALL, WEBSITE_CALL), aplikasi seluler (GOOGLE_PLAY_DOWNLOAD, GOOGLE_PLAY_IN_APP_PURCHASE, Firebase, SKAdNetwork), Google Analytics 4 (GOOGLE_ANALYTICS_4_CUSTOM, GOOGLE_ANALYTICS_4_PURCHASE), offline (UPLOAD_CLICKS), atau toko fisik (STORE_SALES)—dan petakan ke ConversionActionType dan alur kerja API yang sesuai.
  • Memulai: Konfigurasikan izin pengguna, verifikasi ConversionTrackingSetting, siapkan tracking konversi lintas-akun, dan buat tindakan konversi menggunakan library klien atau REST.

2. Mengimpor peristiwa konversi

  • Mengimpor konversi klik offline: Upload konversi offline (GCLID, GBRAID, WBRAID) dan konversi yang disempurnakan untuk lead (email dan nomor telepon pihak pertama yang di-hash) untuk mengukur transaksi di dunia nyata.
  • Mengimpor konversi klik online: Lengkapi tag konversi situs dengan data pengguna pihak pertama—seperti alamat email, nama, alamat rumah, dan nomor telepon—menggunakan konversi yang disempurnakan untuk web (penyesuaian ENHANCEMENT).
  • Impor konversi panggilan: Upload peristiwa konversi untuk panggilan telepon yang dilacak melalui nomor penerusan Google atau sistem tracking panggilan Anda sendiri.
  • Mengimpor konversi penjualan toko: Upload banyak data transaksi dalam toko menggunakan OfflineUserDataJobService.

3. Menyesuaikan dan mengoptimalkan konversi

4. Memantau, melaporkan, dan memecahkan masalah