Buat Tindakan Konversi

Panduan ini berisi daftar berbagai jenis tindakan konversi yang dapat Anda buat menggunakan Google Ads API, informasi tentang cara tindakan konversi tersebut dipetakan ke antarmuka web Google Ads, dan contoh kode mendetail yang menunjukkan cara membuat tindakan konversi baru.

Untuk mengukur konversi, siapkan ConversionAction untuk type tindakan konversi yang ingin Anda lacak. Misalnya, pembelian online dan panggilan telepon memerlukan tindakan konversi yang berbeda.

Cara terbaik untuk menyiapkan tindakan konversi baru di API adalah menggunakan contoh kode Menambahkan Tindakan Konversi di bawah ini. Contoh ini menangani semua tugas autentikasi latar belakang untuk Anda, dan memandu Anda dalam membuat ConversionAction.

Sebagian besar tindakan konversi juga memerlukan langkah tambahan dari Anda untuk melacaknya. Misalnya, untuk melacak konversi di situs, Anda harus menambahkan cuplikan kode yang disebut tag ke halaman konversi di situs. Untuk persyaratan tindakan konversi lainnya, lihat artikel Pusat Bantuan kami.

Konversi situs

Konversi situs memungkinkan Anda melacak tindakan situs seperti penjualan online, klik link, penayangan halaman, dan pendaftaran.

Untuk melacak konversi di situs, Anda harus membuat ConversionAction dengan ConversionActionType ditetapkan ke WEBPAGE, dan menambahkan cuplikan kode yang disebut tag ke halaman konversi di situs Anda.

ConversionAction mencakup beberapa jenis konversi situs, yang dibedakan dalam API berdasarkan kolom type di setiap TagSnippet yang tercantum di kolom tag_snippets dari ConversionAction.

TagSnippet memberikan kode pelacakan yang harus disertakan dalam situs Anda untuk melacak tindakan konversi. Konversi situs dan Klik nomor telepon memerlukan event_snippet, yang harus ditempatkan di halaman web yang menunjukkan tindakan konversi seperti konfirmasi checkout atau halaman pengiriman formulir prospek, dan global_site_tag, yang harus diinstal di setiap halaman situs Anda. Anda dapat mengambil kedua atribut ini dengan ConversionActionService. Lihat Pusat Bantuan kami untuk mengetahui informasi lebih lanjut tentang cara memberi tag pada halaman.

Tabel berikut menunjukkan parameter API yang setara yang akan digunakan untuk setiap Sumber di antarmuka web Google Ads:

Jenis Kode Pelacakan Sumber Google Ads
WEBPAGE Situs, Situs (Google Analytics (GA4))
WEBPAGE_ONCLICK Situs, Situs (Google Analytics (GA4))
CLICK_TO_CALL Klik nomor telepon
--- Situs (Google Analytics (UA))

Konversi aplikasi

Konversi aplikasi memungkinkan Anda melacak penginstalan aplikasi seluler atau pembelian dalam aplikasi dari Google Play Store.

Tabel berikut menunjukkan parameter API ConversionActionType yang setara yang akan digunakan untuk setiap Sumber di antarmuka web Google Ads:

Jenis Tindakan Konversi Sumber Google Ads
GOOGLE_PLAY_DOWNLOAD Google Play > Penginstalan
GOOGLE_PLAY_IN_APP_PURCHASE Google Play > Pembelian dalam aplikasi

Jika Anda ingin melacak tindakan aplikasi seluler lainnya menggunakan properti Google Analytics 4 atau analisis aplikasi pihak ketiga. Lihat Jenis Tindakan Konversi Tambahan.

Konversi panggilan telepon

Tracking konversi panggilan telepon memungkinkan Anda melacak panggilan dari iklan, panggilan ke nomor di situs Anda, dan klik nomor di situs seluler.

Tabel berikut menunjukkan parameter API ConversionActionType yang setara yang akan digunakan untuk setiap Sumber di antarmuka web Google Ads:

Jenis Tindakan Konversi Sumber Google Ads
AD_CALL Panggilan telepon dari iklan yang menggunakan ekstensi panggilan atau iklan khusus panggilan telepon
WEBSITE_CALL Panggilan ke nomor telepon di situs Anda
CLICK_TO_CALL Klik pada nomor telepon di situs seluler Anda

