// Copyright 2021 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 // // http://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. syntax = "proto3"; package google.ads.googleads.v9.resources; import "google/ads/googleads/v9/common/criteria.proto"; import "google/ads/googleads/v9/common/extensions.proto"; import "google/ads/googleads/v9/enums/keyword_match_type.proto"; import "google/ads/googleads/v9/enums/recommendation_type.proto"; import "google/ads/googleads/v9/enums/target_cpa_opt_in_recommendation_goal.proto"; import "google/ads/googleads/v9/resources/ad.proto"; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/api/annotations.proto"; option csharp_namespace = "Google.Ads.GoogleAds.V9.Resources"; option go_package = "google.golang.org/genproto/googleapis/ads/googleads/v9/resources;resources"; option java_multiple_files = true; option java_outer_classname = "RecommendationProto"; option java_package = "com.google.ads.googleads.v9.resources"; option objc_class_prefix = "GAA"; option php_namespace = "Google\\Ads\\GoogleAds\\V9\\Resources"; option ruby_package = "Google::Ads::GoogleAds::V9::Resources"; // Proto file describing the Recommendation resource. // A recommendation. message Recommendation { option (google.api.resource) = { type: "googleads.googleapis.com/Recommendation" pattern: "customers/{customer_id}/recommendations/{recommendation_id}" }; // The impact of making the change as described in the recommendation. // Some types of recommendations may not have impact information. message RecommendationImpact { // Output only. Base metrics at the time the recommendation was generated. RecommendationMetrics base_metrics = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Estimated metrics if the recommendation is applied. RecommendationMetrics potential_metrics = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Weekly account performance metrics. For some recommendation types, these // are averaged over the past 90-day period and hence can be fractional. message RecommendationMetrics { // Output only. Number of ad impressions. optional double impressions = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Number of ad clicks. optional double clicks = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Cost (in micros) for advertising, in the local currency for the account. optional int64 cost_micros = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Number of conversions. optional double conversions = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Number of video views for a video ad campaign. optional double video_views = 10 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The budget recommendation for budget constrained campaigns. message CampaignBudgetRecommendation { // The impact estimates for a given budget amount. message CampaignBudgetRecommendationOption { // Output only. The budget amount for this option. optional int64 budget_amount_micros = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The impact estimate if budget is changed to amount specified in this // option. RecommendationImpact impact = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Output only. The current budget amount in micros. optional int64 current_budget_amount_micros = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The recommended budget amount in micros. optional int64 recommended_budget_amount_micros = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The budget amounts and associated impact estimates for some values of // possible budget amounts. repeated CampaignBudgetRecommendationOption budget_options = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The keyword recommendation. message KeywordRecommendation { // Output only. The recommended keyword. google.ads.googleads.v9.common.KeywordInfo keyword = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The recommended CPC (cost-per-click) bid. optional int64 recommended_cpc_bid_micros = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The Target ROAS opt-in recommendation. message TargetRoasOptInRecommendation { // Output only. The recommended target ROAS (revenue per unit of spend). // The value is between 0.01 and 1000.0, inclusive. optional double recommended_target_roas = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The minimum campaign budget, in local currency for the account, // required to achieve the target ROAS. // Amount is specified in micros, where one million is equivalent to one // currency unit. optional int64 required_campaign_budget_amount_micros = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The text ad recommendation. message TextAdRecommendation { // Output only. Recommended ad. Ad ad = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Creation date of the recommended ad. // YYYY-MM-DD format, e.g., 2018-04-17. optional string creation_date = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Date, if present, is the earliest when the recommendation will be auto // applied. // YYYY-MM-DD format, e.g., 2018-04-17. optional string auto_apply_date = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The Maximize Clicks opt-in recommendation. message MaximizeClicksOptInRecommendation { // Output only. The recommended new budget amount. // Only set if the current budget is too high. optional int64 recommended_budget_amount_micros = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The Target CPA opt-in recommendation. message TargetCpaOptInRecommendation { // The Target CPA opt-in option with impact estimate. message TargetCpaOptInRecommendationOption { // Output only. The goal achieved by this option. google.ads.googleads.v9.enums.TargetCpaOptInRecommendationGoalEnum.TargetCpaOptInRecommendationGoal goal = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Average CPA target. optional int64 target_cpa_micros = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The minimum campaign budget, in local currency for the account, // required to achieve the target CPA. // Amount is specified in micros, where one million is equivalent to one // currency unit. optional int64 required_campaign_budget_amount_micros = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The impact estimate if this option is selected. RecommendationImpact impact = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Output only. The available goals and corresponding options for Target CPA strategy. repeated TargetCpaOptInRecommendationOption options = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The recommended average CPA target. See required budget amount and impact // of using this recommendation in options list. optional int64 recommended_target_cpa_micros = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The Maximize Conversions Opt-In recommendation. message MaximizeConversionsOptInRecommendation { // Output only. The recommended new budget amount. optional int64 recommended_budget_amount_micros = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The Search Partners Opt-In recommendation. message SearchPartnersOptInRecommendation { } // The move unused budget recommendation. message MoveUnusedBudgetRecommendation { // Output only. The excess budget's resource_name. optional string excess_campaign_budget = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The recommendation for the constrained budget to increase. CampaignBudgetRecommendation budget_recommendation = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The Enhanced Cost-Per-Click Opt-In recommendation. message EnhancedCpcOptInRecommendation { } // The Optimize Ad Rotation recommendation. message OptimizeAdRotationRecommendation { } // The Callout extension recommendation. message CalloutExtensionRecommendation { // Output only. Callout extensions recommended to be added. repeated google.ads.googleads.v9.common.CalloutFeedItem recommended_extensions = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The Sitelink extension recommendation. message SitelinkExtensionRecommendation { // Output only. Sitelink extensions recommended to be added. repeated google.ads.googleads.v9.common.SitelinkFeedItem recommended_extensions = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The Call extension recommendation. message CallExtensionRecommendation { // Output only. Call extensions recommended to be added. repeated google.ads.googleads.v9.common.CallFeedItem recommended_extensions = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The keyword match type recommendation. message KeywordMatchTypeRecommendation { // Output only. The existing keyword where the match type should be more broad. google.ads.googleads.v9.common.KeywordInfo keyword = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The recommended new match type. google.ads.googleads.v9.enums.KeywordMatchTypeEnum.KeywordMatchType recommended_match_type = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The add responsive search ad recommendation. message ResponsiveSearchAdRecommendation { // Output only. Recommended ad. Ad ad = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Immutable. The resource name of the recommendation. // // `customers/{customer_id}/recommendations/{recommendation_id}` string resource_name = 1 [ (google.api.field_behavior) = IMMUTABLE, (google.api.resource_reference) = { type: "googleads.googleapis.com/Recommendation" } ]; // Output only. The type of recommendation. google.ads.googleads.v9.enums.RecommendationTypeEnum.RecommendationType type = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The impact on account performance as a result of applying the // recommendation. RecommendationImpact impact = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The budget targeted by this recommendation. This will be set only when // the recommendation affects a single campaign budget. // // This field will be set for the following recommendation types: // CAMPAIGN_BUDGET, FORECASTING_CAMPAIGN_BUDGET, MARGINAL_ROI_CAMPAIGN_BUDGET, // MOVE_UNUSED_BUDGET optional string campaign_budget = 24 [ (google.api.field_behavior) = OUTPUT_ONLY, (google.api.resource_reference) = { type: "googleads.googleapis.com/CampaignBudget" } ]; // Output only. The campaign targeted by this recommendation. This will be set only when // the recommendation affects a single campaign. // // This field will be set for the following recommendation types: // CALL_EXTENSION, CALLOUT_EXTENSION, ENHANCED_CPC_OPT_IN, KEYWORD, // KEYWORD_MATCH_TYPE, MAXIMIZE_CLICKS_OPT_IN, MAXIMIZE_CONVERSIONS_OPT_IN, // OPTIMIZE_AD_ROTATION, RESPONSIVE_SEARCH_AD, SEARCH_PARTNERS_OPT_IN, // SITELINK_EXTENSION, TARGET_CPA_OPT_IN, TARGET_ROAS_OPT_IN, TEXT_AD optional string campaign = 25 [ (google.api.field_behavior) = OUTPUT_ONLY, (google.api.resource_reference) = { type: "googleads.googleapis.com/Campaign" } ]; // Output only. The ad group targeted by this recommendation. This will be set only when // the recommendation affects a single ad group. // // This field will be set for the following recommendation types: // KEYWORD, OPTIMIZE_AD_ROTATION, RESPONSIVE_SEARCH_AD, TEXT_AD optional string ad_group = 26 [ (google.api.field_behavior) = OUTPUT_ONLY, (google.api.resource_reference) = { type: "googleads.googleapis.com/AdGroup" } ]; // Output only. Whether the recommendation is dismissed or not. optional bool dismissed = 27 [(google.api.field_behavior) = OUTPUT_ONLY]; // The details of recommendation. oneof recommendation { // Output only. The campaign budget recommendation. CampaignBudgetRecommendation campaign_budget_recommendation = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The forecasting campaign budget recommendation. CampaignBudgetRecommendation forecasting_campaign_budget_recommendation = 22 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The keyword recommendation. KeywordRecommendation keyword_recommendation = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Add expanded text ad recommendation. TextAdRecommendation text_ad_recommendation = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The TargetCPA opt-in recommendation. TargetCpaOptInRecommendation target_cpa_opt_in_recommendation = 10 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The MaximizeConversions Opt-In recommendation. MaximizeConversionsOptInRecommendation maximize_conversions_opt_in_recommendation = 11 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The Enhanced Cost-Per-Click Opt-In recommendation. EnhancedCpcOptInRecommendation enhanced_cpc_opt_in_recommendation = 12 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The Search Partners Opt-In recommendation. SearchPartnersOptInRecommendation search_partners_opt_in_recommendation = 14 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The MaximizeClicks Opt-In recommendation. MaximizeClicksOptInRecommendation maximize_clicks_opt_in_recommendation = 15 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The Optimize Ad Rotation recommendation. OptimizeAdRotationRecommendation optimize_ad_rotation_recommendation = 16 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The Callout extension recommendation. CalloutExtensionRecommendation callout_extension_recommendation = 17 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The Sitelink extension recommendation. SitelinkExtensionRecommendation sitelink_extension_recommendation = 18 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The Call extension recommendation. CallExtensionRecommendation call_extension_recommendation = 19 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The keyword match type recommendation. KeywordMatchTypeRecommendation keyword_match_type_recommendation = 20 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The move unused budget recommendation. MoveUnusedBudgetRecommendation move_unused_budget_recommendation = 21 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The Target ROAS opt-in recommendation. TargetRoasOptInRecommendation target_roas_opt_in_recommendation = 23 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The add responsive search ad recommendation. ResponsiveSearchAdRecommendation responsive_search_ad_recommendation = 28 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The marginal ROI campaign budget recommendation. CampaignBudgetRecommendation marginal_roi_campaign_budget_recommendation = 29 [(google.api.field_behavior) = OUTPUT_ONLY]; } }