شروع به کار

برای ثبت تبدیل‌ها، باید ردیابی تبدیل را در حساب تبدیل Google Ads خود فعال کنید. این راهنما جزئیاتی درباره نحوه تأیید اینکه آیا ردیابی تبدیل فعال است یا نه، فعال کردن آن درصورت فعال نبودن، و بازیابی اطلاعات درباره کنش‌های تبدیل موجود ارائه می‌دهد.

بیشتر کنش‌های تبدیل برای ردیابی به مراحل اضافی ازطرف شما نیز نیاز دارند. برای اطلاعات بیشتر درباره انواع مختلف کنش تبدیل و الزامات آن‌ها، به دسته‌های کنش تبدیل و ایجاد کنش‌های تبدیل مراجعه کنید.

هنگام وارد کردن تبدیل‌ها یا داده‌های کاربر، باید تأیید کنید که اجازه هم‌رسانی داده‌های تبدیل با Google را دارید. این کار را می‌توانید به یکی از دو روش زیر انجام دهید:

  1. تنظیمات رضایت پیش‌فرض سطح حساب را پیکربندی کنید. در رابط کاربری Google Ads، روی ابزارها > مدیر داده > تنظیمات رضایت > تنظیمات رضایت پیش‌فرض کلیک کنید.
  2. فیلد رضایت را در هر بار داده کاربر یا تبدیل واردشده تنظیم کنید (برای مثال، ClickConversion.consent، CallConversion.consent، یا UserData.consent).

وب‌سایتتان را برای ردیابی تبدیل‌ها راه‌اندازی کنید

اگر تبدیل‌های وب‌سایت را ردیابی می‌کنید یا تبدیل‌های بهبودیافته را برای مشتریان بالقوه پیاده‌سازی می‌کنید، ابتدا برچسب‌گذاری وب‌سایتتان را پیکربندی کنید. مراحل موجود در پیکربندی برچسب Google برای تبدیل‌های بهبودیافته برای مشتریان بالقوه را دنبال کنید، یا با دنبال کردن پیکربندی Google Tag Manager برای تبدیل‌های بهبودیافته برای مشتریان بالقوه از Google Tag Manager استفاده کنید.

فعال کردن ردیابی تبدیل در حساب تبدیل Google Ads

برای درستی‌سنجی راه‌اندازی «ردیابی تبدیل» حسابتان و ایجاد یا بازیابی کنش‌های تبدیل، این مراحل را دنبال کنید.

مراحل فعال کردن ردیابی تبدیل

بازیابی اطلاعات مربوط به راه‌اندازی ردیابی تبدیل

می‌توانید راه‌اندازی «ردگیری تبدیل» حسابتان را بررسی کنید و با پُرسمان کردن منبع Customer برای ConversionTrackingSetting، تأیید کنید که «ردگیری تبدیل» فعال است. پُرسمان زیر را با 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

فیلد google_ads_conversion_customer نشان‌دهنده حساب Google Ads است که تبدیل‌ها را برای این مشتری ایجاد و مدیریت می‌کند. برای مشتریانی که از ردگیری تبدیل میان‌حسابی استفاده می‌کنند، این شناسه حساب مدیر است. شناسه مشتری تبدیل Google Ads باید به‌عنوان customer_id در درخواست‌های Google Ads API برای ایجاد و مدیریت تبدیل‌ها ارائه شود. توجه داشته باشید که این فیلد حتی اگر پایش تبدیل فعال نباشد پر می‌شود.

فیلد conversion_tracking_status نشان می‌دهد که آیا «ردیابی تبدیل» فعال است و آیا حساب از «ردیابی تبدیل میان‌حسابی» استفاده می‌کند یا نه.

ایجاد کنش تبدیل در مشتری تبدیل Google Ads

اگر مقدار conversion_tracking_status NOT_CONVERSION_TRACKED باشد، پیگیری تبدیل برای حساب فعال نیست. پایش تبدیل را با ایجاد حداقل یک ConversionAction در حساب تبدیل Google Ads فعال کنید، مانند مثال زیر. یا می‌توانید با دنبال کردن دستورالعمل‌های موجود در مقاله «مرکز راهنمایی Google Ads» درباره راه‌اندازی پایش تبدیل برای نوع تبدیلی که می‌خواهید فعال کنید، کنش تبدیلی را در «میانای کاربری» ایجاد کنید.