Jenis CLICK_TO_CALL berbeda dengan jenis AD_CALL karena tidak melacak panggilan telepon yang sebenarnya. Sebaliknya, CLICK_TO_CALL hanya melacak klik pada nomor telepon dari perangkat seluler. Ini berguna saat Anda tidak dapat menggunakan nomor penerusan Google untuk melacak panggilan telepon.

AD_CALL

Tindakan konversi AD_CALL muncul sebagai konversi Panggilan telepon dari iklan di antarmuka web Google Ads. Setelah membuat tindakan konversi AD_CALL, tentukan nama resource-nya di kolom call_conversion_action saat Anda membuat CallAsset. Aset panggilan memungkinkan Anda menampilkan nomor telepon langsung di iklan Anda.

Panggilan dilaporkan sebagai konversi jika berlangsung lebih lama dari durasi yang ditentukan. Defaultnya adalah 60 detik.

WEBSITE_CALL

Tindakan konversi WEBSITE_CALL muncul sebagai konversi Panggilan dari situs di antarmuka web Google Ads.

Tidak seperti AD_CALL, pelacak ini mengharuskan penambahan event_snippet dan global_site_tag ke situs Anda guna mengambil nomor penerusan Google dinamis untuk pelacakan panggilan di nomor yang tercantum di situs Anda. Selain itu, Anda harus menyiapkan aset panggilan dan menautkannya di tingkat pelanggan, kampanye, atau grup iklan.

Mengimpor konversi offline

Tabel berikut menunjukkan parameter API ConversionActionType yang setara yang akan digunakan untuk setiap Sumber di antarmuka web Google Ads dan link ke dokumentasi untuk setiap jenis tindakan konversi tertentu:

Jenis Tindakan Konversi Sumber Google Ads Panduan Penyiapan API
UPLOAD_CLICKS Melacak konversi dari klik dan konversi yang disempurnakan untuk prospek Panduan Klik Upload
Panduan Konversi yang Disempurnakan untuk Prospek
UPLOAD_CALLS Lacak konversi dari panggilan telepon Panduan Penyiapan API
STORE_SALES Melacak konversi penjualan toko Panduan Penyiapan API

Konversi yang disempurnakan untuk web

Konversi yang disempurnakan untuk web memungkinkan Anda mengirim data konversi pihak pertama untuk WEBPAGE tindakan konversi dalam waktu 24 jam sejak peristiwa konversi, bukan pada waktu yang sama. Hal ini memungkinkan untuk menemukan data pihak pertama dari berbagai sumber, seperti database pelanggan atau sistem CRM.

Jenis tindakan konversi tambahan

Google Ads API menyediakan jenis tindakan konversi tambahan dalam laporan, tetapi dapat membatasi atau melarang pembuatan atau perubahan tindakan tersebut.

Konversi SKAdNetwork

Jika Anda menjalankan kampanye Aplikasi iOS dan telah menerapkan SKAdNetwork, Anda dapat mengakses data SKAdNetwork yang diberikan kepada Google di tingkat Customer dan Campaign menggunakan referensi berikut:

Kolom laporan Deskripsi
metrics.sk_ad_network_installs Jumlah penginstalan yang dilaporkan oleh Apple. Metrik ini hanya dapat disegmentasikan berdasarkan kombinasi segments.sk_ad_network_conversion_value dan segmen terkait tanggal.
metrics.sk_ad_network_total_conversions Total jumlah konversi, termasuk penginstalan dan jenis konversi lainnya yang dilaporkan oleh Apple. Metrik ini hanya dapat disegmentasikan berdasarkan segmen terkait SKAdNetwork dan segmen terkait tanggal.
segments.sk_ad_network_ad_event_type Jenis peristiwa yang terjadi untuk konversi tertentu.
segments.sk_ad_network_attribution_credit Cara atribusi dikreditkan untuk konversi tertentu.
segments.sk_ad_network_fine_conversion_value

Nilai konversi yang dilaporkan oleh Apple. Segmen ini tidak dapat diterapkan ke metrik apa pun selain metrics.sk_ad_network_installs, metrics.sk_ad_network_total_conversions, dan hanya dapat digabungkan dengan segmen terkait tanggal.

Nilai 0 ditampilkan jika Apple melaporkan nilai 0 dan tidak ada nilai jika sebaliknya. Periksa keberadaan kolom untuk membedakan antara kedua kasus.

