ניהול המרות

ב-Google Ads, המרה היא פעולת משתמש חשובה – כמו רכישת מוצר, שליחת טופס לידים, התקשרות לעסק או ביקור בחנות פיזית – שמתרחשת אחרי אינטראקציה עם מודעה. מעקב המרות מודד את האינטראקציות האלה של הלקוחות, כדי שתוכלו להעריך את הביצועים ברמת הקמפיין ולבצע אופטימיזציה של הבידינג האוטומטי.

באמצעות Google Ads API, אתם יכולים להגדיר באופן פרוגרמטי פעולות המרה, לייבא אירועי המרה אופליין, לשפר או לשנות המרות שתועדו, לקבץ פעולות ליעדי בידינג ויעדים שקשורים למחזור החיים של הלקוח ולעקוב אחרי אבחון ההעלאות.

בחירת תהליך ההמרה

אתם יכולים להיעזר בטבלה הבאה כדי לזהות את ConversionActionType, שירות ה-API ומדריך ההטמעה שמתאימים לתרחיש לדוגמה שלכם:

משימה סוג פעולת ההמרה שירות או משאב של API מדריך הטמעה
אימות הגדרת החשבון ויצירת פעולת המרה UPLOAD_CLICKS, WEBPAGE, UPLOAD_CALLS, AD_CALL, WEBSITE_CALL, GOOGLE_PLAY_DOWNLOAD, GOOGLE_PLAY_IN_APP_PURCHASE Customer (ConversionTrackingSetting), ConversionActionService תחילת העבודה וקטגוריות של פעולות המרה
ייבוא של המרות אופליין מקליקים או המרות משופרות לצורך שיוך ללידים UPLOAD_CLICKS ConversionUploadService.UploadClickConversions (או Data Manager API לשילובים חדשים) ייבוא של המרות אופליין מקליקים
שיפור המרות אונליין (תיעוד המרות משופר באתרים) WEBPAGE ConversionAdjustmentUploadService.UploadConversionAdjustments (ENHANCEMENT) ייבוא המרות מקליקים אונליין
ייבוא המרות מסוג שיחת טלפון UPLOAD_CALLS ConversionUploadService.UploadCallConversions ייבוא המרות מסוג שיחה
ייבוא עסקאות של מכירות בחנות הפיזית STORE_SALES, STORE_SALES_DIRECT_UPLOAD OfflineUserDataJobService (או Data Manager API) ייבוא המרות למכירה בחנות הפיזית
ביטול או שינוי של דיווח על המרות שתועדו ‫UPLOAD_CLICKS,‏ WEBPAGE,‏ SALESFORCE (הוצאה משימוש) ConversionAdjustmentUploadService.UploadConversionAdjustments (RETRACTION, RESTATEMENT) שינוי ערכי המרות אחרי הייבוא
צירוף מטא-נתונים של תגים מותאמים אישית להמרות ‫UPLOAD_CLICKS, UPLOAD_CALLS, WEBPAGE ConversionCustomVariableService משתני המרה מותאמים אישית
הגדרת יעדי בידינג, יעדים שקשורים למחזור החיים של הלקוח וכללים לקביעת ערך יעדים ברמת החשבון, הקמפיין ויעדים שקשורים למחזור החיים של הלקוח CustomerConversionGoalService, CampaignConversionGoalService, CustomConversionGoalService, ConversionGoalCampaignConfigService, GoalService, CampaignGoalConfigService, ConversionValueRuleService יעדי המרה, יעדים שקשורים למחזור החיים של הלקוח, וכללים לקביעת ערכי המרות
מעקב אחרי תקינות הייבוא וניתוח שגיאות ‫UPLOAD_CLICKS, WEBPAGE, UPLOAD_CALLS offline_conversion_upload_client_summary, offline_conversion_upload_conversion_action_summary מעקב אחרי אבחון של נתונים ממקורות אופליין
שליחת שאילתות לגבי מדדי המרות ופתרון שגיאות כל סוגי ההמרות GoogleAdsService.SearchStream (customer, campaign, conversion_action) אחזור נתונים סטטיסטיים של המרות ופתרון בעיות בייבוא המרות

מחזור החיים של ההמרה מקצה לקצה