توجه داشته باشید که تبدیل‌های بهبودیافته وقتی ازطریق Google Ads API ارسال می‌شوند به‌طور خودکار فعال می‌شوند، اما می‌توان آن‌ها را ازطریق واسط کاربری Google Ads غیرفعال کرد.

نمونه کد

جاوا

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
      

پرل

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

فر کردن

مطمئن شوید type روی مقدار ConversionActionType صحیح تنظیم شده باشد. برای راهنمایی بیشتر درباره ایجاد کنش‌های تبدیل در «میانای برنامه‌سازی کاربردی Google Ads»، ایجاد کنش‌های تبدیل را ببینید.

بازیابی کنش تبدیل موجود

با صدور پرسمان زیر می‌توانید جزئیات کنش تبدیل موجود را بازیابی کنید. مطمئن شوید شناسه مشتری در درخواست روی مشتری تبدیل Google Ads که قبلاً شناسایی کرده‌اید تنظیم شده باشد و نوع کنش تبدیل روی مقدار صحیح 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'

ردگیری تبدیل میان‌حسابی

ردگیری تبدیل میان‌حسابی به حساب‌های Google Ads اجازه می‌دهد تبدیل‌ها را ازطرف حساب‌های دیگر وارد کنند، که ممکن است آگهی‌هایی را که تبدیل ایجاد کرده‌اند ترافیک‌دهی کرده باشند. این کار می‌تواند به ساده‌سازی ادغام شما کمک کند، زیرا به شما اجازه می‌دهد حساب‌هایی را که درخواست‌های وارد کردن را ایجاد می‌کنند، ادغام کنید.

فعال کردن ردگیری تبدیل میان‌حسابی در Google Ads API

می‌توانید از Google Ads API برای انتخاب ردگیری تبدیل متقاطع هنگام ایجاد یا به‌روزرسانی حساب‌های مشتری استفاده کنید.

در منبع Customer، فیلد conversion_tracking_setting.google_ads_conversion_customer را روی نام منبع حساب مدیری که باید کنش‌های تبدیل را ازطرف حساب مشتری مدیریت کند تنظیم کنید.

درخواست‌هایی که مشتری تبدیل حساب مشتری را تغییر می‌دهند باید توسط حساب مدیری که مشتری تبدیل جدید برای مشتری می‌شود ارسال شوند. این کار را با تنظیم login-customer-id روی شناسه حساب مدیر انجام دهید.

وقتی با پیگیری تبدیل بین‌حسابی موافقت می‌کنید، یا مدیر پیگیری تبدیل را برای حساب مشتری موجود تغییر می‌دهید، همان هشدارهایی اعمال می‌شود که اگر این تغییر را در واسط کاربر انجام می‌دادید. به‌طور دقیق:

  • حساب مشتری قوانین ارزش تبدیل پیش‌فرض و اهداف چرخه حیات مشتری پیش‌فرض مدیر ردیابی تبدیل جدیدش را اتخاذ خواهد کرد.
  • پویش‌هایی که کنش تبدیل خاصی را هدف‌یابی می‌کنند به استفاده از هدف‌های تبدیل پیش‌فرض حساب مدیر تبدیل تغییر خواهند کرد. اگر همچنان کنش تبدیل خاصی را هدف‌یابی کنید، این کار می‌تواند منجر به عملکرد ناسازگار شود، زیرا حساب مدیر ممکن است هدف‌های یکسانی با حساب مشتری نداشته باشد. مطمئن شوید که پویش‌هایتان برای اهداف درست بهینه‌سازی شده‌اند.
  • اگر حسابی به بیش‌از یک حساب مدیر تعلق داشته باشد، فقط می‌تواند از کنش‌های تبدیل یک مدیر استفاده کند. اگر حساب ردیابی تبدیلی مشخص نشده باشد، حساب به‌طور پیش‌فرض از خودش به‌عنوان حساب ردیابی تبدیل استفاده می‌کند.

وارد کردن تبدیل‌ها در سراسر حساب‌ها

با فعال کردن ردگیری میان‌حسابی، حساب‌های مشتری و مدیر می‌توانند تبدیل‌ها را ازطرف حساب ارائه‌دهنده وارد کنند. این کار باعث می‌شود بتوانید منطق وارد کردن را ساده کنید تا لازم نباشد حساب ارائه‌دهنده را برای هر تبدیل در زمان وارد کردن تعیین کنید، بلکه می‌توانید فقط یک حساب را از درخت حساب خود برای وارد کردن همه تبدیل‌ها انتخاب کنید.