segments.sk_ad_network_coarse_conversion_value Nilai umum untuk setiap konversi.
segments.sk_ad_network_postback_sequence_index Posisi postback, secara berurutan, untuk konversi tertentu.
segments.sk_ad_network_source_app.sk_ad_network_source_app_id ID aplikasi tempat iklan yang mendorong penginstalan Jaringan Iklan iOS Store Kit ditampilkan.
segments.sk_ad_network_source_domain Situs tempat iklan yang mendorong penginstalan Jaringan Iklan iOS Store Kit ditampilkan. Nilai null berarti segmen ini tidak berlaku — misalnya, kampanye non-iOS — atau tidak ada di postback mana pun yang dikirim oleh Apple.
segments.sk_ad_network_source_type Jenis sumber tempat iklan yang mendorong penginstalan Jaringan Iklan iOS Store Kit ditampilkan. Nilai null berarti segmen ini tidak berlaku, misalnya kampanye non-iOS, atau tidak ada domain sumber maupun aplikasi sumber di postback apa pun yang dikirim oleh Apple.
segments.sk_ad_network_user_type Jenis pengguna yang menghasilkan konversi tertentu.
segments.sk_ad_network_redistributed_fine_conversion_value Nilai konversi dalam segmen ini mencakup nilai null yang didistribusikan ulang ke nilai konversi. Segmen ini merepresentasikan jumlah nilai konversi terbaik yang diamati oleh Apple dan model nilai null dari Google.

Anda juga dapat menyimpan pemetaan nilai konversi SKAdNetwork untuk pelanggan tertaut tertentu dengan aplikasi iOS melalui CustomerSkAdNetworkConversionValueSchema.

Contoh kode Python

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

import argparse
import sys

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

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

    Also handles errors from the API and prints them.

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

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

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

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

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

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

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

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

    req.operation = operation
    req.customer_id = customer_id

    res = skan_service.mutate_customer_sk_ad_network_conversion_value_schema(
        req
    )
    return res

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

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

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

Google Analytics

Konversi dari properti Google Analytics tertaut memiliki salah satu nilai type berikut:

  • Konversi properti GA4:

    • GOOGLE_ANALYTICS_4_CUSTOM
    • GOOGLE_ANALYTICS_4_PURCHASE

    Anda juga dapat mengambil ID properti, nama properti, dan nama peristiwa GA4 dari kolom google_analytics_4_settings.

  • Konversi properti Universal Analytics:

    • UNIVERSAL_ANALYTICS_GOAL
    • UNIVERSAL_ANALYTICS_TRANSACTION

Anda dapat melakukan perubahan berikut pada konversi properti GA4:

  • Impor konversi dari properti GA4 ke akun Google Ads Anda dengan mengubah kolom status dari HIDDEN menjadi ENABLED.
  • Ubah kolom primary_for_goal dan category untuk menunjukkan pengaruhnya terhadap bidding dan laporan Google Ads.
  • Update name atau value_settings.
  • Hapus konversi dari akun Google Ads Anda menggunakan operasi remove.

Setiap upaya untuk mengubah atribut lain dari konversi GA4 yang diimpor atau salah satu atribut dari konversi Universal Analytics yang diimpor akan menghasilkan error MUTATE_NOT_ALLOWED. Anda hanya dapat membuat perubahan tersebut menggunakan UI Google Ads.

Firebase dan analisis aplikasi pihak ketiga

Untuk mengimpor analisis aplikasi pihak ketiga atau konversi Firebase, ubah status ConversionAction dari HIDDEN menjadi ENABLED menggunakan metode mutate dari ConversionActionService. Memperbarui app_id tidak didukung untuk tindakan konversi ini.

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

Penjualan toko

Meskipun Anda tidak dapat membuat tindakan konversi STORE_SALES atau STORE_SALES_DIRECT_UPLOAD menggunakan Google Ads API, API ini mendukung upload transaksi penjualan toko.

  • STORE_SALES
  • STORE_SALES_DIRECT_UPLOAD

Lain-lain

Jenis tindakan konversi berikut bersifat hanya baca di Google Ads API dan disediakan untuk tujuan pelaporan.

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

Tidak dikenal

