ב-Google Ads, המרה היא פעולת משתמש חשובה – כמו רכישת מוצר, שליחת טופס לידים, התקשרות לעסק או ביקור בחנות פיזית – שמתרחשת אחרי אינטראקציה עם מודעה. מעקב המרות מודד את האינטראקציות האלה של הלקוחות, כדי שתוכלו להעריך את הביצועים ברמת הקמפיין ולבצע אופטימיזציה של הבידינג האוטומטי.
באמצעות Google Ads API, אתם יכולים להגדיר באופן פרוגרמטי פעולות המרה, לייבא אירועי המרה אופליין, לשפר או לשנות המרות שתועדו, לקבץ פעולות ליעדי בידינג ויעדים שקשורים למחזור החיים של הלקוח ולעקוב אחרי אבחון ההעלאות.
בחירת תהליך ההמרה
אתם יכולים להיעזר בטבלה הבאה כדי לזהות את ConversionActionType, שירות ה-API ומדריך ההטמעה שמתאימים לתרחיש לדוגמה שלכם:
| משימה | סוג פעולת ההמרה | שירות או משאב של API | מדריך הטמעה |
|---|---|---|---|
| אימות הגדרת החשבון ויצירת פעולת המרה |
UPLOAD_CLICKS, WEBPAGE,
UPLOAD_CALLS, AD_CALL,
WEBSITE_CALL, GOOGLE_PLAY_,
GOOGLE_PLAY_
|
Customer
(ConversionTracking),
ConversionAction
|
תחילת העבודה וקטגוריות של פעולות המרה |
| ייבוא של המרות אופליין מקליקים או המרות משופרות לצורך שיוך ללידים | UPLOAD_CLICKS |
ConversionUploadService.
(או
Data Manager API
לשילובים חדשים)
|
ייבוא של המרות אופליין מקליקים |
| שיפור המרות אונליין (תיעוד המרות משופר באתרים) | WEBPAGE |
ConversionAdjustment
(ENHANCEMENT)
|
ייבוא המרות מקליקים אונליין |
| ייבוא המרות מסוג שיחת טלפון | UPLOAD_CALLS |
ConversionUploadService.
|
ייבוא המרות מסוג שיחה |
| ייבוא עסקאות של מכירות בחנות הפיזית |
STORE_SALES,
STORE_SALES_
|
OfflineUserData
(או
Data Manager API)
|
ייבוא המרות למכירה בחנות הפיזית |
| ביטול או שינוי של דיווח על המרות שתועדו |
UPLOAD_CLICKS, WEBPAGE, SALESFORCE (הוצאה משימוש)
|
ConversionAdjustment
(RETRACTION, RESTATEMENT)
|
שינוי ערכי המרות אחרי הייבוא |
| צירוף מטא-נתונים של תגים מותאמים אישית להמרות |
UPLOAD_CLICKS, UPLOAD_CALLS,
WEBPAGE
|
ConversionCustom
|
משתני המרה מותאמים אישית |
| הגדרת יעדי בידינג, יעדים שקשורים למחזור החיים של הלקוח וכללים לקביעת ערך | יעדים ברמת החשבון, הקמפיין ויעדים שקשורים למחזור החיים של הלקוח |
CustomerConversion,
CampaignConversion,
CustomConversion,
ConversionGoal,
GoalService,
CampaignGoal,
ConversionValue
|
יעדי המרה, יעדים שקשורים למחזור החיים של הלקוח, וכללים לקביעת ערכי המרות |
| מעקב אחרי תקינות הייבוא וניתוח שגיאות |
UPLOAD_CLICKS, WEBPAGE,
UPLOAD_CALLS
|
offline_conversion_upload_,
offline_conversion_upload_
|
מעקב אחרי אבחון של נתונים ממקורות אופליין |
| שליחת שאילתות לגבי מדדי המרות ופתרון שגיאות | כל סוגי ההמרות |
GoogleAdsService.
(customer, campaign,
conversion_action)
|
אחזור נתונים סטטיסטיים של המרות ופתרון בעיות בייבוא המרות |
מחזור החיים של ההמרה מקצה לקצה
שילוב מלא של ניהול המרות ב-Google Ads API כולל ארבעה שלבים:
- אימות הגדרת החשבון ויצירת פעולות המרה: שולחים שאילתה אל
Customer.conversion_tracking_settingכדי לאשר את חשבון ההמרות בפועל (google_ads_conversion_customer), לוודא שמעקב ההמרות פעיל, להגדיר הסכמה מהמשתמש וליצורConversionActionעם היעדConversionActionTypeו-ConversionActionCategory. - ייבוא אירועי המרה: אפשר להעביר המרות אופליין מסוג קליק או שיחה באמצעות
ConversionUploadService, כשהשדהpartial_failureמוגדר לערךtrue, להוסיף המרות באתר באמצעות שינויים ב-ENHANCEMENTבאמצעותConversionAdjustmentUploadService, או להעלות מכירות בחנות הפיזית בכמות גדולה באמצעותOfflineUserDataJobService. - לשנות ולבצע אופטימיזציה של המרות: אתם יכולים לבטל או לשנות את הדיווח על המרות שתועדו באמצעות
ConversionAdjustmentUploadService, לצרף מטא-נתונים שלConversionCustomVariable, להחיל כללים לקביעת ערך המרה ולארגן פעולות ביעדי המרה וביעדים שקשורים למחזור החיים של הלקוח כדי לשלוט באופטימיזציה של הבידינג. - מעקב אחרי אבחונים ודיווח על ביצועים: שולחים שאילתות אל
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. ייבוא אירועי המרה
- ייבוא של המרות אופליין מקליקים: מעלים המרות אופליין (
GCLID,GBRAID,WBRAID) והמרות משופרות לצורך שיוך ללידים (כתובת אימייל ומספר טלפון מגובבים מאינטראקציה ישירה) כדי למדוד עסקאות בעולם האמיתי. - ייבוא של המרות אונליין מסוג קליקים: הוספת נתוני משתמשים מאינטראקציה ישירה (First-Party) לתגי ההמרה באתר – כמו כתובת אימייל, שם, כתובת מגורים ומספר טלפון – באמצעות תיעוד המרות משופר באתרים (
ENHANCEMENTהתאמות). - ייבוא המרות מסוג שיחה: אפשר להעלות אירועי המרה מסוג שיחות טלפון שמתבצע אחריהן מעקב באמצעות מספרי Google לניתוח נתוני שיחות והודעות (GFN) או באמצעות מערכת משלכם למעקב המרות לשיחה.
- ייבוא המרות למכירה בחנות הפיזית: העלאה של נתוני עסקאות בחנות הפיזית בכמות גדולה באמצעות
OfflineUserDataJobService.
3. התאמה ואופטימיזציה של המרות
- שינוי המרות אחרי הייבוא: ביטול דיווח על הזמנות שבוטלו (
RETRACTION) או שינוי דיווח על ערכי המרות שהשתנו (RESTATEMENT) בפעולות המרה מסוגUPLOAD_CLICKS,WEBPAGEו-SALESFORCE(הוצאה משימוש). - ניהול כללים לקביעת ערכי המרות: התאמה דינמית של ערכי ההמרות בזמן המכרז על סמך קריטריונים של קהל, מכשיר, מיקום גיאוגרפי או מסלול נסיעה.
- משתני המרות מותאמים אישית: מגדירים תגי מפתח/ערך מותאמים אישית (
ConversionCustomVariable) ומצרפים אותם להמרות מסוג קליקים, שיחות ואתרים כדי לקבל דוחות מפולחים. - יעדי המרה: מקבצים פעולות המרה לפי השדות
category(ConversionActionCategory) ו-origin(ConversionOrigin), ומגדירים יעדים ברמת הלקוח, יעדים ברמת הקמפיין ויעדים מותאמים אישית ויעדים שקשורים למחזור החיים של הלקוח (צירוף לקוחות חדשים, שימור לקוחות ושימור לקוחות נאמנים). אפשר גם לאחזר וליישם המלצות לערכי המרות מצטברים של לקוחות חדשים באמצעותOPTIMIZE_FOR_NEW_CUSTOMERS.
4. מעקב, דיווח ופתרון בעיות
- מעקב אחרי אבחון של נתונים ממקורות אופליין: שולחים שאילתה לגבי אבחון של נתונים ממקורות אופליין ברמת החשבון (
offline_conversion_upload_client_summary) וברמת פעולת ההמרה (offline_conversion_upload_conversion_action_summary) כדי לעקוב אחרי שיעורי ההצלחה, האירועים בהמתנה וההתראות על העלאות. - אחזור נתונים סטטיסטיים של המרות: שליחת שאילתות לגבי מדדי ביצועים של המרות ב-GAQL ומיפוי עמודות בממשק המשתמש של Google Ads לשדות ב-Google Ads API.
- פתרון בעיות בייבוא המרות: אבחון ופתרון של קודי
ConversionUploadErrorו-ConversionAdjustmentUploadErrorנפוצים.