// The definition of a service provided by a merchant.messageService{optionfeatures.(pb.java).nest_in_file_class=YES;// An opaque string from an aggregator partner which uniquely identifies a// merchant.// (required)stringmerchant_id=1[features.field_presence=IMPLICIT,features.(pb.cpp).string_type=STRING];// An opaque string of ASCII characters from an aggregator partner which// uniquely identifies the service.// Must be equal to or shorter than 100 characters.// (required)stringservice_id=2[features.field_presence=IMPLICIT,features.(pb.cpp).string_type=STRING];// The name of the service, e.g. "Men's haircut". Possibly in several locales.// (required)Textlocalized_service_name=3;// The name of the service category, e.g. "Haircut", "Shave", "Color".// Possibly in several locales. The category will be used to group services// when presented to the consumer.// Note: For merchants without categories on your website, you can group all// services into one category and use a generic name such as "All Services"// or "General." Merchants who have categories you should try to replicate// those categories.// (required)Textlocalized_service_category=4;// The user-visible description of the service, possibly in several locales.// This field is not required for every services, but is strongly// recommended to be filled when available.// Important notes:// * The recommended maximum size is 2,000 characters.// (optional)Textlocalized_service_description=5;// The price of the service.// Note, if a service (or merchant) doesn't provide price up front, use// RangeInterpretation.INTERPRETATION_NOT_DISPLAYED as PriceInterpretation.// (required)ServicePriceservice_price=6;// An action link related to this service. Action link should deep link to the// 3P page with the preselected service.// Note: Only the first entry will be used. Other provided action links will// be ignored.// Optional, but highly recommended if service-level deep links are supported.// This enables service-level entrypoints on Google if provided.// Note: For merchants participating in Healthcare vertical should not provide// service-level deep link.// (optional)repeatedActionLinkaction_link=8;// Duration of the service.// Note, if a service (or merchant) doesn't provide service duration, use// RangeInterpretation.INTERPRETATION_NOT_DISPLAYED as DurationInterpretation.// (required)ServiceDurationservice_duration=9;// Ranking hint for this service.// (optional)ServiceRankingHintranking_hint=10;// Bookability info for the service, required for agentic bookings on Google.// (optional)ServiceBookabilityInfobookability_info=11;// Policies for this service, required for agentic bookings on Google.// (optional)ServicePolicyInfopolicy_info=12;}
Text 的定义
// A possibly-localized text payload. Some Text fields may contain marked-up// content.messageText{optionfeatures.(pb.java).nest_in_file_class=YES;// Text value in an unknown locale, which will be displayed if// `localized_value` for the user locale is empty or missing. The locale for// this value may depend on the partner or service provider, and it should not// be assumed to be any specific language.// (required)stringvalue=1;// Per-locale text values.// (optional)repeatedLocalizedStringlocalized_value=2;}
范围解读定义
// Describes how a range of values should be interpreted and displayed to the// user.enumRangeInterpretation{optionfeatures.(pb.cpp).enum_name_uses_string_view=false;optionfeatures.(pb.java).nest_in_file_class=YES;// When range represents an exact value (such that min value equals to max)// Will be interpreted as a specific value.//// Examples:// $20 for a yoga class; 50 min haircut durationINTERPRETATION_EXACT=1;// When only minimum of the range is known and displayed to consumers.// The maximum value will be decided based on other configurations// (e.g., price may go up if consumer selecting add-ons)//// Examples:// $30 for dog grooming, but additional consumer choices may increase the// price// 40 min massage, but there are also options for extending the time.INTERPRETATION_STARTS_AT=2;// When the range is variable and both minimum and maximum values are known// and displayed to consumers.//// Examples:// $30 - $60 for dog grooming, the exact price will depend on additional// consumer choices.// 1 - 3 hour hair color service.INTERPRETATION_RANGE=3;// When the range is variable and no min value is known. No information is// displayed to consumers ahead of time.//// Examples:// A consultation for a home serviceINTERPRETATION_NOT_DISPLAYED=4;}
服务价格定义
// The price of a service.messageServicePrice{optionfeatures.(pb.java).nest_in_file_class=YES;// Describes how a Price should be interpreted and displayed to the user.// (required)RangeInterpretationprice_interpretation=1;// The minimum price of the service. Must be set if price_interpretation is// set to EXACT, STARTS_AT, or RANGE.// price is known.// (optional)Pricemin_price=2;// The maximum price of the service. Must be set if price_interpretation is// set to RANGE.// (optional)Pricemax_price=3;}
Price 的定义
// The price of a service or a fee.messagePrice{optionfeatures.(pb.java).nest_in_file_class=YES;// The price in micro-units of the currency.// For example: 1.95 USD is 1950000 in micro-units.// If your price contains fractions of the smallest currency unit, then it// will be rounded using nearest even rounding (e.g. 2.5 cents rounded// to 2 cents, 3.5 cents rounded to 4 cents, 0.5 cents rounded to 0 cents,// 2.51 cents rounded to 3 cents).// (required)int64price_micros=1;// The currency of the price that is defined in ISO 4217.// (required)stringcurrency_code=2;// An optional and opaque string that identifies the pricing option that is// associated with the extended price.// (optional)stringpricing_option_tag=3;}
ActionLink 的定义
// An action URL for a service.messageActionLink{optionfeatures.(pb.java).nest_in_file_class=YES;// The entry point URL for this action link.// (required)stringurl=1;}
服务时长定义
messageServiceDuration{optionfeatures.(pb.java).nest_in_file_class=YES;// Describes how a service duration should be interpreted and displayed to// the user.// Note, if a service (or merchant) doesn't provide service duration, use// 'INTERPRETATION_NOT_DISPLAYED' as DurationInterpretation.// (required)RangeInterpretationduration_interpretation=1;// The minimum duration (in seconds) that the service may take. Must be set// if duration_interpretation is set to EXACT, STARTS_AT, or RANGE.// (required)int64min_duration_sec=2;// The maximum duration (in seconds) that the service may take. Must be set// if duration_interpretation is set to RANGE.// (optional)int64max_duration_sec=3;}
服务排名提示定义
// Ranking hints for a service.messageServiceRankingHint{optionfeatures.(pb.java).nest_in_file_class=YES;// Arbitrary partner or merchant assigned rank for this service.//// Services with a lower score will be displayed more prominently (e.g.// displayed higher in lists).//// Ranking hints affect both the ordering of services within a service// category, and the ordering of the categories themselves. The ranking hint// for a category is assumed to be the minimum ranking hint of any item in the// category. Note that other factors may also influence the final ranking,// such as price, user history, etc.//// The recommended approach is to define a total ordering on all the services,// by assigning each one a unique integer ranking hint and ensuring that// ranking hint values don’t overlap between categories. For example, if we// want the preferred ordering of categories and services to be:// Category 1: A, B, C// Category 2: D, E, F// Then the simplest ranking hint scheme to indicate this would be:// A=1, B=2, C=3, D=4, E=5, F=6.//// Must be non-negative if set.// (optional)floatscore=1;}
服务预订信息定义
// Bookability info for the service.messageServiceBookabilityInfo{optionfeatures.(pb.java).nest_in_file_class=YES;// Indicates whether the service can be booked online.// (optional)boolis_online_bookable=1;// Indicates whether payment is required when booking online.// (optional)boolpayment_required=2;// Indicates whether a credit card must be on file.// (optional)boolcard_on_file_required=3;// Indicates whether a One-Time Password (OTP), such as an email or SMS code,// is required when booking an appointment online.// (optional)boolotp_required=4;// Indicates whether a user must sign in to book an appointment online.// (optional)boolsign_in_required=5;}
服务政策信息定义
// Policy info for the service.messageServicePolicyInfo{optionfeatures.(pb.java).nest_in_file_class=YES;// Policies for this service, required for agentic bookings on Google.// (optional)repeatedServicePolicypolicies=1;}
服务政策定义
// A named policy for the service.// Displayed to the user when performing agentic bookings on Google.messageServicePolicy{optionfeatures.(pb.java).nest_in_file_class=YES;// A partner-defined policy identifier, not user-facing and possibly not// unique. The partner can use this to identify a specific policy content// or version. Treated as an opaque identifier by Google.// (optional)stringid=1;// A user-facing localized name for this policy.//// Standard, Title Case naming is strongly recommended to ensure a clean,// consistent, and recognizable user experience. Avoid informal abbreviations// or shorthand (e.g., do NOT use "T&C", "T&Cs", "ToS", or "Cancel").//// Recommended standard names for common policy types:// - "Terms & Conditions" (or "Terms and Conditions" / "Terms of Service")// - "Privacy Policy" (or "Privacy")// - "Cancellation Policy" (or "Refund Policy")// - "Health & Safety Policy"//// (required)Textname=2;// The content of the policy to be displayed or linked to the user.// (required)oneofcontent{// The textual content of the policy to be displayed to the user.Texttext_content=3;// The URL where the policy can be viewed.Texturl_content=4;}}
本地化字符串定义
// Instance of a string in one locale.messageLocalizedString{optionfeatures.(pb.java).nest_in_file_class=YES;// IETF BCP 47 language code, such as "en", "mas", "zh-Hant", "de-CH-1901".// See http://www.w3.org/International/articles/language-tags/.// (required)stringlocale=1;// Message in the locale above (UTF-8).// (required)stringvalue=2;}
服务 Feed 示例
服务 Feed
{"data":[{"merchant_id":"appointments-merchant-1","service_id":"service-1","localized_service_name":{"value":"Service Type 1","localized_value":[{"locale":"en","value":"Service Type 1"},{"locale":"es","value":"Servicio Tipo 1"}]},"localized_service_category":{"value":"Haircut","localized_value":[{"locale":"en","value":"Haircut"},{"locale":"es","value":"Cortes de pelo"}]},"localized_service_description":{"value":"Lorem ipsum dolor sit amet","localized_value":[{"locale":"en","value":"Lorem ipsum dolor sit amet"},{"locale":"es","value":"el cliente esta muy contento"}]},"service_price":{"price_interpretation":"INTERPRETATION_EXACT","min_price":{"price_micros":40000000,"currency_code":"USD"}},"action_link":[{"url":"https://www.rwgpartnerwebsite.com/appointment/service-1/in-person-1"}],"service_duration":{"duration_interpretation":"INTERPRETATION_EXACT","min_duration_sec":360},"ranking_hint":{"score":1},"bookability_info":{"is_online_bookable":true,"payment_required":false,"card_on_file_required":false,"otp_required":false,"sign_in_required":false},"policy_info":{"policies":[{"id":"service-policy-1","name":{"value":"Cancellation Policy","localized_value":[{"locale":"en","value":"Cancellation Policy"},{"locale":"es","value":"Política de cancelación"}]},"text_content":{"value":"Appointments must be canceled at least 24 hours in advance.","localized_value":[{"locale":"en","value":"Appointments must be canceled at least 24 hours in advance."},{"locale":"es","value":"Las citas deben cancelarse con al menos 24 horas de anticipación."}]}}]}}]}
[null,null,["最后更新时间 (UTC):2026-10-12。"],[],["Services are defined by unique identifiers (`merchant_id`, `service_id`), names, and categories, supporting multiple languages. Each service includes a description, price (with `min_price`, `max_price`, and interpretation), an optional action link for deep linking, and a duration (with similar interpretation). Services can have a ranking hint to influence display order. The service feed is provided in JSON format and includes `localized_service_name`, `localized_service_category` and `localized_service_description`.\n"]]