Jika akun Google Ads Anda menyertakan jenis tindakan konversi lainnya, Anda mungkin menemukan bahwa kueri dan laporan menampilkan tindakan konversi dengan ConversionAction.type adalah UNKNOWN. API tidak mendukung pengelolaan tindakan konversi ini, tetapi menampilkannya dalam laporan guna memberikan hasil lengkap untuk metrik konversi utama seperti metrics.conversions dan metrics.conversions_value.

Contoh kode

Contoh kode berikut akan memandu Anda dalam proses pembuatan tindakan konversi baru. Secara khusus, cara ini membuat tindakan konversi dengan type yang ditetapkan ke UPLOAD_CLICKS. Proses ini sama dengan alur UI Google Ads saat membuat tindakan konversi baru menggunakan Impor > Impor manual menggunakan API atau upload > Lacak konversi dari klik. Tindakan ini juga menetapkan category ke DEFAULT.

Setelan default berikut berlaku:

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.V17.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, customer_id):
    conversion_action_service = client.get_service("ConversionActionService")

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

    # Create conversion action.
    conversion_action = conversion_action_operation.create

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

    # Create a value settings object.
    value_settings = conversion_action.value_settings
    value_settings.default_value = 15.0
    value_settings.always_use_default_value = True

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

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

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

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

Contoh ini juga dapat ditemukan di folder Pemasaran Ulang pada library klien Anda dan dalam kumpulan contoh kode: Contoh kode Tindakan Konversi.

Validasi

Google Ads dan Google Ads API mendukung berbagai tindakan konversi, sehingga beberapa aturan validasi bervariasi berdasarkan tindakan type.

Sejauh ini, error yang paling umum saat membuat tindakan konversi adalah DUPLICATE_NAME. Pastikan Anda menggunakan nama unik untuk setiap tindakan konversi.

Berikut adalah beberapa tips tentang cara menetapkan kolom ConversionAction:

Semua kolom enum
Mencoba menetapkan kolom enum ke UNKNOWN akan menyebabkan error RequestError.INVALID_ENUM_VALUE.
app_id
Atribut app_id tidak dapat diubah dan hanya dapat ditetapkan saat membuat konversi aplikasi baru.
attribution_model_settings
Menyetel ini ke opsi yang tidak digunakan lagi akan menghasilkan error CANNOT_SET_RULE_BASED_ATTRIBUTION_MODELS. Google Ads hanya mendukung GOOGLE_ADS_LAST_CLICK dan GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN.
click_through_lookback_window_days

Menetapkan atribut ini ke nilai di luar rentang yang diizinkan akan menyebabkan error RangeError.TOO_LOW atau RangeError.TOO_HIGH.

Atribut ini harus berada dalam rentang [1,60] untuk tindakan konversi AD_CALL atau WEBSITE_CALL. Untuk sebagian besar tindakan konversi lainnya, rentang yang diizinkan adalah [1,30].

include_in_conversions_metric

Menetapkan nilai ini dalam operasi create atau update akan gagal dengan error FieldError.IMMUTABLE_FIELD. Sebagai gantinya, tetapkan primary_for_goal seperti yang dijelaskan dalam Panduan sasaran konversi.

phone_call_duration_seconds

Mencoba menetapkan atribut ini pada tindakan konversi yang bukan untuk panggilan akan menyebabkan error FieldError.VALUE_MUST_BE_UNSET.

type

Atribut type tidak dapat diubah dan hanya dapat ditetapkan saat membuat konversi baru.

Memperbarui tindakan konversi dengan type sama dengan UNKNOWN akan menghasilkan error MutateError.MUTATE_NOT_ALLOWED.

value_settings

value_settings untuk tindakan konversi WEBSITE_CALL atau AD_CALL harus menetapkan always_use_default_value ke true. Menentukan nilai false saat membuat atau memperbarui nilai ini akan menghasilkan error INVALID_VALUE.

view_through_lookback_window_days

Menetapkan atribut ini ke nilai di luar rentang yang diizinkan akan menyebabkan error RangeError.TOO_LOW atau RangeError.TOO_HIGH. Untuk sebagian besar tindakan konversi, rentang yang diizinkan adalah [1,30].

Atribut ini tidak dapat ditetapkan pada tindakan konversi AD_CALL atau WEBSITE_CALL. Menentukan nilai akan menghasilkan error VALUE_MUST_BE_UNSET.