How to specify booking flow behavior

Reserve with Google uses “verticals”, or groupings of similar merchants, to determine which user experience is rendered to the user.

Reserve with Google distinguishes between the following verticals:

APPOINTMENT (fitness, beauty, financial services)

Figure 1:Booking flow without staff specified
Figure 2:Booking flow with staff specified.

DINING

Figure 3:Booking flow with special request box

THINGS-TO-DO (Trips, Tours, Attractions)

Figure 4:Booking flow with ticketing

THINGS-TO-DO (Events) - TBD

Verticals can be set at two levels

  • Account-level: All merchants fit into a single vertical (for example, all merchants only offer dining reservations).
  • Merchant-level: Merchants span multiple verticals (for example, some merchants offer dining reservations, other merchants offer ticket purchases for a cooking class).

Account-level vertical setting

The default account-level vertical will have been set for you when your account was created, based on the sample of merchants that you provided before signing up for the program.

Merchant-level vertical setting

Please reach out to your Google contact to enable the capability of specifying a vertical for each merchant.

The main change introduced is setting a type at the Service level across the feeds, booking server, and real-time updates.

Services Feed

Set the type field in the Services feed.

 enum ServiceType {
    SERVICE_TYPE_UNSPECIFIED = 0;
    SERVICE_TYPE_DINING_RESERVATION = 1;
    SERVICE_TYPE_FOOD_ORDERING = 2;
    SERVICE_TYPE_EVENT_TICKET = 3;
    SERVICE_TYPE_TRIP_TOUR = 4;

    // Service that provides appointments or classes. Recommended for (1) health
    // and fitness, (2) spa and beauty, and (3) financial consults and
    // evaluations services. Please see the supported service types:
    // https://developers.google.com/maps-booking/guides/end-to-end-integration/overview
    SERVICE_TYPE_APPOINTMENT = 5;
  }

  // The predefined type of this service. (optional)
  ServiceType type = 15;

Services feed snippet

{
  "service": [
    {
      "merchant_id": "1001",
      "name": "Reservation",
      "service_id": "1000",
      "prepayment_type": "NOT_SUPPORTED",
      "type": "SERVICE_TYPE_DINING_RESERVATION"
    },
    {
      "merchant_id": "1002",
      "name": "Jane's Thai Cooking Class",
      "service_id": "1002",
      "description": "Chef Jane will guide you through how to use the freshest ingredients to make an easy chicken larb dish.",
      "ticket_type": [
        {
          "short_description": "Adult",
          "price": {
            "price_micros": 195000000,
            "currency_code": "USD"
          },
          "ticket_type_id": "1000"
        },
        {
          "short_description": "Child",
          "price": {
            "price_micros": 90000000,
            "currency_code": "USD"
          },
          "ticket_type_id": "1001"
        }
      ],
      "price": {
        "price_micros": 90000000,
        "currency_code": "USD"
      },
      "prepayment_type": "REQUIRED",
      "rules": {
        "min_advance_booking": 10800,
        "min_booking_buffer_before_end_time": null,
        "admission_policy": "TIME_STRICT"
      },
      "require_credit_card": "REQUIRE_CREDIT_CARD_ALWAYS",
      "type": "SERVICE_TYPE_EVENT_TICKET"
    }
  ]
}

Booking Server

If your inventory falls into either the APPOINTMENT or DINING flows, please ensure that you follow the standard implementation of the booking server.

If your inventory falls into the THINGS-TO-DO flows, please ensure that you follow the order based implementation of the booking server.

Real-time Updates

For the Inventory Update API - Services real-time updates , please include the type field in the request object whenever relevant.

Request Snippet:

Request:
PATCH
https://mapsbooking.googleapis.com/v1alpha/inventory/partners/{partnerId}/merchants/{merchantId}/services/{serviceId}?updateMask=description,type
{
  "service": {
    "name": "partners/9999999/merchants/10001/services/100001",
    "service_name": "Jane's Thai Cooking Class",
    "description": "Come enjoy the aromas of Thai Cooking with a renowned Chef.",
    "type": "SERVICE_TYPE_EVENT_TICKET"
  }
}