שילוב מלא של ניהול המרות ב-Google Ads API כולל ארבעה שלבים:

  1. אימות הגדרת החשבון ויצירת פעולות המרה: שולחים שאילתה אל Customer.conversion_tracking_setting כדי לאשר את חשבון ההמרות בפועל (google_ads_conversion_customer), לוודא שמעקב ההמרות פעיל, להגדיר הסכמה מהמשתמש וליצור ConversionAction עם היעד ConversionActionType ו-ConversionActionCategory.
  2. ייבוא אירועי המרה: אפשר להעביר המרות אופליין מסוג קליק או שיחה באמצעות ConversionUploadService, כשהשדה partial_failure מוגדר לערך true, להוסיף המרות באתר באמצעות שינויים ב-ENHANCEMENT באמצעות ConversionAdjustmentUploadService, או להעלות מכירות בחנות הפיזית בכמות גדולה באמצעות OfflineUserDataJobService.
  3. לשנות ולבצע אופטימיזציה של המרות: אתם יכולים לבטל או לשנות את הדיווח על המרות שתועדו באמצעות ConversionAdjustmentUploadService, לצרף מטא-נתונים של ConversionCustomVariable, להחיל כללים לקביעת ערך המרה ולארגן פעולות ביעדי המרה וביעדים שקשורים למחזור החיים של הלקוח כדי לשלוט באופטימיזציה של הבידינג.
  4. מעקב אחרי אבחונים ודיווח על ביצועים: שולחים שאילתות אל offline_conversion_upload_client_summary ואל offline_conversion_upload_conversion_action_summary כדי לבדוק את סטטוס עיבוד ההעלאה והתראות על כשלים חלקיים. שולחים שאילתה למשאבים customer או campaign (אפשר לפלח לפי segments.conversion_action) כדי להשוות בין המדדים metrics.conversions ו-metrics.all_conversions, או שולחים שאילתה למשאב conversion_action כדי לבדוק את metrics.all_conversions ואת חותמות הזמן של ההמרה האחרונה.

מדריך למתחילים: אימות ההגדרה, יצירת פעולות ובדיקת תקינות

בדוגמאות הבאות מוצגות שלוש השאילתות והמוטציות הנפוצות ביותר שנדרשות כדי להפעיל ולנטר את מעקב ההמרות.

1. אימות ההגדרות של מעקב ההמרות באמצעות GAQL

לפני שיוצרים ConversionAction או מעלים אירועים, שולחים שאילתה למשאב customer באמצעות GoogleAdsService.SearchStream כדי לקבוע איזה חשבון מנהל את ההמרות (google_ads_conversion_customer), אם התנאים בנושא נתוני לקוחות אושרו ואם ההמרות המשופרות ברמת החשבון מופעלות (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

מחלצים את {customer_id} משם המשאב customers/{customer_id} שמוחזר ב-google_ads_conversion_customer, ושולחים את כל הבקשות הבאות של ConversionActionService ו-ConversionUploadService למספר הלקוח הזה. במאמר תחילת העבודה מוסבר איך מגדירים את ההיררכיה ואיך היא פועלת בין חשבונות.

2. יצירת פעולת המרה

משתמשים ב-ConversionActionService.MutateConversionActions כדי ליצור ConversionAction. בדוגמה הבאה נוצרת פעולת המרה מסוג UPLOAD_CLICKS עם הגדרות של ערך מותאם אישית וחלון מבט לאחור:

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

בקשת REST

כדי ליצור את אותו ConversionAction באמצעות REST, שולחים בקשת POST אל 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
        }
      }
    }
  ]
}

אחרי שפעולת ההמרה ENABLED, מייבאים אירועי המרה או שיפורים באמצעות תהליך העבודה של מקור ההמרות (ראו ייבוא אירועי המרה).

3. מעקב אחרי תקינות ההעלאה של המרות אופליין

אחרי שמעלים המרות מסוג קליקים, המרות מסוג שיחות או שינויים של המרות, שולחים שאילתה אל offline_conversion_upload_client_summary כדי לבדוק את סטטוס המשימה הכולל, את שיעורי ההצלחה וההמתנה ואת פירוט השגיאות בהעלאות האחרונות:

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

offline_conversion_upload_conversion_action_summary כדי לקבל אבחון ברמת פעולת ההמרה (ראו מעקב אחר אבחון נתונים ממקורות אופליין), ועיינו במאמר פתרון בעיות בייבוא המרות כדי לפתור קודי שגיאה ספציפיים.

מדריך לפי שלב במחזור החיים

כאן תוכלו לעיין במדריכים המלאים לניהול המרות, שמסודרים לפי שלבים במחזור החיים:

1. הגדרת החשבון ופעולות המרה

  • קטגוריות של פעולות המרה: בוחרים את מקור ההמרות הנכון – אתר (WEBPAGE), שיחת טלפון (UPLOAD_CALLS, AD_CALL, WEBSITE_CALL), אפליקציה לנייד (GOOGLE_PLAY_DOWNLOAD, GOOGLE_PLAY_IN_APP_PURCHASE, Firebase,‏ SKAdNetwork), Google Analytics 4‏ (GOOGLE_ANALYTICS_4_CUSTOM, GOOGLE_ANALYTICS_4_PURCHASE), אופליין (UPLOAD_CLICKS) או חנות פיזית (STORE_SALES) – וממפים אותו ל-ConversionActionType ולתהליך העבודה המתאים ב-API.
  • תחילת העבודה: מגדירים הסכמה מהמשתמש, מאמתים את ConversionTrackingSetting, מגדירים מעקב המרות ברמת חשבון ניהול ויוצרים פעולות המרה באמצעות ספריות לקוח או REST.

2. ייבוא אירועי המרה

3. התאמה ואופטימיזציה של המרות

4. מעקב, דיווח ופתרון בעיות