برای بارگذاری موفقیت‌آمیز تبدیل، حساب بارگذاری‌کننده باید به کنش تبدیل دسترسی داشته باشد. در سلسله‌مراتب ردیابی بین‌حسابی، حساب بارگذاری‌کننده اگر والد (مدیر) یا نواده مالک کنش تبدیل در درخت حساب باشد، به کنش دسترسی دارد.

نمودار زیر ساختار مجوز را برای وارد کردن تبدیل‌ها نشان می‌دهد. در اینجا C1 حساب مشتری است که آگهی تولیدکننده تبدیل را ارائه کرده است، و M2 مالک کنش تبدیل و والد ردگیری تبدیل C1 است. حساب‌هایی که با رنگ سبز مشخص شده‌اند مجازند تبدیل‌ها را ازطرف C1 وارد کنند، اما حساب‌هایی که با رنگ قرمز مشخص شده‌اند مجاز نیستند.

ساختار مجوز

ایجاد کنش‌های تبدیل

برای اندازه‌گیری تبدیل‌ها، ConversionAction را برای type کنش تبدیلی که می‌خواهید ردیابی کنید راه‌اندازی کنید. برای مثال، خرید آنلاین و تماس تلفنی به کنش‌های تبدیل متفاوتی نیاز دارند.

بهترین راه برای راه‌اندازی کنش‌های تبدیل جدید در میانای برنامه‌سازی کاربردی، استفاده از نمونه کد «افزودن کنش تبدیل» است. این نمونه همه کارهای اصالت‌سنجی پس‌زمینه را برای شما انجام می‌دهد و شما را در ایجاد ConversionAction راهنمایی می‌کند.

بیشتر کنش‌های تبدیل برای پیگیری آن‌ها به مراحل اضافی ازطرف شما نیاز دارند. برای مثال، برای پیگیری تبدیل‌ها در وب‌سایتتان، باید تکه‌کدی به نام برچسب را به صفحه تبدیل در وب‌سایتتان اضافه کنید. برای الزامات دقیق انواع دیگر کنش‌های تبدیل، به مقاله «مرکز راهنمایی Google Ads» درباره انواع تبدیل مراجعه کنید.

اگر از ردگیری تبدیل میان‌حسابی استفاده می‌کنید، ConversionActionService کنش‌های تبدیل زیر را برمی‌گرداند:

  • همه کنش‌های تبدیلی که حساب مدیر استفاده‌شده توسط حساب برای ردیابی تبدیل میان‌حسابی تعریف کرده است
  • همه کنش‌های تبدیل که مشتری برای آن‌ها آمار جمع‌آوری کرده است، ازجمله کنش‌های تعریف‌شده توسط سیستم و کنش‌های متعلق به مدیر، حتی اگر آن مدیر بعداً لغو پیوند کند
  • همه کنش‌هایی که مشتری در حساب خودش تعریف کرده است
  • تبدیل‌های Analytics ایجادشده در دارایی‌های Google Analytics پیوندشده. این شامل کنش‌های تبدیل Analytics است که به Google Ads وارد نشده‌اند، و وضعیت HIDDEN دارند.

نمونه کد

مثال کد زیر شما را در فرایند ایجاد کنش تبدیل جدید راهنمایی می‌کند. به‌طور خاص، کنش تبدیلی ایجاد می‌کند که type آن روی UPLOAD_CLICKS تنظیم شده است. همچنین category را روی DEFAULT تنظیم می‌کند.

تنظیمات پیش‌فرض زیر اعمال می‌شود:

جاوا

private void runExample(GoogleAdsClient googleAdsClient, long customerId) {

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

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

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

C#‎

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

پرل

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

فر کردن

می‌توانید این نمونه را در پوشه «بازاریابی مجدد» کتابخانه مشتری‌تان و در مجموعه نمونه‌های کد ببینید: نمونه کد «افزودن کنش تبدیل».

مرجع فیلد ConversionActionService.MutateConversionActions

از MutateConversionActions در ConversionActionService برای ایجاد، به‌روزرسانی، یا برداشتن کنش‌های تبدیل تحت مشتری تبدیل Google Ads استفاده کنید:

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

جدول زیر فیلدهای درخواست و عملیات سطح بالا را در MutateConversionActionsRequest فهرست می‌کند:

فیلد الزام شرح
customer_id الزامی شناسه ۱۰ رقمی (string) مشتری تبدیل Google Ads (google_ads_conversion_customer)، بدون خط تیره.
partial_failure اختیاری وقتی true (bool)، عملیات معتبر اجرا می‌شود و عملیات ناموفق خطاها را در partial_failure_error برمی‌گرداند. پیش‌فرض‌ها به false.
validate_only اختیاری وقتی true (bool)، درخواست را بدون اجرای جهش‌ها اعتبارسنجی می‌کند.
response_content_type اختیاری ResponseContentType کنترل می‌کند که آیا پاسخ فقط resource_name (RESOURCE_NAME_ONLY، پیش‌فرض) یا شیء جهش‌یافته ConversionAction (MUTABLE_RESOURCE) را برمی‌گرداند.
operations[].create الزامی (هنگام ایجاد) منبع ConversionAction برای ایجاد. هیچ resource_name پیش‌بینی نمی‌شود.
operations[].update الزامی (هنگام به‌روزرسانی) منبع ConversionAction برای به‌روزرسانی (باید شامل resource_name و update_mask هم‌نیا در ConversionActionOperation باشد).
operations[].update_mask الزامی (هنگام به‌روزرسانی) FieldMask (فهرست جداشده با کاما از مسیرهای فیلد ConversionAction اصلاح‌شده در snake_case؛ REST JSON updateMask snake_case یا camelCase را می‌پذیرد، درحالی‌که gRPC و کتابخانه‌های کارخواه به snake_case نیاز دارند) در ConversionActionOperation (همزاد update، نه تودرتو در ConversionAction).
operations[].remove الزامی (هنگام برداشتن) نام منبع (customers/{customer_id}/conversionActions/{action_id}) کنش تبدیل برای برداشتن.

هنگام پیکربندی ConversionAction در operations[].create یا operations[].update، الزامات فیلد و محدودیت‌های تغییرپذیری زیر را رعایت کنید (برای قوانین خطای خاص نوع، به اعتبارسنجی‌ها مراجعه کنید):

ConversionAction فیلد الزام و تغییرپذیری شرح
name الزامی (تغییرپذیر) نام نمایشی غیرتکراری (string) در حساب مشتری تبدیل.
type در create (IMMUTABLE) لازم است ConversionActionType (مثل WEBPAGE، UPLOAD_CLICKS، UPLOAD_CALLS، AD_CALL، یا WEBSITE_CALL).
category اختیاری (تغییرپذیر) ConversionActionCategory (مانند DEFAULT، PURCHASE، SUBMIT_LEAD_FORM، SIGNUP، یا PHONE_CALL_LEAD). پیش‌فرض DEFAULT است.
status اختیاری (تغییرپذیر) ConversionActionStatus (ENABLED، REMOVED، یا HIDDEN). پیش‌فرض ENABLED است.
primary_for_goal اختیاری (تغییرپذیر) ‫bool کنترل اینکه آیا کنش در هدف‌های تبدیل پویش و مشتری استاندارد پیشنهاد قیمت‌پذیر است یا نه (توجه: CustomConversionGoal منبع این تنظیم را نادیده می‌گیرد). پیش‌فرض‌ها به true.
counting_type اختیاری (تغییرپذیر) ConversionActionCountingType (MANY_PER_CLICK پیش‌فرض، یا ONE_PER_CLICK).
value_settings اختیاری (تغییرپذیر) ValueSettings (default_value، default_currency_code، always_use_default_value).
attribution_model_settings اختیاری (تغییرپذیر) AttributionModelSettings (attribution_model: GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN پیش‌فرض یا GOOGLE_ADS_LAST_CLICK).
click_through_lookback_window_days اختیاری (تغییرپذیر) int64 پنجره بازگشتی کلیک‌گذری برحسب روز (1 تا 90 برای اکثر انواع؛ 1 تا 60 برای انواع تماس).
view_through_lookback_window_days اختیاری (تغییرپذیر) int64 پنجره بازگشتی تبدیل مستقیم به روز (1 تا 30 برای اکثر انواع؛ برای انواع تماس تنظیم نشده است).
phone_call_duration_seconds فقط انواع تماس (قابل‌تغییر) حداقل مدت تماس int64 برحسب ثانیه (0 تا 10000).
app_id فقط انواع برنامه (پس‌از ایجاد تغییرناپذیر است) شناسه برنامه تلفن همراه (string)؛ فقط در create برای کنش‌های تبدیل برنامه قابل تنظیم است.
include_in_conversions_metric فقط خواندنی در جهش‌ها نمی‌توان مستقیماً اصلاح کرد؛ به‌جای آن primary_for_goal را پیکربندی کنید.
tag_snippets[] OUTPUT_ONLY تکه‌کدهای ردگیری وب‌سایت (TagSnippet) در WEBPAGE کنش تبدیل پر شده است.

ساختار درخواست و پاسخ REST

برای ایجاد یا به‌روزرسانی ConversionAction ازطریق REST، درخواست POST را به ConversionActionService.MutateConversionActions ارسال کنید. هنگام به‌روزرسانی کنش تبدیل موجود، updateMask را در شیء عملیات به‌عنوان همزاد 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
        }
      }
    }
  ]
}

پاسخ موفقیت‌آمیز MutateConversionActionResult ورودی را در results[] برمی‌گرداند:

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

بررسی تنظیمات کنش تبدیل و تکه‌کدهای برچسب با GAQL

علاوه‌بر پُرسمان پایه‌ای که در مراحل فعال کردن ردگیری تبدیل نشان داده شده است، می‌توانید بااستفاده از GoogleAdsService.SearchStream، منبع conversion_action را پُرسمان کنید تا primary_for_goal، وضعیت مدل اسنادی، پنجره‌های بازگشتی، تنظیمات مقدار، و 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'

اعتبارسنجی‌ها

‫Google Ads و Google Ads API از انواع مختلفی از کنش‌های تبدیل پشتیبانی می‌کنند، بنابراین برخی‌از قوانین درستی‌سنجی براساس type کنش متفاوت است.

رایج‌ترین خطا هنگام ایجاد کنش تبدیل DUPLICATE_NAME است. مطمئن شوید که برای هر کنش تبدیل از نام یکتایی استفاده می‌کنید.

نکاتی درباره تنظیم فیلدهای ConversionAction:

همه فیلدهای enum
تلاش برای تنظیم هر فیلد enum روی UNKNOWN منجر به RequestError.INVALID_ENUM_VALUE خطا می‌شود.
app_id
مشخصه app_id تغییرناپذیر است و فقط هنگام ایجاد تبدیل برنامه جدید می‌تواند تنظیم شود.
attribution_model_settings
تنظیم این مورد روی گزینه منسوخ‌شده منجر به خطای CANNOT_SET_RULE_BASED_ATTRIBUTION_MODELS می‌شود. Google Ads فقط از GOOGLE_ADS_LAST_CLICK و GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN پشتیبانی می‌کند.
click_through_lookback_window_days

تنظیم این مشخصه روی مقداری خارج از محدوده مجاز منجر به خطای RangeError.TOO_LOW یا RangeError.TOO_HIGH می‌شود.

این مشخصه باید بین ۱ تا ۶۰ روز برای کنش تبدیل AD_CALL یا WEBSITE_CALL باشد. برای اکثر کنش‌های تبدیل دیگر، محدوده مجاز ۱ تا ۹۰ روز است.

include_in_conversions_metric

تنظیم این مقدار در عملیات create یا update با خطای FieldError.IMMUTABLE_FIELD ناموفق می‌شود. به‌جای آن، primary_for_goal را همان‌طور که در راهنمای اهداف تبدیل توضیح داده شده است تنظیم کنید.

phone_call_duration_seconds

تلاش برای تنظیم این مشخصه در کنش تبدیلی که برای تماس‌ها نیست منجر به خطای FieldError.VALUE_MUST_BE_UNSET می‌شود.

type

مشخصه type تغییرناپذیر است و فقط هنگام ایجاد تبدیل جدید می‌تواند تنظیم شود.

به‌روزرسانی کنش تبدیل با type برابر با UNKNOWN منجر به خطای MutateError.MUTATE_NOT_ALLOWED می‌شود.

value_settings

value_settings برای کنش تبدیل WEBSITE_CALL یا AD_CALL باید always_use_default_value روی true تنظیم شده باشد. مشخص کردن مقدار false هنگام ایجاد یا به‌روزرسانی این مقدار منجر به خطای INVALID_VALUE می‌شود.

view_through_lookback_window_days

اگر این مشخصه را روی مقداری خارج از محدوده مجاز تنظیم کنید، خطای RangeError.TOO_LOW یا RangeError.TOO_HIGH دریافت خواهید کرد. برای اکثر کنش‌های تبدیل، محدوده مجاز ۱ تا ۳۰ روز است.

این مشخصه را نمی‌توانید در AD_CALL یا WEBSITE_CALL کنش تبدیل تنظیم کنید. مشخص کردن مقدار منجر به خطای VALUE_MUST_BE_UNSET می‌شود.